Не вдалося заблокувати грубу силу ssh за допомогою iptables


9

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

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-адрес, які демонструють грубі спроби. Встановити та налаштувати його просто. Я знаю, що він не відповідає безпосередньо на ваше запитання, але це може заощадити кілька отворів у гіпсокартоні.
Банджер

1
Погоджуйтесь з @Banjer - забудьте про те, що посилання на рейдід, налаштувати fail2ban.
Шадур

Будь-який шанс налаштування MaxStartupsможе допомогти з боку демона?
петерф

2
@peterph Тільки якщо ви хочете перетворити грубу силу на розрив у відмову в обслуговуванні.
Шадур

Навіщо виставляти ssh-сервер в Інтернет, а потім намагатися мінімізувати наслідки? Або на роботі, або вдома я заходжу через ipsec VPN, взагалі немає відкритого ssh для Інтернету.
Rui F Ribeiro

Відповіді:


5

Як зазначив @banjer у своєму коментарі, ви намагаєтеся невірно вирішити свою дійсну проблему.

Що вам потрібно зробити, це налаштувати fail2ban . Він використовує iptables у фоновому режимі для автоматичного блокування спроб з'єднання з хостами, які генерують невдалі спроби доступу з різних джерел. Це неймовірно універсально і дозволяє додавати та змінювати різні пороги, шаблони для пошуку та методи заборони; вам доведеться трохи змінити стандартну тюремну скриньку, щоб врахувати нестандартний порт, який ви використовуєте, але це не повинно бути важким.


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.