Назад | Перейти на главную страницу

SSH / SSHD - Как установить максимальное количество попыток входа в систему?

Каков самый простой способ настроить максимальное количество попыток входа в систему в среде LAMP (sshd устанавливается через yum)? Есть пакет или простое правило брандмауэра?

Я не люблю использовать сторонние инструменты. Поэтому я использовал комбинацию конфигурации ssh и настроек брандмауэра. Следующее решение позволяет злоумышленнику выполнить ровно 3 входа в систему с ошибкой за 2 минуты, иначе он будет заблокирован на 120 секунд.

1) Добавьте следующую строку в /etc/ssh/sshd_config

MaxAuthTries 1

Это позволит выполнить только 1 попытку входа на одно соединение. Перезагрузите ssh-сервер.

2) Добавьте следующие правила брандмауэра

Создать новую цепочку

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Блокируйте каждый IP-адрес на 120 секунд, что позволяет установить более трех соединений в течение 120 секунд. В случае четвертой попытки подключения запрос делегируется SSHATTACK цепочка, которая отвечает за регистрацию возможной атаки ssh и, наконец, отбрасывает запрос.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) См. Записи журнала возможных атак ssh в /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

я использую Fail2ban; Я использовал Denyhosts в прошлом, и это тоже неплохо работает. Сейчас я предпочитаю Fail2ban, потому что он более настраиваемый и более способный обрабатывать мониторинг нескольких различных служб - например, вашего sshd и страницы входа в веб-приложение одновременно (при условии, что вы регистрируете сбои).

Другой метод, который вы могли бы рассмотреть, - это реализация правила LIMIT в iptables; К сожалению, я не могу вам с этим помочь, если вы не хотите установить Shorewall, а затем я бы просто указал вам на отличную документацию на этом сайте о том, как настроить правило LIMIT, чтобы, ну, ограничить возможность кого-то перебрать ваш сервер.

Нет специального пакета, связанного с SSH, чтобы настроить это. Однако вы можете установить CSF, который является ConfigServer & Firewall.

CSF

Я бы предложил внести два изменения конфигурации в файл: / etc / ssh / sshd_config

Ограничьте максимальное количество неаутентифицированных подключений, которые ssh-сервер будет обрабатывать одновременно. Чем он меньше, тем сложнее «детишкам» скриптов делать параллельные скоординированные попытки взлома с несколькими подключениями. отредактируйте sshd_config и измените MaxStartups со значения по умолчанию «10» на «3:50:10». Значения, разделенные двоеточием, сообщают ssh-серверу: «разрешить 3 пользователям пытаться войти в систему одновременно и случайным образом и все чаще отбрасывать попытки соединения от 3 до максимум 10». Примечание: это значение должно быть увеличено на серверах с большим количеством зарегистрированных пользователей ssh.

  • По умолчанию: MaxStartups 10
  • MaxStartups 3:50:10

Уменьшите максимальное время, разрешенное для успешного входа в систему перед отключением. По умолчанию 2 минуты - это слишком много времени для удержания попытки соединения без аутентификации (см. Выше); 30 секунд более чем достаточно времени для входа в систему:

  • По умолчанию: LoginGraceTime 2m
  • ВойтиGraceTime 30

Для этого я использую эти правила IPTables:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Это позволит передавать только 4 пакета TCP / SYN на порт 22 с IP-адреса за 5 минут. Если он делает больше попыток, дверь закрывается до истечения 5 минут.

есть опция, которую вы можете поместить в файл 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.