Menu

Защита сервера с помощью badIPs и Fail2ban под Debian

Как защитить сервер на badIPs.com и сообщить (заблокировать) IP-адреса с помощью Fail2ban на Debian

Этот обучающая статья о том, как использовать badips abuse tracker в сочетании с Fail2ban для защиты сервера или компьютера.  Приведённый способ опробован на системах Debian 8 Jessie и Debian 7 Wheezy.

В данной методике будут освещены вопросы:

  • Использование списка badIPs
  • определение уровня и категории защиты
  • создание кода
  •  определение IP адреса для badIPs с помощью Fail2ban
  • Fail2ban >= 0.8.12
  • Fail2ban < 0.8.12
  • статистика IP отчета( сообщения)

Что такое badIPs?

BadIps это перечень Ip, которые не работают в сочетании с fail2ban.

Эта обучающая статья состоит из 2 частей, первая связана с использованием перечня и вторая - с внедрением данных.

Использование перечня  badIPs (листа)

Определите ваш уровень и категорию защиты

Можно просто получить перечень Ip адресов, используя REST API.

Когда получите этот URL:   https://www.badips.com/get/categories ,

Будет видно всё разнообразие категорий, представленных на этом сайте.

- Следующий шаг, определите, какая категория, а, следовательно, значение, необходимо.

Ниже представлены некоторые расшифровки с badips, которые должны помочь( в данном примере выбрано значение 3):

-Если необходима полная статистика использования данных для некоторых экспериментов и т. д. , следует начать с  0.

-Если интересует брандмауэр  личного сервера или веб-сайта, начните с  2. Возможно комбинирование с собственными результатами, даже если они не выше значений 0 или 1. 

-Если нужна защита интернет-магазина или коммерческого высоконагруженного сервера, рекомендуется использовать значения 3 или 4. Возможно хорошее комбинирование с  собственными результатами (key/ sync).

- Параноики выбирают значение 5.

Итак, имея две переменные, давайте получим ссылку путем объединения переменных и воспользуемся ссылкой.

http://www.badips.com/get/list/{{SERVICE}}/{{LEVEL}}

Примечание:  Как в данном примере, можно использовать все  сервисы. Поменяйте название сервиса на “any”

 В таком случае.

Результирующий адрес будет:

https://www.badips.com/get/list/any/3

 

 Создание кода

Замечательно, когда всё описанное выше сделано, создаётся простой код.

- Вставляется перечень во временный файл.

-(только однажды придётся) создать цепь (сеть) в ip-таблицах.

-Заносятся все ссылки данных в цепь (сеть) ( старые записи)

- Соединяется каждый IP в новую цепь (сеть).

- Когда это сделано, блокируются все INPUT/OUTPUT/FORWARD , ведущие в цепь(сеть).

-Удаляется  временный файл.

Для этого создаётся код:

cd /home/<user>/

vi myBlacklist.sh

Вставляется следующее содержимое в этот файл.

#!/bin/sh

# based on this version http://www.timokorthals.de/?p=334

# adapted by Stéphane T.

 

_ipt=/sbin/iptables    # Location of iptables (might be correct)

_input=badips.db       # Name of database (will be downloaded with this name)

_pub_if=eth0           # Device which is connected to the internet (ex. $ifconfig for that)

_droplist=droplist     # Name of chain in iptables (Only change this if you have already a chain with this name)

_level=3               # Blog level: not so bad/false report (0) over confirmed bad (3) to quite aggressive (5) (see www.badips.com for that)

_service=any           # Logged service (see www.badips.com for that)

 

# Get the bad IPs

wget -qO- http://www.badips.com/get/list/${_service}/$_level > $_input || { echo "$0: Unable to download ip list."; exit 1; }

 

### Setup our black list ###

# First flush it

$_ipt --flush $_droplist

 

# Create a new chain

# Decomment the next line on the first run

# $_ipt -N $_droplist

 

# Filter out comments and blank lines

# store each ip in $ip

for ip in `cat $_input`

do

# Append everything to $_droplist

$_ipt -A $_droplist -i ${_pub_if} -s $ip -j LOG --log-prefix "Drop Bad IP List "

$_ipt -A $_droplist -i ${_pub_if} -s $ip -j DROP

done

 

# Finally, insert or append our black list

$_ipt -I INPUT -j $_droplist

$_ipt -I OUTPUT -j $_droplist

$_ipt -I FORWARD -j $_droplist

 

# Delete your temp file

rm $_input

exit 0

 Когда закончите, следует создать cronjob , который поможет обновить чёрный список.

Для этого, в данном примере, использовался crontab ,и  код запускался каждый день в 11:30 ( прежде, чем создавались резервные копии)

crontab –e

23 30 * * * /home/<user>/myBlacklist.sh #Block BAD IPS

Не забывайте chmod(изменять доступ к  коду) код:

chmod + x myBlacklist.sh

Теперь, когда всё сделано, сервер/ компьютер стал чуть защищеннее.

Можно также запускать код вручную, как показано ниже:

  cd /home/<user>/

./myBlacklist.sh 

Это займёт немного времени… поэтому не прерывайте код. Ведь самое главное находится в последних строках кода.

Сообщение IP адресов для badIPs с помощью Fail2ban

Во второй части статьи, показано, как сообщить bd Ip адреса bach на сайт badips.com с использованием Fail2ban.

Fail2ban >= 0.8.12

Сообщение делается с использованием Fail2ban. Всё зависит от имеющейся версии Fail2ban, поэтому используется первый или второй раздел этой части. Если версия fail2ban 0.8.12.

Если версия fail2ban 0.8.12 или позднее.

fail2ban-server –version

В каждой категории можно сообщить, просто добавить действие.

[ssh]

 enabled = true

 action = iptables-multiport

          badips[category=ssh]

 port = ssh

 filter = sshd

 logpath = /var/log/auth.log

 maxretry= 6

 

Как в данном примере,  категория SSH, посмотрите здесь (https://www.badips.com/get/categories) , чтобы найти правильную категорию. 

Fail2ban < 0.8.12

Если версия старше, чем 0.8.12,  необходимо создать действие(файл). Оно(он) может быть загружено(-н) отсюда:  https://www.badips.com/asset/fail2ban/badips.conf .

wget https://www.badips.com/asset/fail2ban/badips.conf -O  

/etc/fail2ban/action.d/badips.conf

С badips.conf , приведенным выше, можно как активировать категорию(см. выше) или же включить её глобально.

cd /etc/fail2ban/

vi jail.conf

[DEFAULT]

 

...

 

banaction = iptables-multiport

            badips

Теперь перезапустите fail2ban – это должно запустить сообщение с момента перезагрузки.

service fail2ban restart

 

Статистика вашего сообщения IP

Последний шаг – не обязательный… Можно создать ключ.

Это полезно, только если интересуют используемые данные.

Только скопируйте/ вставьте это и JSON-ответ появится в консоли.

wget https://www.badips.com/get/key -qO -

{

  "err":"",

  "suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.",

  "key":"5f72253b673eb49fc64dd34439531b5cca05327f"

}

 

Затем зайдите на сайт badips, вставьте  «key» и нажмите «statistics».

Вот вся статистика по категориям. 

 

Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top