Блок Fail2ban с IPtables не работает на Debian Lenny. [перемещенный порт ssh]

11

Я недавно решил сделать некоторые меры безопасности. Я видел свои журналы, и было несколько попыток на моем SSH-сервере. Сначала я убрал SSH-порт со стандартного 22. После этого я прочитал кое-что о Fail2ban , BlockHosts и DenyHosts .

Я посмотрел на первое: это просто настроить, все понятно; но когда я попытался «проверить его защиту», тесты провалились . Все вроде бы хорошо, но я все еще могу получить доступ к серверу.

Я также проверил IPtables: # iptables -I INPUT -j DROP- после этого мое соединение SSH было потеряно (так, что я хотел). Тогда # iptables -I INPUT -s 84.x.y.z -j DROP, который тоже работал.

Но какие правила сделал Fail2ban, это не работает: ( $ sudo iptables -L)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain fail2ban-apache (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

Загружены модули ядра: ( $ lsmod | grep ip)

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

Версии:

  • Debian Lenny 5.06, ядро ​​2.6.26-2-686
  • IPtables 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

Тест № 1 шаг за шагом:

  1. Настройте Fail2ban для низкого времени запрета. 60 секунд Затем перезагрузите.
  2. Попытка войти (с SSH), напрямую с неправильным passwd.
  3. В шестой раз введите правильный пароль (максимальное количество попыток здесь только 4). Я вошел в систему. Я также могу получить доступ к веб-странице, размещенной на этом сервере.
  4. iptables -Lпоказал мне, как упоминалось выше. Так что бан был активным, когда я подключился, командовал моим сервером.

Тест № 2 шаг за шагом:

  1. Стоп Fail2ban. Создайте atсценарий, чтобы удалить приведенное ниже правило запрета записи в будущем. ( iptables -D INPUT 1)
  2. Создать правило бана: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. Я не мог набрать что-нибудь еще, SSH-соединение не используется. Я не мог получить доступ к веб-странице. Итак, что я хотел от iptables.
  4. После atсценария я могу получить доступ к своему серверу.

Я не вижу решения, что я должен сделать, чтобы мой запрет IPtables (сделанный Fail2ban) работал?

antivirtel
источник
Вопрос отредактирован! Есть идеи?
антивиртель

Ответы:

8

Я нашел проблему, что я сделал, перед установкой fail2ban. Извините за ваше время.

По соображениям безопасности я перенес свой sshd с порта 22 на другой. Ссылка в iptablesотносится только к порту 22. Я думал, что это переменная, которая всегда ссылается на текущий порт sshd. Но НЕ .

Точное решение (если вы удалили своего демона из исходного порта):

  1. Откройте jail.local (или .conf).
  2. Найдите свой сервис (в скобках).
  3. Зафиксируйте portраздел для всех . Пример:port = all
  4. Добавьте или измените существующую banactionстроку после строки порта со значением iptables-allports . Пример: banaction = iptables-allports.
  5. Перезапустите демон. Пример: # service fail2ban restart.

Я не мог найти решение для изменения port sshдирективы или написать там номер. Если у вас есть решение не для всех портов, я его послушаю!

antivirtel
источник
1
Все, что вам нужно сделать, это указать номер порта вместо имени.
Джулиан Найт
Также обратите внимание, что ваше имя iptable должно содержать не более 32 символов для успешного добавления.
Адриан Лопес
2

У меня была та же проблема с отказом банить fail2ban после того, как я переместил свой ssh-сервер на нестандартный порт 12345 (скажем).

Чтобы заставить fail2ban создавать правильные правила после нескольких неудачных попыток аутентификации, я отредактировал /etc/fail2ban/jail.conf.

port = ssh 

в

port = 12345

Я предполагаю, что подобный подход будет работать для других служб на нестандартных портах.

Джон
источник
0

Настройки для fail2ban в /etc/fail2ban/jail.local. При установке по умолчанию я не уверен, что это там. Тогда что вы делаете копию , jail.confчтобы jail.local, таким образом у вас есть оба файла в /etc/fail2ban/. Отредактируйте jail.local, перейдите к строке, содержащей [ssh]и включите ее следующим образом:

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

После этого перезапустите fail2ban:

sudo /etc/init.d/fail2ban restart

Возможно, это будет работать сейчас, я настроил это так, и это работает.

enedene
источник
Я думаю, вы не поняли мой вопрос! Fail2ban делает то, что я хочу: смотреть логи и устанавливать запрет на атакующих. Но тот запрет, что должны делать IPtables, не работает. Я могу по-прежнему получить доступ к серверу с помощью вышеупомянутой настройки правила.
антивиртель
Извините, я спешил, поэтому я неправильно понял, и, поскольку у меня возникла та же проблема, которую я решил, добавив jail.local, я подумал, что это поможет. К сожалению, если у вас все настроено правильно, я не знаю, в чем проблема, но надеюсь, что кто-то еще.
энедене
0

Вы указали "Fail2ban 0.8.3-2sid1" как установленный. Это неподдерживаемая конфигурация. Пакеты sid не должны быть установлены в стабильной среде.

Я запускаю Debian 6 (Squeeze), который был обновлен с Lenny, на виртуальной машине специально как SSH-сервер для моего дома. Я также использую fail2ban. Я выполнил ваш тест № 1, и все заработало как надо. Мне не удалось войти на максимальное количество попыток, и затем мои запросы на вход в систему были отброшены на 60 секунд.

Мой список версий:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6
Джеймс Самнерс
источник
Нет, у меня есть правильный пакет. packages.debian.org/search?suite=lenny&keywords=fail2ban
антивиртель
В этом случае я рекомендую сделать dist-upgrade.
Джеймс Самнерс
окок, это не так просто, но мне удастся как-то это сделать ... - может быть, чистая переустановка
антивиртель
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade, Это довольно просто.
Джеймс Самнерс
да, но есть ли шанс не загружаться в следующий раз ... в заметках о выпуске написано, что новая система kenel + новая система udev ... - была ли она успешной на вашей машине?
антивиртель