В связи с последними блокировками IP-адресов Роскомнадзором, встала необходимость завести свой собственный VPN сервер.
После успешного запуска собственного VPN сервера, я обратился к лог файлу и обнаружил, что мой сервер постоянно находился под атакой с определенных IP адресов.
Thu Apr 26 16:16:12 2018 TCP connection established with [AF_INET]100.71.136.146:49811
Thu Apr 26 16:16:13 2018 100.71.136.146:49811 TLS: Initial packet from [AF_INET]100.71.136.146:49811, sid=4225b3c8 162d2179
Thu Apr 26 16:16:13 2018 100.71.136.146:49811 Authenticate/Decrypt packet error: packet HMAC authentication failed
Thu Apr 26 16:16:13 2018 100.71.136.146:49811 TLS Error: incoming packet authentication failed from [AF_INET]100.71.136.146:49811
Thu Apr 26 16:16:13 2018 100.71.136.146:49811 Fatal TLS error (check_tls_errors_co), restarting
Thu Apr 26 16:16:13 2018 100.71.136.146:49811 SIGUSR1[soft,tls-error] received, client-instance restarting
Файл лога от OpenVPN засорялся ненужными записями и разростался в размерах. Я решил настроить автоматическую блокировку.
Как это реализовать? Да очень просто, при помощи утилиты Fail2Ban.
Установка Fail2Ban
У меня данная утилита уже установлена, т.к. я устанавливал админ панель VestaCP, если у вас не установлен Fail2ban, то ставим командой:
sudo apt install fail2ban
Настройка Fail2ban на защиту openVPN
И так открываем файл jail.local
sudo nano /etc/fail2ban/jail.local
добавим в конец файла следующий листинг:
[openvpn]
enabled = true
filter = openvpn
action = iptables-multiport[name=openvpn, port=1194, protocol=tcp]
logpath = /etc/openvpn/openvpn.log
maxretry = 5
findtime = 300
bantime = 3600
ignoreip = 10.5.5.0/24
port= и protocol= меняем на те, которые у вас прописаны в файле настройки OpenVPN
ignoreip − здесь можно прописать как подсеть, так и отдельный IP-адрес, который будет игнорироваться нашим Fail2Ban
logpath − здесь прописываем полный путь до лог-файла OpenVPN
если при рестарте вашего fail2Ban он выдает ошибку. Попробуйте перенести ваш лог OpenVPN в директорию /var/log/
Не забываем изменить директорию и файле настройки OpenVPN
Далее создаем файл openvpn.conf
sudo nano /etc/fail2ban/filter.d/openvpn.conf
добавим в него следующий листинг:
[Definition]
failregex = <HOST>:[0-9]{5} SIGUSR1[soft,tls-error] received, client-instance restarting
ignoreregex =
Теперь рестартуем наш сервис Fail2Ban
sudo service fail2ban restart
На этом все. Наш Fail2Ban настроен на защиту OpenVPN.