Поиск по сайту:

23 совета по усилению безопасности сервера CentOS. Часть 2


Продолжая предыдущее руководство «Как защитить и укрепить сервер CentOS», в этой статье мы обсудим другие советы по безопасности, которые будут представлены в контрольном списке ниже.

Требования

  1. 20 советов по усилению безопасности сервера CentOS – часть 1

21. Отключите бесполезные команды SUID и SGID.

Если биты setuid и setgid установлены в двоичных программах, эти команды могут запускать задачи с другими правами пользователя или группы, например с правами root, которые может выявить серьезные проблемы безопасности.

Часто атаки на переполнение буфера могут использовать такие двоичные файлы исполняемых файлов для запуска неавторизованного кода с правами привилегированного пользователя.

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Чтобы сбросить бит setuid, выполните следующую команду:

chmod u-s /path/to/binary_file

Чтобы сбросить бит setgid, выполните следующую команду:

chmod g-s /path/to/binary_file

22. Проверьте наличие файлов и каталогов, не принадлежащих никому.

Файлы или каталоги, не принадлежащие действительной учетной записи, должны быть удалены или назначены с разрешения пользователя и группы.

Введите приведенную ниже команду find, чтобы просмотреть файлы или каталоги без пользователя и группы.

find / -nouser -o -nogroup -exec ls -l {} \;

23. Список файлов, доступных для записи во всем мире

Хранение общедоступных для записи файлов в системе может быть опасным, поскольку любой может их изменить. Выполните приведенную ниже команду, чтобы отобразить файлы, доступные для записи слов, за исключением Симлинков, которые всегда доступны для записи всем пользователям.

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Создавайте надежные пароли

Создайте пароль длиной минимум восемь символов. Пароль должен содержать цифры, специальные символы и заглавные буквы. Используйте pwmake, чтобы сгенерировать 128-битный пароль из файла /dev/urandom.

pwmake 128

25. Примените политику надежных паролей.

Заставьте систему использовать надежные пароли, добавив следующую строку в файл /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Если добавить приведенную выше строку, введенный пароль не может содержать более 3 символов в монотонной последовательности, например abcd, и более 3 одинаковых последовательных символов, например 1111.

Чтобы заставить пользователей использовать пароль с минимальной длиной 8 символов, включая все классы символов, проверку надежности последовательностей символов и последовательных символов, добавьте следующие строки в файл /etc/security. /pwquality.conf.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Используйте срок действия пароля

Команда chage может использоваться для устаревания пароля пользователя. Чтобы установить срок действия пароля пользователя через 45 дней, используйте следующую команду:

chage -M 45 username

Чтобы отключить срок действия пароля, используйте команду:

chage -M -1 username

Принудительно истечь срок действия пароля (пользователь должен изменить пароль при следующем входе в систему), выполнив следующую команду:

chage -d 0 username

27. Блокировка учетных записей

Учетные записи пользователей можно заблокировать, выполнив команду passwd или usermod:

passwd -l username
usermod -L username

Чтобы разблокировать учетные записи, используйте параметр -u для команды passwd и параметр -U для usermod.

28. Запретить доступ к оболочке учетной записи

Чтобы запретить системной учетной записи (обычной учетной записи или учетной записи службы) получать доступ к оболочке bash, измените корневую оболочку на /usr/sbin/nologin или /bin/false в файл /etc/passwd, выполнив следующую команду:

usermod -s /bin/false username

Чтобы изменить оболочку при создании нового пользователя, введите следующую команду:

useradd -s /usr/sbin/nologin username

29. Заблокируйте консоль виртуального пользователя с помощью vlock.

vlock — это программа, используемая для блокировки одного и нескольких сеансов на консоли Linux. Установите программу и начните блокировать сеанс терминала, выполнив следующие команды:

yum install vlock
vlock

30. Используйте централизованную систему для управления учетными записями и аутентификации.

Использование централизованной системы аутентификации может значительно упростить управление и контроль учетных записей. Службы, которые могут предлагать этот тип управления учетными записями, — это IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS или Winbind.

Некоторые из этих служб по умолчанию имеют высокий уровень защиты с помощью криптографических протоколов и криптографии с симметричным ключом, например Kerberos.

31. Принудительное монтирование USB-носителей только для чтения

С помощью утилиты blockdev вы можете принудительно смонтировать все съемные носители как доступные только для чтения. Например, создайте новый файл конфигурации udev с именем 80-readonly-usb.rules в каталоге /etc/udev/rules.d/. со следующим содержанием:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Затем примените правило с помощью следующей команды:

udevadm control -reload

32. Отключение root-доступа через TTY

Чтобы запретить учетной записи root выполнять вход в систему через все консольные устройства (TTY), сотрите содержимое файла безопасности, введя следующую командную строку терминала от имени пользователя root.

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

Помните, что это правило не применяется к сеансам входа по SSH
Чтобы предотвратить вход в систему root через SSH, отредактируйте файл /etc/ssh/sshd_config и добавьте следующую строку:

PermitRootLogin no

33. Используйте списки ACL POSIX для расширения системных разрешений.

Списки контроля доступа могут определять права доступа не только для одного пользователя или группы, но и указывать права для программ, процессов, файлов и каталогов. Если вы установите ACL для каталога, его потомки автоматически унаследуют те же права.

Например,

setfacl -m u:user:rw file
getfacl file

34. Настройка SELinux в принудительном режиме

Расширение SELinux ядра Linux реализует политику обязательного контроля доступа (MAC), позволяющую пользователям определять политику безопасности, которая предоставляет детальные разрешения для всех пользователей, программ, процессов, файлов и устройств.

Решения ядра по управлению доступом основаны на всем контексте безопасности, а не на аутентифицированной личности пользователя.

Чтобы получить статус Selinux и применить политику, выполните следующие команды:

getenforce
setenforce 1
sestatus

35. Установите дополнительные утилиты SELinux.

Установите пакет policycoreutils-python, который предоставляет дополнительные утилиты Python для работы с SELinux: audit2allow, audit2why, chcat и управление семенной информацией.

Чтобы отобразить все логические значения вместе с кратким описанием, используйте следующую команду:

semanage boolean -l

Например, чтобы отобразить и установить значение httpd_enable_ftp_server, выполните следующую команду:

getsebool httpd_enable_ftp_server

Чтобы значение логического значения сохранялось при перезагрузке, укажите параметр -P для setsebool, как показано в следующем примере:

setsebool -P httpd_enable_ftp_server on

36. Используйте централизованный сервер журналов.

Настройте демон rsyslog для отправки конфиденциальных сообщений журнала утилит на централизованный сервер журналов. Также отслеживайте файлы журналов с помощью утилиты logwatch.

Отправка сообщений журнала на удаленный сервер гарантирует, что после взлома системы злоумышленники не смогут полностью скрыть свою активность, всегда оставляя следы в удаленных файлах журналов.

37. Включить учет процессов

Включите учет процессов, установив утилиту psacct, и используйте команду lastcomm для отображения информации о ранее выполненных командах, записанной в файле системного учета, и команду sa для обобщения информации о ранее выполненных командах, как записано. в файле системного учета.

38. Усиление безопасности /etc/sysctl.conf

Используйте следующие правила параметров ядра для защиты системы:

Отключение исходной маршрутизации

net.ipv4.conf.all.accept_source_route=0

Отключить переадресацию IPv4

ipv4.conf.all.forwarding=0

Отключить IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Отключите прием и отправку перенаправленных пакетов ICMP, если это специально не требуется.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

Отключить переадресацию по обратному пути

net.ipv4.conf.all.rp_filter=2

Игнорировать все эхо-запросы ICMP (установите значение 1, чтобы включить)

net.ipv4.icmp_echo_ignore_all = 0

39. Используйте службы VPN для доступа к вашим помещениям через незащищенные общедоступные сети.

Всегда используйте службы VPN для операторов связи для удаленного доступа к локальной сети через Интернет. Такие типы служб можно настроить с помощью бесплатного решения с открытым исходным кодом, такого как OpenVPN, или с помощью собственного решения, такого как Cisco VPN (установите утилиту командной строки vpnc, предоставляемую репозиториями Epel).

40. Выполните сканирование внешней системы.

Оцените безопасность вашей системы на наличие уязвимостей, сканируя систему из удаленных точек по локальной сети с помощью специальных инструментов, таких как:

  1. Nmap – сетевой сканер 29 Примеры команд Nmap
  2. Nessus – сканер безопасности
  3. OpenVAS – используется для сканирования уязвимостей и комплексного управления уязвимостями.
  4. Nikto – отличный сканер сценариев общего шлюзового интерфейса (CGI). Сканирование веб-уязвимостей в Linux.

41. Внутренняя защита системы

Используйте внутреннюю защиту системы от вирусов, руткитов, вредоносного ПО и, в качестве хорошей практики, установите системы обнаружения вторжений, способные обнаруживать несанкционированную активность (DDOS-атаки, сканирование портов), такие как:

  1. AIDE – расширенная среда обнаружения вторжений – http://aide.sourceforge.net/
  2. ClamAV – антивирусный сканер https://www.clamav.net
  3. Rkhunter – сканер руткитов
  4. Lynis – инструмент аудита и сканирования безопасности для Linux
  5. Tripwire – безопасность и целостность данных http://www.tripwire.com/
  6. Fail2Ban – предотвращение вторжений в сеть
  7. OSSEC – (HIDS) Хост-система обнаружения вторжений http://ossec.github.io/
  8. Mod_Security – защита от грубой силы или DDoS-атак.

42. Изменение переменных пользовательской среды

Добавьте формат даты и времени для хранения выполнения команд, введя следующую команду:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Принудительно записывать HISTFILE каждый раз при вводе команды (вместо выхода из системы):

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Ограничьте время ожидания сеанса входа в систему. Автоматически отключать оболочку, если в период простоя не выполняется никаких действий. Очень полезно автоматически отключать сеансы SSH.

echo ‘TMOUT=120’ >> .bashrc

Примените все правила, выполнив:

source .bashrc

43. Резервные данные

Используйте утилиты резервного копирования, такие как tar, cat, rsync, scp, снимки LVM и т. д., чтобы сохранить копию вашей системы, желательно удаленную, на случай сбоя системы.

Если система будет скомпрометирована, вы можете выполнить восстановление данных из предыдущих резервных копий.

Наконец, не забывайте, что независимо от того, сколько мер безопасности и контрмер вы примете для обеспечения безопасности вашей системы, вы никогда не будете в полной безопасности на 100%, пока ваша машина подключена к сети и включена.