Как я могу отложить ответ на повторную попытку от SSH, если используется неверный пароль или неудачная попытка входа в систему. Я хотел, чтобы задержка была на 2-3 секунды больше, чем обычно.
Я не смог найти ни одной опции в файле sshd_config для достижения того же.
Так может ли кто-нибудь сообщить мне, как мне это сделать.
Если вы заблокируете всех пользователей, даже заблокируйте root, вы можете добавить эти строки в /etc/pam.d/password-auth
или /etc/pam.d/sshd
, в разделе auth добавьте это, чтобы заблокировать всех пользователей на 5 минут:
auth required pam_tally2.so file=/var/log/tallylog deny=3 even_deny_root unlock_time=300
Теперь добавьте следующую строку в раздел учетной записи:
account required pam_tally2.so
Наконец перезапустите sshd, и он должен работать. После этого вы можете проверить логины на наличие ошибок с помощью команды: pam_tally2
Вы получите такой результат:
# pam_tally2
Login Failures Latest failure From
userxy 4 12/10/13 09:52:31 192.168.100.100
IPtables правила могут быть изменены для достижения того, чего вы пытаетесь достичь.
Предположение: ваш встроенный Linux имеет модуль netfilter, скомпилированный и при условии, что вы знаете концепцию брандмауэра и раньше использовали iptables. предполагается root-доступ. Если у вас есть возможности sudo, добавьте sudo перед командами.
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
Синтаксис не имеет желаемой точности, но эта строка указывает iptables полиции межсетевого экрана, что вы хотите добавить правило в существующую цепочку INPUT. Аргумент -p tcp указывает, что это правило будет применяться только к пакетам TCP. Большинство остальных аргументов полагаются на параметр -m, который означает совпадение и сообщает iptables, что правило применяется к пакетам, которые соответствуют определенным атрибутам, которые мы ищем. Здесь правило будет применяться к пакетам, которые сигнализируют о начале новых соединений, направленных на TCP-порт 22. Если пакет соответствует этим атрибутам, iptables отметит адрес удаленного хоста во временном списке.
iptables -N LOG_AND_DROP
Вышеупомянутое правило фактически выполнит действие, используя другую цепочку, и для того, чтобы добавить его, нам нужно сначала создать цепочку, что мы и сделали (например, LOG_AND_DROP)
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 20 --hitcount 4 --name DEFAULT --rsource -j LOG_AND_DROP
Это правило указывает iptables искать пакеты, которые соответствуют параметрам предыдущего правила и которые также исходят от хостов, уже добавленных в список наблюдения. Если iptables видит пакет, исходящий от такого хоста, он обновит временную метку «последнего посещения» для этого хоста. Аргументы --seconds 20 и --hitcount 4 используются для дальнейшего сужения хостов, которые мы хотим заблокировать - если хост пытается подключиться четыре или более раз в течение шестидесяти секунд, он соответствует этой части правила, и мы переходим (-j ) в цепочку LOG_AND_DROP.
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
С технической точки зрения, это правило не является обязательным для цепочки INPUT, поскольку по умолчанию для всех несовпадающих пакетов задана политика ACCEPT. Отказоустойчивый, если вы создали ограничительный брандмауэр, например по умолчанию отклонить.
Добавляется после получения отзыва от @singh. Я не понимал, что штат был вытеснен в пользу более технического модуля conntrack (отслеживание соединений)
Вместо, например:
-m state --state RELATED
-m conntrack --ctstate RELATED
Вы можете попробовать добавить
auth optional pam_faildelay.so delay=250000
в конфигурационный файл pam для sshd (в системах Debian обычно в /etc/pam.d/sshd
) Значение задержки 250000 составляет 0,25 секунды.