В лог-файлах почти любого публично доступного FTP-сервера в Интернет сисадмин почти всегда видит попытки множественных безуспешных попыток авторизации. Например:
Thu Sep 3 04:39:51 2009 [Admin] FTP response: Client "221.232.131.51", "530 Permission denied."
Thu Sep 3 04:39:53 2009 CONNECT: Client "221.232.131.51"
Thu Sep 3 04:39:53 2009 FTP response: Client "221.232.131.51", "220 Welcome to our FTP-server."
Thu Sep 3 04:39:53 2009 FTP command: Client "221.232.131.51", "USER Admin"
Thu Sep 3 04:39:54 2009 [Admin] FTP response: Client "221.232.131.51", "530 Permission denied."
Thu Sep 3 04:39:55 2009 FTP command: Client "221.232.131.51", "USER Admin"
Thu Sep 3 04:39:56 2009 [Admin] FTP response: Client "221.232.131.51", "530 Permission denied."
Thu Sep 3 04:39:57 2009 CONNECT: Client "221.232.131.51"
Thu Sep 3 04:39:57 2009 FTP response: Client "221.232.131.51", "220 Welcome to our FTP-server."
Thu Sep 3 04:39:57 2009 FTP command: Client "221.232.131.51", "USER Admin"
Thu Sep 3 04:39:58 2009 [Admin] FTP response: Client "221.232.131.51", "530 Permission denied."
Thu Sep 3 04:39:59 2009 FTP command: Client "221.232.131.51", "USER Admin"
Thu Sep 3 04:40:00 2009 [Admin] FTP response: Client "221.232.131.51", "530 Permission denied."
Как-правило, цель взломщиков проста – угадать пароль и использовать FTP-аккаунт для размещения скриптов рассылки спама, сбора персональных данных с фишинговых сайтов и прочих тёмных делишек. Поэтому всегда стоит по возможности закрывать доступ на TCP-порт 21 в firewall-е для всех, кроме блоков IP-адресов, с которых ходят доверенные пользователи. Но что делать, если мы не знаем откуда будут ходить легитимные пользователи нашего FTP-сервера? В таких случаях, конечно, доступ закрывать нельзя, но можно существенно понизить эффективность подбора паролей путем следующих двух простых правил для стандартного в linux firewall-а iptables:
iptables -A INPUT -m recent --name ftpbruteforce --update --seconds 60 --hitcount 2 -j DROP iptables -A INPUT -p tcp --syn --dport 21 -m recent --name ftpbruteforce --set -j ACCEPT
Второе правило означает, что если встретится
Данную методику можно применять, конечно же, не только для FTP-серверов, но и для многих других случаев (например, SSH). Другие примеры использования модуля recent можно посмотреть на
Интересно! Хотелось бы побольше точно таких же интересных постов