Сервер: Безопасность и защита на 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. Обучение пользователей

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

Сервер Безопасность fail2ban up: Просмотров: 2.2k
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.