По умолчанию Fail2ban блокирует IP-адреса, которые попадают под условия бана, на время, заданное в файле jail.conf. По истечение данного времени IP-адрес разблокируется, и с него вновь могут начать поступать запросы.
Однако можно добиться того, чтобы блокируемый адрес заносился в «черный список», и всегда блокировался.
Для этого создадим файл «черного списка», куда впоследствии будут заносится IP-адреса:
touch /etc/fail2ban/ip.blacklist
Затем в файле /etc/fail2ban/action.d/iptables-multiport.conf обновим директивы actionban и actionstart:
1. Загружаем архив дистрибутива с официального сайта из раздела Binary Distributions
2. Распаковываем содержимое архив в любую директорию
3. Создаем bat-файл следующего содержания (он будет служить для запуска сервера):
@echo off
set JAVA_HOME=C:\Program Files\Java\jre7
set CATALINA_HOME=C:\Program Files\TomCat
cd C:\Program Files\TomCat\bin
startup
4. Создаем bat-файл следующего содержания (он будет служить для остановки сервера):
@echo off
set JAVA_HOME=C:\Program Files\Java\jre7
set CATALINA_HOME=C:\Program Files\TomCat
cd C:\Program Files\TomCat\bin
shutdown
5. Запускаем файл для запуска сервера. Проверяем, что по адресу http://localhost:8080/ открывается страница-заглушка.
Если есть необходимость запускать TomCat на другом порту, отличном от дефолтного (8080), то для этого нужно изменить порт в файле conf\server.xml в строке Connector port="8080" protocol="HTTP/1.1"
В сети нашел интересный инструмент для защиты SSH от взлома, который называется Fail2ban. Часто бывает, что кто-то настойчиво долбится по стандартному порту (у SSH — это 22 порт), перебирая пароли и пытаясь получить доступ к серверу. Конечно, можно перевесить стандартный порт на что-то экзотическое, к примеру, на 2341-й порт. Но, как показывает практика, и это не спасает от брутфорса, т.к. с помощью сканеров можно легко найти нужный порт для атаки. Без сомнения, защита SSH — одна из самых важных задач, т.к. если злоумышленник завладеет доступом к нему — то пиши пропало!
Кстати, как вариант, можно ограничить спиcок IP-адресов, которым разрешен доступ к SSH. Если администратором являетесь только вы, и у вас статичный IP — то это хороший вариант. Но часто бывает, что IP динамический, что зайти к себе на сервер через SSH нужно с соседа или с другой точки доступа и т.д.
И так, что же из себя представляет Fail2ban? В его задачи, по мимо защиты SSH, входит также и защита FTP, SMTP, Apache и др. Как работает? Демон Fail2ban находит постоянно повторяющиеся неудачные попытки с одного и того же IP-адреса или хоста, после чего дальнейшие попытки залогиниться с этого IP-адреса/хоста блокируются с помощью правила iptables.
Устанавливается пакет Fail2ban в ОС Debian очень легко, так как есть в стандартных репозиториях:
apt-get install fail2ban
По-умолчанию, Fail2ban настроен на защиту SSH, но можно применить правила и для других сервисов. Для этого необходимо произвести изменения в файле конфигруации:
/etc/fail2ban/jail.conf
В опции destemail меняем дефолтный e-mail на свой, если хотим получать на почту уведомления о попытке атаки на ваш сервер. По мимо SSH, как уже отмечалось выше, можно применить правила защиты и для других сервисов. Для этого достаточно найти соответствующую секцию с названием сервиса и отредактировать параметры исходя из собственных предпочтений. Ниже я привожу пояснения к доступным параметрам:
ignoreip — это разделенный пробелами список ip-адресов, которые не могут быть блокированы fail2ban. Сюда можно занести свою локальную машину или комьютер, с которого будут проводится эксперименты над системой.
bantime — время в секунда, на которое блокируется хост. По-умолчанию равно 600 секундам, т.е. 10 минутам.
maxretry — максимальное число ошибочных попыток доступа к сервису, прежде чем хост будет заблокирован fail2ban.
filter — имя соответствующего файла-фильтра в /etc/fail2ban/filter.d, без конечного .conf
action — имя соответствующего файла-реакции на срабатывание фильтра в /etc/fail2ban/action.d
logpath — файл логов, мониторинг которого осуществляет fail2ban, для проверки попыток атак.
enabled — правило может принимать значение true или false (включено или выключено).
После того, как все изменения в конфигурационный файл будут произведены, необходимо произвести перезапуск демона:
/etc/init.d/fail2ban restart
Если необходимо проанализировать логи, которые ведет Fail2ban, то можно выполнить следующее:
cat /var/log/fail2ban.log
Если кто-то уже заблокирован, то в логах вы увидите примерно следующее:
2011-01-25 12:00:39,531 fail2ban.actions: WARNING [ssh] Ban 81.9.5.200
Когда мы вводим в строку браузера имя сайта, куда хотим попасть, то имя преобразовывается в IP-адрес, по которому уже идет непосредственное обращение к серверу, на котором располагается запрашиваемый сайт. Преобразованием «имя -> IP-адрес» занимается DNS-сервер. Типов DNS-сервер существует много, есть локальные, перенаправляющие, регистрирующие и др. Но самыми главными являются корневые сервера DNS, которые содержат информацию о доменах верхнего уровня. Основные корневые серверы DNS обозначаются латинскими буквами от A до М. Данные серверы управляются различными организациями, действующими по согласованию с ICANN (Internet Corporation for Assigned Names and Numbers).
Фактически существует 13 корневых серверов DNS, т.к. в DNS-ответ может быть помещено всего 13 серверов. Однако, на самом деле, за этими 13 «виртуальными» серверами стоят куда большее число серверов, называемые «зеркалами».
На сайте root-servers.org приведена таблица, где можно посмотреть список из 13 записей от A до М с названием оператора, места расположения серверов и IP-адресов.
Стоит отметить, что если что-то случится с этими DNS-серверами, то можно будет смело говорить о полной жопе Интернету. Однако, навряд ли что-то может случится со всеми серверами сразу, если только не какой-нибудь апокалипсис снизайдет на Землю. Но тогда, я уверен, нам уже явно будет не до Интернета.