Каков самый простой способ настроить максимальное количество попыток входа в систему в среде 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.
Я бы предложил внести два изменения конфигурации в файл: / etc / ssh / sshd_config
Ограничьте максимальное количество неаутентифицированных подключений, которые ssh-сервер будет обрабатывать одновременно. Чем он меньше, тем сложнее «детишкам» скриптов делать параллельные скоординированные попытки взлома с несколькими подключениями. отредактируйте sshd_config и измените MaxStartups со значения по умолчанию «10» на «3:50:10». Значения, разделенные двоеточием, сообщают ssh-серверу: «разрешить 3 пользователям пытаться войти в систему одновременно и случайным образом и все чаще отбрасывать попытки соединения от 3 до максимум 10». Примечание: это значение должно быть увеличено на серверах с большим количеством зарегистрированных пользователей ssh.
Уменьшите максимальное время, разрешенное для успешного входа в систему перед отключением. По умолчанию 2 минуты - это слишком много времени для удержания попытки соединения без аутентификации (см. Выше); 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.