PDF
Download PDF
Download page Защита серверов RAFT от атаки с перебором пароля.
Защита серверов RAFT от атаки с перебором пароля
В представленном примере описан алгоритм защиты серверов RAFT
от атаки с перебором пароля через аутентификацию Apache
c Kerberos
и SSH
с помощью службы FAIL2BAN
.
Настройка описана для трех серверов:
brest1
;brest2
;brest3
.
Для того, чтобы можно было заблокировать злоумышленников, пытающихся заблокировать доменную учетную запись для доступа к одному из серверов RAFT
ПК СВ "Брест", журналы syslog-ng
и Apache
должны быть настроены по следующей схеме:
FAIL2BAN
это служба, отслеживающая по журналам регистрации неверные или проблемные авторизации и блокирующая IP-адреса по заданным параметрам.
Для настройки защиты серверов 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