Linux-server protection utilities
Fail2Ban
Програма вміє боротися з різними атаками на всі популярні NIX-сервіси, такі як Apache, Nginx, ProFTPD, vsftpd, Exim, Postfix, named, і т.д. Але насамперед Fail2ban відомий завдяки готовності «з коробки» до захисту SSH-сервера від атак типу «bruteforce», тобто захисту SSH від перебору паролів.
Інсталювання
apt-get install fail2ban
У програми два файли конфігурації:
- /etc/fail2ban/fail2ban.conf — відповідає за налаштування запуску процеса Fail2ban.
- /etc/fail2ban/jail.conf — містить налаштування захисту конкретних сервисів, в тому числі sshd.
Не варто редагувати основний файл налаштувань jail.conf, для цього передбачені файли з розширенням *.local, які автоматично підключаються та мають найвищий пріоритет.
/etc/fail2ban/jail.local
[DEFAULT]
## Ignored IP adresses (newer banned)
ignoreip = 212.101.101.101
[ssh]
## Find in period:
findtime = 3600
# Quantity of unsuccessfull logins:
maxretry = 6
# 24 hours bantime
bantime = 86400
Create the file /etc/fail2ban/filter.d/proxmox.conf :
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =
You can test your configuration trying to GUI login with a wrong password or user, and then issue the command :
fail2ban-regex /var/log/daemon.log /etc/fail2ban/filter.d/proxmox.conf
Після налаштувань перезапускаємо сервіс fail2ban
service fail2ban restart
Перевірка логування fail2ban
tail /var/log/fail2ban.log
Перегляд статуса забанених Ip
fail2ban-client status sshd
Port Knocking
Інсталювання
sudo apt install knockd -y
Редагуємо файл /etc/knockd.conf
[options]
UseSyslog
[openSSH]
sequence = 9010,9080
seq_timeout = 5
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9080,9010
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Редагуємо файл /etc/default/knockd
# control if we start knockd at init or not
# 1 = start
# anything else = don't start
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1
# command line options
KNOCKD_OPTS="-i enp2s0"
Додамо правило в кінець! списку на блокування порту 22 SSH (-A - в кінець списку)
sudo iptables -A INPUT -p tcp --dport 22 -j REJECT
Перевірка і запуск служби port knocking
$ sudo systemctl start knockd
$ sudo systemctl enable knockd
Якщо виникає помилка при enable knockd: add the following to the end of /lib/systemd/system/knockd.service
[Install]
WantedBy=multi-user.target
Alias=knockd.service
Зєднання з сервером
$ knock -v 95.216.21.107 9010 9080
$ ssh root@95.216.21.107
###Довідка:
Вивести список IPtables
sudo iptables -L --line-numbers
Видалити вручну записи з IP-tables
iptables -D INPUT 2