Как я могу эффективно (так делайте это быстро, говоря об уровне брандмауэра и могу сделать это с множеством-многими IP-адресами) заблокировать IP-адрес на заданное время , например: месяц, если он каким-либо образом пытался связаться с TCP-портом 22, поэтому проверьте порт, подключитесь через ssh
и т. д.
Как я могу это сделать с помощью iptables
, OpenBSD pf
?
Основная идея заключается в том, что SSHD работает на порту, отличном от порта по умолчанию, и с помощью этого метода блокировки мы могли бы усилить нашу защиту без какого-либо дополнительного программного обеспечения.
Он должен блокировать IP с помощью DROP
, а не RFC REJECT
ОБНОВЛЕНИЕ: Я имею в виду, что он должен делать это автоматически. Я не хочу указывать каждый IP-адрес вручную.
Заблокировать входящий запрос с IP-адреса 1.2.3.4
Следующая команда отбросит любой пакет, приходящий с IP-адреса 1.2.3.4:
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP
Пример порта 22:
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 22 -s 1.2.3.4 -j DROP
Блокировать исходящий
/sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP
Пример порта 22:
/sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port 22 -s 1.2.3.4 -j DROP
Вы можете использовать fail2ban
или подобное программное обеспечение с настраиваемым правилом, которое блокирует любой IP-адрес, который пытается подключиться к порту 22.
fail2ban
управляет автоматической блокировкой хостов, устанавливающих нежелательные подключения (на основе всевозможных критериев, включая количество попыток подключения, сообщения об ошибках в определенных файлах журнала, попытки получить определенный URL-адрес или почти все, о чем вы можете подумать. и напишите сценарий для проверки), а также автоматического истечения срока действия таких блоков.
fail2ban
доступен в пакете для большинства / всех дистрибутивов Linux, а домашняя страница находится по адресу: http://www.fail2ban.org/