Неспособность заблокировать перебор ssh с помощью iptables


9

Я пытаюсь заблокировать (замедлить) атаку грубой силой на мой sshd-сервер. Я следую этому руководству http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/, которое в основном говорит, что мне нужно просто ввести 2 команды ниже.

sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j DROP

Мой порт sshd - 6622, поэтому я изменил записи с «22» на «6622» и ввел эти команды. Затем я попытался просто протестировать новые iptables. Я перешел на другой компьютер и несколько раз целенаправленно ввел неправильный пароль для входа. К сожалению, новые правила, похоже, не мешают мне пробовать столько, сколько я хочу. Ниже перечислены мои текущие правила. Что я делаю неправильно?

# iptables --list

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
           tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: SET name: DEFAULT side: source

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain LOGDROP (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning
DROP       all  --  anywhere             anywhere            

4
Я рекомендую fail2ban для обработки блокирующих IP-адресов, которые показывают попытки перебора. Это легко установить и настроить. Я знаю, что он не отвечает на ваш вопрос напрямую, но может спасти вас от нескольких дыр в гипсокартоне.
Banjer

1
Согласитесь с @Banjer - забудьте эту ссылку, установите fail2ban.
Шадур

Любой шанс настройки MaxStartupsможет помочь на стороне демона?
Петер

2
@peterph Только если вы хотите превратить попытку взлома грубой силы в отказ в обслуживании.
Шадур

Зачем выставлять ssh-сервер в Интернет, а затем пытаться минимизировать последствия? Либо на работе, либо дома, я захожу через ipsec VPN, ssh вообще не открыт для интернета.
Руи Ф. Рибейро,

Ответы:


5

Как отметил @banjer в своем комментарии, вы пытаетесь найти неправильное решение для вашей настоящей проблемы.

Что вам нужно сделать, это настроить fail2ban . Он использует iptables в фоновом режиме для автоматической блокировки попыток подключения от хостов, которые генерируют неудачные попытки доступа из различных источников. Он невероятно универсален и позволяет добавлять и изменять различные пороги, шаблоны для поиска и запреты методов; вам придется немного подправить ssh jail по умолчанию, чтобы учесть нестандартный порт, который вы используете, но это не должно быть сложно.


1

Я использую такие правила, чтобы замедлить ход событий:

iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] "
iptables -A DDoS -j DROP

В других местах я ограничиваю такие вещи:

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP

0

Вы читали справочную страницу?

man sshd_config:

 MaxAuthTries
         Specifies the maximum number of authentication attempts 
         permitted per connection.  Once the number of failures 
         reaches half this value, additional failures are logged. 
         The default is 6.
 MaxSessions
         Specifies the maximum number of open sessions permitted 
         per network connection.  The default is 10.
 MaxStartups
         Specifies the maximum number of concurrent unauthenticated
         connections to the SSH daemon.  Additional connections
         will be dropped until authentication succeeds or 
         the LoginGraceTime expires for a connection. The default is 10:30:100.

         Alternatively, random early drop can be enabled by specifying
         the three colon separated values “start:rate:full” (e.g.
         "10:30:60").  sshd(8) will refuse connection attempts with a
         probability of “rate/100” (30%) if there are currently “start”
         (10) unauthenticated connections.  The probability increases
         linearly and all connection attempts are refused if the 
         number of unauthenticated connections reaches “full” (60).

3
Не помогает Атаки с использованием SSH-брутфорса в настоящее время, как правило, используются распределенными бот-сетями, поэтому каждое соединение будет совершать только три или четыре попытки, но вы будете иметь сотни соединений с разных хостов.
Шадур

0

Я только что попробовал решение двух правил, и у меня была та же самая проблема, когда я проверил это. Затем отмечу, что опубликованные правила имеют -i eth0опцию! Я изменил его на хороший сетевой интерфейс, и он наконец начал работать.


0

Большинство учебников используют -Aдля добавления в конец набора правил. OP используется -Iдля вставки, но без индекса, поэтому правила оказались в неправильном порядке.

Ценный инструмент для отладки правил iptables - iptables -vLэто список правил со счетчиком того, сколько раз было применено каждое правило. Когда вы получаете неожиданный счет 0, это может помочь вам понять, что не так.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.