Сервер: Безопасность и защита на CentOS
Защита сервера CentOS включает в себя ряд классических приёмов, которые помогают обеспечить безопасность системы и данных:
1. Обновление системы
Первым шагом всегда является обновление всех пакетов и ядра системы до последних версий. Это помогает исправить известные уязвимости и обеспечивает наиболее безопасную среду для работы.
# Обновление списка пакетов yum check-update # Обновление всех пакетов yum update
2. Ограничение доступа по SSH
Доступ к серверу через SSH должен быть строго контролируемым. Рекомендуется использовать ключи вместо паролей для аутентификации, изменить стандартный порт SSH и запретить вход под root.
# Отредактирйте файл /etc/ssh/sshd_config и измените значение Port # Port 22 Port 28
Если вы изменили порт SSH на вашем сервере, вам нужно обновить правила firewall, чтобы разрешить входящие соединения на новый порт
# Удалите старое правило для порта SSH firewall-cmd --permanent --remove-service=ssh # Добавьте новое правило для нового порта SSH firewall-cmd --permanent --add-port=28/tcp # Перезагрузите firewall firewall-cmd --reload
Запретите вход под root или вместо использования паролей для аутентификации, используйте ключи SSH. Это намного безопаснее, поскольку ключи SSH сложнее взломать. Вы можете отключить вход по паролю, установив PasswordAuthentication no в файле /etc/ssh/sshd_config
# Создать нового пользователя и задать пароль adduser newuser passwd newuser # Отключить возможность входа на сервер через SSH суперпользователю root mcedit /etc/ssh/sshd_config # В этом файле найдите строку, которая начинается с #PermitRootLogin и измените ее на PermitRootLogin no. systemctl restart sshd
3. Fail2Ban
Fail2Ban - это инструмент, который помогает защитить ваш сервер от брутфорс-атак, блокируя IP-адреса, которые показывают злонамеренное поведение.
# Установить fail2ban yum install fail2ban
Fail2Ban использует конфигурационные файлы для определения того, как именно он должен работать. Основной конфигурационный файл - это /etc/fail2ban/jail.conf, но рекомендуется создать локальную копию этого файла, чтобы ваши настройки не перезаписывались при обновлении Fail2Ban. Вы можете создать локальную копию, выполнив следующую команду:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Теперь вы можете открыть файл jail.local в текстовом редакторе и настроить Fail2Ban в соответствии с вашими потребностями. Например, вы можете изменить параметры bantime, findtime и maxretry для определения продолжительности блокировки, временного окна для учета неудачных попыток входа и максимального количества неудачных попыток входа соответственно
# Это включит защиту SSH. [sshd] enabled = true
Пример конфигурации для Fail2Ban
[DEFAULT] # "ignoreip" позволяет указать IP-адреса, которые Fail2Ban никогда не будет блокировать. Можно указать несколько IP-адресов, разделив их пробелами. ignoreip = 127.0.0.1/8 # "bantime" - это количество секунд, на которое IP-адрес будет заблокирован Fail2Ban после "maxretry" неудачных попыток входа. bantime = 600 # "findtime" - это период (в секундах), в течение которого Fail2Ban подсчитывает неудачные попытки входа. findtime = 600 # "maxretry" - это количество неудачных попыток входа, после которых IP-адрес будет заблокирован. maxretry = 3 # "destemail" - это адрес электронной почты, на который Fail2Ban будет отправлять уведомления о блокировке. destemail = root@localhost # "action" определяет, что делать при блокировке IP-адреса. Значение "action_" просто блокирует IP-адрес. action = %(action_)s [sshd] # "enabled" определяет, будет ли "jail" (правило блокировки) включено или нет. enabled = true # "port" определяет порт или порты, которые Fail2Ban будет блокировать для этого "jail". port = ssh # "filter" определяет имя файла фильтра, который Fail2Ban будет использовать для этого "jail". filter = sshd # "logpath" определяет путь к файлу журнала, который Fail2Ban будет отслеживать для этого "jail". logpath = /var/log/auth.log # "maxretry" для этого "jail". Это переопределяет значение "maxretry" по умолчанию. maxretry = 3
Этот файл конфигурации настроен на блокировку любого IP-адреса, который неудачно пытается войти в систему через SSH более 3 раз в течение 10 минут, и блокирует этот IP-адрес на 10 минут.
После того как вы настроили Fail2Ban, вы можете запустить его и добавить в автозагрузку следующими командами:
systemctl start fail2ban systemctl enable fail2ban
4. Настройка Firewall
Firewall (брандмауэр) является первой линией обороны сервера. Он контролирует входящий и исходящий трафик, блокируя нежелательные подключения. В CentOS обычно используется firewalld или iptables.
# Установка и включение firewalld yum install firewalld # Включите и запустите службу firewalld systemctl enable firewalld systemctl start firewalld # Правила # Разрешить входящий трафик на порт SSH firewall-cmd --permanent --add-service=ssh # Разрешить входящий трафик на порт 80 для HTTP firewall-cmd --permanent --add-port=80/tcp # Применение изменений firewall-cmd --reload # Проверка настроек firewall-cmd --list-all # Просмотреть открытые порты firewall-cmd --list-ports
5. Настройка SELinux
SELinux (Security-Enhanced Linux) предоставляет механизм контроля доступа на уровне ядра, который помогает ограничивать действия процессов на сервере.
# Проверка статуса SELinux sestatus # Временное отключение SELinux - режим Permissive. # Будет записывать нарушения политики, но не будет блокировать их sudo setenforce 0 # Перевести SELinux в режим Enforcing # Будет блокировать нарушения политики sudo setenforce 1 # Постоянное отключение или изменение режима SELinux mcedit /etc/selinux/config # Найдите строку, которая начинается с SELINUX= и измените ее на одно из следующих значений: # чтобы полностью отключить SELinux SELINUX=disabled # чтобы SELinux записывал нарушения, но не блокировал их SELINUX=permissive # чтобы SELinux блокировал нарушения политики SELINUX=enforcing # Затем сохраните и закройте файл. Изменения вступят в силу после перезагрузки системы
6. Минимизация установленного ПО
На сервере должны быть установлены только необходимые пакеты. Это уменьшает количество потенциальных точек входа для злоумышленников и упрощает обслуживание и обновление системы.
7. Регулярный мониторинг и аудит
Использование инструментов мониторинга и аудита, таких как logwatch, auditd или rkhunter, помогает отслеживать необычную активность и предотвращать возможные атаки.
8. Резервное копирование
Регулярное резервное копирование данных является важной частью стратегии защиты. В случае сбоя системы или атаки, резервные копии помогут быстро восстановить работу.
9. Использование антивирусного ПО
Даже если Linux-системы менее подвержены вирусам, использование антивирусного ПО, такого как ClamAV, может помочь обнаружить и удалить вредоносное ПО.
10. Обучение пользователей
Пользователи, работающие с сервером, должны быть осведомлены о базовых принципах безопасности, таких как использование сложных паролей, неоткрытие подозрительных вложений и т.д.
Комментарии