Как временно запретить IP-адрес, после того, как “n” количество SSH входят в отказы?

Как я могу ограничить попытки входа в систему SSH в минуту на IP?

Я хочу отключить попытки входа в систему в течение 5 секунд после отказа. Действительно ли это возможно? Я не говорю о запрете пользователь после парсинга журналов как Fail2ban.

1
23.09.2019, 08:14
5 ответов

Вопрос 1

Это может быть сделано с модулем hashlimit.

iptables -A INPUT -p tcp --dport 22 -m hashlimit \
  --hashlimit-mode srcip --hashlimit-above 3/minute -j DROP

Вопрос 2

Netfilter не видит отказы входа в систему только соединения. Вам нужен инструмент (как Fail2ban), который активен на обоих уровнях. Вы могли создать цепочку с заблокированным дюйм/с и запустить скрипт после каждого отказа входа в систему, который сделает что-то как

iptables -A blocked_ips -s $evil_ip -j DROP
sleep 5
iptables -D blocked_ips -s $evil_ip -j DROP
6
27.01.2020, 23:10

Взгляд iptables

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

Это разрешит только 1 новое соединение на IP в 5 секунд.

5
27.01.2020, 23:10
  • 1
    Почему - hitcount 2 а не 1? –  Edgar 04.06.2013, 16:40
  • 2
    @Edgar, потому что необходимо отбросить второй новый пакет, не первый. --hitcount указывает на пакетное число для обработки больше, чем или равный данному значению. опция –  rush 04.06.2013, 17:03

Компонентом, отвечающим за аутентификацию в системе GNU/Linux, является PAM (Сменная Система аутентификации).

Можно настроить его путем добавления модулей. Один интересный модуль в Вашем случае мог быть pam_tally. Это используется, чтобы ограничить количество попыток входа в систему и запретить пользователей.

Если Вы добавляете эту строку в одном из /etc/pam.d/ конфигурационный файл:

auth     required       pam_tally.so deny=1 unlock_time=5 per_user

Вы предотвращаете пользователя, которому не удалось войти в систему для попытки снова в течение следующих пяти секунд. Так, Вы ограничиваете количество попыток подключения в минуту к 12.

Ссылки:

3
27.01.2020, 23:10
  • 1
    Но это находится на намного более высоком уровне, используя порядки величины больше загрузки ЦП, чем выбрасывание запросов на установление соединения в Netfilter. –  Hauke Laging 04.06.2013, 16:39
  • 2
    Это правда. Если бы цель только для защиты SSH, я предпочел бы netfilter опцию также. Но это никогда не плохая идея использовать два механизма защиты для той же цели, пока они не конфликтуют друг с другом. –  lgeorget 04.06.2013, 16:41
  • 3
    @lgeorget: Используйте pam_tally, и netfilter/iptables является лучшим решением моей проблемы? –  Edgar 04.06.2013, 16:57
  • 4
    Да, по-моему, это определенно было бы хорошей комбинацией для защиты системы. –  lgeorget 04.06.2013, 16:59

Отклоните спустя 5 секунд после 1 сбоя попытки входа в систему

pam_tally.so:

Этот модуль поддерживает количество предпринятых доступов, может сбросить, рассчитывают на успех, может запретить доступа, если слишком много попыток перестали работать. pam_tally прибывает в две части: pam_tally.so и pam_tally. Первый - модуль PAM и последний, автономная программа. pam_tally (дополнительно) приложение, которое может использоваться, чтобы опросить и управлять встречным файлом. Это может отобразить количества пользователей, установить отдельные количества или очистить все количества. Установка искусственно высоких количеств может быть полезна для заблокировать пользователей, не изменяя их пароли. Например, можно было бы найти полезным очищать все количества каждую полночь от задания крона. faillog (8) команда может привыкнуть вместо pam_tally к поддержать встречный файл.

Обычно, неудачные попытки получить доступ к корню не заставят корневую учетную запись блокироваться, предотвращать отказ в обслуживании: если Вашим пользователям не дают учетные записи с доступом через оболочку, и корень может только войти в систему через su или в консоли машины (не telnet/rsh, и т.д.), это безопасно

Редактирование шага 1# “/etc/pam.d/system-auth” и добавьте следующую строку ниже “pam_env.so

auth required pam_tally.so deny=1 lock_time=5
account required pam_tally.so reset

после конфигурирования выше попытки файла войти в систему с неправильным паролем любого пользователя вот демонстрационный вывод моего файла журнала

журналы:

tail -f /var/log/secure
Jun 04 15:59:13 station01 su: pam_tally(su-l:auth): user test (502) has time limit [167s left] since last failure
Jun 26 16:01:35 station01 sshd[13890]: pam_tally(sshd:auth): user test1 (503) has time limit [174s left] since last failure.
Jun 26 16:01:37 station01 sshd[13890]: Failed password for test1 from 192.168.0.13 port 54398 ssh2 
1
27.01.2020, 23:10

В Вас/etc/ssh/sshd_config файл там является директивой, чтобы я верил, поможет Вам.

MaxAuthTries 6

Вот MaxAuthTries defination из страниц справочника:

MaxAuthTries - Указывает, что максимальное количество попыток аутентификации разрешило для каждого подключения. После того как количество отказов достигает половины этого значения, дополнительные отказы зарегистрированы. Значение по умолчанию равняется 6.

0
27.01.2020, 23:10

Теги

Похожие вопросы