Fail2ban – блокировка IP с занесением в черный список

По умолчанию Fail2ban блокирует IP-адреса, которые попадают под условия бана, на время, заданное в файле jail.conf. По истечение данного времени IP-адрес разблокируется, и с него вновь могут начать поступать запросы.

Однако можно добиться того, чтобы блокируемый адрес заносился в «черный список», и всегда блокировался.

Для этого создадим файл «черного списка», куда впоследствии будут заносится IP-адреса:

touch /etc/fail2ban/ip.blacklist

Затем в файле /etc/fail2ban/action.d/iptables-multiport.conf обновим директивы actionban и actionstart:

actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
            echo <ip> >> /etc/fail2ban/ip.blacklist
actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
              cat /etc/fail2ban/ip.blacklist | while read IP; do iptables -I fail2ban-<name> 1 -s $IP -j DROP; done

Перезапустим сервис:

service fail2ban restart

Материал по теме: ссылка

[Windows] Установка сервера TomCat

Задача: установить сервер TomCat под ОС Windows

Решение:

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"

Запуск встроенного веб-сервера в PHP и Python

Запуск Python веб-сервера:

python -m SimpleHTTPServer [port]

По умолчанию сервер вешается на порт 8000, но его можно поменять, добавив необходимый номер порта после указания модуля «SimpleHTTPServer».

Запуск PHP веб-сервера (доступно в PHP 5.4):

php -S localhost:[port]

О том, как защитить SSH c помощью Fail2ban

В сети нашел интересный инструмент для защиты 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

2011-01-25 12:07:43,326 fail2ban.actions: WARNING [ssh] Unban 81.9.5.200

Можно также проанализировать файрволл, посмотрев, заблокированы ли какие-нибудь хосты:

iptables -L

Проверка конфигурации:

fail2ban-client -d

Рекомендую также прочитать руководство по использованию Fail2ban, которое доступно на официальном сайте.

Логирование в Fail2ban

Про корневые серверы DNS

Когда мы вводим в строку браузера имя сайта, куда хотим попасть, то имя преобразовывается в 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-серверами, то можно будет смело говорить о полной жопе Интернету. Однако, навряд ли что-то может случится со всеми серверами сразу, если только не какой-нибудь апокалипсис снизайдет на Землю. Но тогда, я уверен, нам уже явно будет не до Интернета.

Расположение корневых серверов DNS и их зеркала