Этот обучающая статья о том, как использовать 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».
Вот вся статистика по категориям.
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux