🐧 Советы по обеспечению безопасности сервера CentOS — часть 2 — Information Security Squad
🐧 Советы по обеспечению безопасности сервера CentOS — часть 2

Продолжая предыдущее руководство по защите сервера CentOS:

🐧 Советы по обеспечению безопасности сервера CentOS — часть 1

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

21. Отключите у ненужных команд SUID и SGID

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

Зачастую атаки переполнения буфера могут использовать такие исполняемые файлы для запуска неавторизованного кода с правами пользователя 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

Как применить политику надежных паролей пользователей в Ubuntu / Debian

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.
см. также:

🏳️🌈 Три способа заблокировать и разблокировать учетную запись пользователя в Linux

🐧 Как безопасно удалить учетную запись пользователя в Linux

Как заблокировать учетную запись пользователя на Centos 7

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-сервер, 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), удалите содержимое файла securetty, введя в командной строке следующую команду от пользователя root.

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

Помните, что это правило не относится ко входу в систему по SSH

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

PermitRootLogin no

🛡️ Как обезопасить и защитить сервер OpenSSH

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

Списки контроля доступа  (Access Control Lists — ACL ) могут определять права доступа более чем для одного пользователя или группы и могут определять права для программ, процессов, файлов и каталогов.

Если вы установите ACL для каталога, его дочерние каталоги будут автоматически наследовать те же права.

Например:

# setfacl -m u:user:rw file
# getfacl file

⛱️ Как управлять ACL в Linux

34. Настройте SELinux режиме Enforce

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

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

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

# getenforce
# setenforce 1
# sestatus

🔥 Реализация мандатного контроля доступа с помощью SELinux или AppArmor в Linux

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

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

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

# semanage boolean -l

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

# getsebool httpd_enable_ftp_server

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

# setsebool -P httpd_enable_ftp_server on

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


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

Также следите за файлами логов с помощью утилиты logwatch.

10 сборщиков логов с открытым исходным кодом для централизованного ведения журнала

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

📜 Настройка централизованного сервера логов с помощью Rsyslog в CentOS / RHEL 8

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

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

Как контролировать работу пользователя Linux с помощью psacct или acct Tools

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 Repositories).

🐧 Установка и настройка сервера OpenVPN на RHEL 8 / CentOS 8

Установка и настройка сервера OpenVPN в Fedora 29 / CentOS 7

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

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

  1. Nmap Как сканировать удаленный хост на открытые порты с помощью портативного сканера nmap
  2. NessusКак сканировать удаленный хост с помощью сканера уязвимостей Nessus
  3. OpenVAS👨‍🔧 Узнайте, как установить средство аудита безопасности с открытым исходным кодом OpenVAS на платформу Ubuntu Server.
  4. NiktoКак отсканировать Web-сервер на уязвимости сканером Nikto

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

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

  1. AIDE: Как установить и настроить IDS на хосте AIDE в RHEL 8 / CentOS 8 | Обнаружение вторжений и проверка целостности файловой системы Linux с помощью AIDE
  2. ClamAVАнтивирусы для Linux , о которых вы возможно не знали
  3. Rkhunterrkhunter проверка на наличие руткитов
  4. LynisКак установить Lynis (инструмент аудита Linux)
  5. TripwireКак использовать Tripwire, чтобы обнаружить проникновение на сервер Ubuntu часть I
  6. Fail2Ban🔒 Как установить Fail2Ban для защиты SSH на CentOS / RHEL 8
  7. OSSECЛучшие инструменты для обнаружения сетевого вторжений
  8. Mod_SecurityModSecurity + Nginx + Ubuntu 16.04

cм. также: Три инструмента для сканирования Linux-сервера на наличие вирусов, вредоносных программ и руткитов

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 и т. д., чтобы сохранить копию вашей системы, предпочтительно вне этой системы, в случае сбоя.

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

5 лучших инструментов для резервного копирования серверов для Linux


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

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *