Защищаем сервер на CentOS 7 с помощью firewalld и fail2ban

Введение

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

Хостинг провайдер известный – Hetzner Online AG, поэтому конечно же все ip-range всем ботам и их ботнет сетям давно известны, осталось только просканировать новые/старые хосты, на наличие открытых портов, и, в случае найденного – попробовать подобрать пароль.

В общем, суть вопроса понятна:

Как защитить себя от подобных атак?

Немного погуглив, пообщавшись со знакомыми админами, было принято решение воспользоваться функционалом fail2ban, в связке с firewalld

Итак, начнем:

# обновимся
yum -y update
# Если еще не установлен, устанавливаем firewalld
yum -y install firewalld
# Для начала установим следующие пакеты
yum -y install ipset systemd-python
# Теперь нам нужно установить сам fail2ban, но при этом укажем
# из какого именно репозитория мы его будем устанавливать
# уточню также, что вместе с ним установятся также и зависимые утилиты,
# такие как: fail2ban-firewalld, fail2ban-sendmail, fail2ban-server
yum --disablerepo=* --enablerepo=epel -y install fail2ban fail2ban-systemd
# запустим утилиту и активируем при запуске системы
systemctl start fail2ban
systemctl enable fail2ban

Как настроить firewalld читайте здесь

Отключаем SELinux

setenforce 0
sed -i "s/SELINUX=.*/SELINUX=disabled/" /etc/selinux/config

Проверить работоспособность сервиса fail2ban можно следующей командой:

systemctl status fail2ban

Конфигурация

Создадим файл sshd.local в директории /etc/fail2ban/jail.d

Откроем этот файл и вставим такие строки:

[DEFAULT]
findtime = 3600
# Вы указываете свой имейл, куда будут отправляться notifications
destemail = [email protected]
# Опять же, у вас здесь ваш имейл, который будет указан в качестве отправителя
sender = [email protected]
# Главный наш jail
[sshd]
enabled = true
# Как оказалось, следующая строка уже не понадобится
#action = firewallcmd-ipset
bantime = 3600
# port - только для того, если у вас порт SSH не 22, указываем свой
port = 1234

Итак, вроде бы всё, смотрим пишется ли что-то в логи fail2ban

tail /etc/log/fail2ban.log

За подробными инструкциями fail2ban обращайтесь сюда

Экспериментируйте – и доиграетесь 🙂

Всем удачи!

Leave a Reply