Download PDF
Download page Защита серверов RAFT от атаки с перебором пароля.
Защита серверов RAFT от атаки с перебором пароля
В представленном примере описан алгоритм защиты серверов RAFT
от атаки с перебором пароля через аутентификацию Apache
c Kerberos
и SSH
с помощью службы FAIL2BAN
. FAIL2BAN
это служба, отслеживающая по журналам регистрации неверные или проблемные авторизации и блокирующая IP-адреса по заданным параметрам. Для того, чтобы можно было заблокировать злоумышленников, пытающихся заблокировать доменную учетную запись для доступа к одному из серверов RAFT
ПК СВ "Брест", ротация журналов syslog-ng
и Apache
должна быть настроена по схеме каждый с каждым. Данная схема позволяет каждом сервере настроить приемник журналов syslog-ng
, собирающий данные журналов Apache
с каждого сервера. Таким образом, при некорректной попытке доступа на одном из серверов, злоумышленник будет заблокирован на всех.
Настройка описана для трех серверов:
brest1
;brest2
;brest3
.
Ротация журналов syslog-ng
и Apache
для данных серверов в примере настроена по следующей схеме:
где
- APACHE ERROR LOG — журналы
Apache
; - SYSLOG-NG LOG — журналы
syslog-ng
.
Пример настройки серверов RAFT
Для настройки защиты серверов RAFT от атаки с перебором необходимо:
- Скачать и установить службу
FAIL2BAN
:sudo apt install ./fail2ban_*_all.deb
- Запустить службу
FAIL2BAN
:sudo systemctl enable fail2ban
sudo systemctl start fail2ban - Запустить службу UFW:
sudo ufw enable
- Дать разрешение соединениям
ssh
:sudo ufw allow ssh
- Разрешить исходящие запросы по умолчанию:
sudo ufw default allow outgoing
- Разрешить входящие запросы по умолчанию:
sudo ufw default allow incoming
- Для настройки приемника журналов через
syslog-ng
из основного журнала ошибок аутентификацииApache
и сетиUDP
, необходимо добавить конфигурационный файл/etc/syslog-ng/conf.d/apache-error.conf
на серверыbrest1
,brest2
,brest3
:source apache_log { file("/var/log/apache2/error.log"); udp( ip(0.0.0.0) port(1999) ); }; destination apache_mirror_log { file("/var/log/apache_err.log"); file("/var/log/apache_error1.log"); }; log { source(apache_log); destination(apache_mirror_log); };
CODEvar/log/apache2/error.log
— файл журналаApache
;1999
— номер портаUDP
.
- Для каждого сервера
brest1, brest2, brest3
создать конфигурационный файл/etc/syslog-ng/conf.d/apache-send.conf
:- для
brest1
:source apache_log1 { file("/var/log/apache-error1.log"); }; filter fil { not host("<IP-адрес_3>") and not host("<IP-адрес_2>"); }; destination apache_mirror_log1 { udp("<IP-адрес_3>" port(1999) ); udp("<IP-адрес_2>" port(1999) ); }; log { source(apache_log1); filter(fil); destination(apache_mirror_log1); };
CODE- <IP-адрес_2> — IP-адрес сервера
brest2
; - <IP-адрес_3> — IP-адрес сервера
brest3
.
- <IP-адрес_2> — IP-адрес сервера
- для
brest2
:source apache_log1 { file("/var/log/apache-error1.log"); }; filter fil { not host("<IP-адрес_1>") and not host("<IP-адрес_3>"); }; destination apache_mirror_log1 { udp("<IP-адрес_1>" port(1999) ); udp("<IP-адрес_3>" port(1999) ); }; log { source(apache_log1); filter(fil); destination(apache_mirror_log1); };
CODE- <IP-адрес_1> — IP-адрес сервера
brest1
; - <IP-адрес_3> — IP-адрес сервера
brest3
.
- <IP-адрес_1> — IP-адрес сервера
- для
brest3
:source apache_log1 { file("/var/log/apache-error1.log"); }; filter fil { not host("<IP-адрес_1>") and not host("<IP-адрес_2>"); }; destination apache_mirror_log1 { udp("<IP-адрес_1>" port(1999) ); udp("<IP-адрес_2>" port(1999) ); }; log { source(apache_log1); filter(fil); destination(apache_mirror_log1); };
CODE- <IP-адрес_1> — IP-адрес сервера
brest1
; - <IP-адрес_2> — IP-адрес сервера
brest2
.
- <IP-адрес_1> — IP-адрес сервера
- для
- На всех серверах
RAFT
перезапуститьsyslog-ng
:sudo systemctl restart syslog-ng
- На каждом сервере
brest1, brest2, brest3
создать конфигурационный файлetc/fail2ban/filter.d/apache-auth1.conf
:[Definition] failregex = \[.*\] \[auth_kerb\:error\] \[pid [0-9]{1,}\] \[client <HOST>:[0-9]{2,}\] krb5_get_init_creds_password\(\) failed: Preauthentication failed\
CODE - Создать на всех серверах
brest1, brest2, brest3
конфигурационный файл/etc/fail2ban/jail.d/default.conf
с настройками блокирования IP-адресов, совершающих три неверные попытки аутентификации вApache
черезKerberos
илиSSH
:[DEFAULT] maxretry = 5 findtime = 480 bantime = 720 action = ufw ignoreip = 127.0.0.1/8 [apache] enabled = true port = http,https filter = apache-auth1 logpath = /var/log/apache_err.log maxretry = 3 bantime = 3600 findtime = 600 action = ufw [ssh] enabled = true port = ssh filter = sshd action = ufw logpath = /var/log/auth.log maxretry = 2 findtime = 600
CODEmaxretry
— количество действий, которые разрешено совершить до блокировки;findtime
— время в секундах, в течение которого учитывается параметрmaxretry
;bantime
— время, на которое будет блокироваться IP-адрес;action
— действие, которое будет выполняться, еслиFAIL2BAN
обнаружит активность, соответствующую критериям поиска;ignoreip
— игнорировать защиту, если запросы приходят с перечисленных адресов.
- Настроить ротацию журналов на созданные файлы
syslog-ng
на всех серверах в конфигурационных файлах/etc/logrotate.d/apache1
:/var/log/apache_err { daily rotate 3 size 10M compress delaycompress } cat /etc/logrotate.d/apache2 /var/log/apache_error1 { daily rotate 3 size 10M compress delaycompress }
CODE