Учебники (How-To & F.A.Q)
   122

Установка и настройка fail2ban в manjaro (archlinux).

Для защиты службы SSH от подбора паролей, я установил fail2ban по инструкции с wiki.archlinux.org/index.php/Fail2ban.
Но fail2ban не работал, не происходил бан по Ip адресу, не отправлялись почтовые сообщения о заблокированном адресе. Тогда пришлось разбираться, и в результате так и появилась эта подробная инструкция для начинающих и не только, как поставить и настроить fail2ban.

1. syslog-ng
Устанавливаем syslog-ng
pacman -S syslog-ng
systemctl enable syslog-ng
systemctl restart syslog-ng
Проверка [ -s /var/log/auth.log ] || echo «syslog-ng service does not work»
Если нет сообщения, то syslog-ng работает.
2.iptable
2.iptables v4 (Если Вы не используете ipv6)
iptables-save > /etc/iptables/iptables.rules
cat /etc/iptables/iptables.rules
# Generated by iptables-save v1.6.1 on Thu Jun 29 14:20:26 2017
*filter
:INPUT ACCEPT [70:11315]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [11:1150]
COMMIT
# Completed on Thu Jun 29 14:20:26 2017

systemctl enable iptables.service
systemctl restart iptables.service

Посмотреть правила iptables -L -v -n
3. sshd
Если Вы не используете ipv6
sed -i "/AddressFamily any/a AddressFamily inet' /etc/ssh/sshd_config

systemctl enable sshd.service
systemctl restart sshd.service

netstat -tunlp | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1505/ssh
4.fail2ban

Устанавливаем fail2ban
pacman -S fail2ban

systemctl enable fail2ban.service
systemctl restart fail2ban.service

cp /etc/fail2ban/paths-fedora.conf /etc/fail2ban/paths-archlinux.conf

touch /etc/fail2ban/jail.local
echo "[INCLUDES]
before = paths-archlinux.conf" >> /etc/fail2ban/jail.local

touch /etc/fail2ban/jail.d/jail.conf

Если Вы используете iptables и не используете ip6tables

echo "[DEFAULT]
bantime = 86400
findtime = 432000
ignoreip = 127.0.0.1/8

[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
backend = systemd
maxretry = 3
logpath = %(sshd_log)s" >> /etc/fail2ban/jail.d/jail.conf

При такой конфигурации отравка почты происходить не будет.

Если необходимо отправлять почту, то надо установить и настроить пакет ssmtp
pacman -S ssmtp

Например
cat /etc/ssmtp/revaliases
# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:ivans@yandex.ru:smtp.yandex.ru:465

cat /etc/ssmtp/ssmtp.conf

hostname=localhost.localdomain
root=ivans@yandex.ru
mailhub=smtp.yandex.ru:465
UseTLS=YES
AuthUser=ivans@yandex.ru
AuthPass=lehfr
FromLineOverride=NO

Проверка ssmtp
echo test | mail -s «ssmtp work» ivans@yandex.ru

После настройки ssmtp можно добавить строку в /etc/fail2ban/jail.d/jail.conf

action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=ivans@yandex.ru, sender=root@localhost]

После настройке почты, сообщения будут приходить при бане ip адреса или при перезагрузке службы fail2ban.

systemctl restart fail2ban.service

systemctl status fail2ban.service

systemctl status fail2ban.service
● fail2ban.service — Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running)

Проверяем наличие fail2ban в iptables

iptables -L -v -n

Chain INPUT (policy ACCEPT 17 packets, 1300 bytes)
pkts bytes target prot opt in out source destination
0 0 f2b-SSH tcp — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 7 packets, 493 bytes)
pkts bytes target prot opt in out source destination

Chain f2b-SSH (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all — * * 0.0.0.0/0 0.0.0.0/0

Если Вы используете shorewall, замените
action = iptables[name=SSH, port=ssh, protocol=tcp]
action = shorewall[name=SSH, port=ssh, protocol=tcp]

Я не пробовал метод с shorewall, поэтому не могу гарантировать его работу.

Посмотреть статус fail2ban-client

fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
Для разблоктровки ip используйте команду
fail2ban-client set sshd unbanip 192.168.0.190

Проверте состояние fail2ban-client

fail2ban-client -vv -d 2>&1 | grep sshd | grep -Ev "'addfailregex'|'addignoreip'|'action'"
INFO Loading configs for filter.d/sshd under /etc/fail2ban
DEBUG Reading configs for filter.d/sshd under /etc/fail2ban
DEBUG Reading config files: /etc/fail2ban/filter.d/sshd.conf
INFO Loading files: ['/etc/fail2ban/filter.d/sshd.conf']
INFO Loading files: ['/etc/fail2ban/filter.d/common.conf', '/etc/fail2ban/filter.d/sshd.conf']
['add', 'sshd', 'systemd']
['set', 'sshd', 'logencoding', 'auto']
['set', 'sshd', 'maxretry', 3]
['set', 'sshd', 'findtime', 432000]
['set', 'sshd', 'bantime', 86400]
['set', 'sshd', 'usedns', 'warn']
['set', 'sshd', 'ignorecommand', '']
['set', 'sshd', 'maxlines', '10']
['set', 'sshd', 'addjournalmatch', '_SYSTEMD_UNIT=sshd.service', '+', '_COMM=sshd']
['set', 'sshd', 'addaction', 'iptables']
['start', 'sshd']
Для правильной регистрации паролей, измените уровень лога в /etc/ssh/sshd_config

sed -i '/LogLevel INFO/a LogLevel VERBOSE' /etc/ssh/sshd_config и перезапустите sshd сервис

systemctl restart sshd.service

Рекомендуется не использовать в SSH стандартный порт 22, а заменить его на любой другой. Используемый Вами порт SSH также нужно прописать в /etc/fail2ban/jail.d/jail.conf.

Если остались вопросы — спрашивайте.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.