Fail2Ban/IPTables & Pure-Ftpd
У меня есть чистый ftpd, работающий на веб-сервере с Fail2Ban. Fail2Ban допускает соединения apache2, но запрещает любое FTP-соединение с любого другого компьютера, кроме локального. Я пытался изменить файлы jail.local и jail.conf, но у меня все еще есть проблемы.
Вот раздел pure-ftpd моего файла jail.local:
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/auth.log
maxretry = 6
Вот вид моего iptables -L -n:
Chain INPUT (policy DROP)
target prot opt source destination
fail2ban-postfix tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443,25,587,110,995,143,993,4190
fail2ban-dovecot tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443,25,587,110,995,143,993,4190
fail2ban-roundcube tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443,25,587,110,995,143,993,4190
fail2ban-ssh tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
fail2ban-pure-ftpd tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 21,20,990,989
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:110
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:995
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:993
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-dovecot (1 references)
Если я запускаю следующие команды вручную, FTP работает (как активный, все еще не может работать пассивно), но я действительно хочу, чтобы это работало с Fail2Ban:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
Любые идеи о том, как заставить fail2ban правильно настроить iptables? Если нет, какие правила мне нужно установить, чтобы активная и пассивная работа FTP работала правильно?
2 ответа
Я нашел конфигурацию IPTABLES по умолчанию в /etc/default/iptables, добавил следующее и перезапустил службу iptables, и теперь ftp работает:
-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
Как настроить пассивные порты для Pure-FTPd (и настроить брандмауэр):
Установите максимальное количество одновременных соединений ftp в этом файле:
/etc/pure-ftpd/conf/MaxClientsNumber
например:
50
Установите желаемый диапазон пассивного порта в этом файле:
/etc/pure-ftpd/conf/PassivePortRange
например:
42420 42520
подсказки:
- Введите два номера порта через пробел.
- Откройте вдвое больше портов, чем вы установили в MaxClientsNumber, например. MaxClientsNumber = 50 -> открыть 100 пассивных портов.
- Порты должны находиться в диапазоне свободных портов (еще не использованных на вашем компьютере другим сервисом и не используемых никаким другим стандартным сервисом).
- Примеры диапазона пассивных портов: 29100-29200 или 32770-32870 или 42420-42520 или 51899-51999. Смотрите полный список стандартных IP-портов здесь. Проверьте используемые порты на вашей машине с
sudo iptables -nvL
,
Открытые порты в брандмауэре:
Могу ли я предложить использовать UFW в дополнение к iptables? Это значительно упрощает настройку правил брандмауэра, а также делает ваши правила постоянными.
Всякий раз, когда что-то меняется на вашем брандмауэре, будьте осторожны, чтобы не заблокировать себя от вашей машины! Проверьте, открыт ли порт 22/ssh, если вы подключены через ssh.
Установите UFW, запретите любой входящий трафик (сначала закройте все, затем просто откройте необходимые порты), откройте порт 22/ssh, затем запустите UFW:
sudo apt-get install ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw enable
Откройте порты для FTP: (замените 42420:42520 на свои собственные порты.)
sudo ufw allow ftp sudo ufw allow proto tcp from any to any port 42420:42520
Откройте порты для вашего веб-сервера:
sudo ufw allow http sudo ufw allow https
Откройте порты для вашего почтового сервера: (может быть, вам не нужны все эти порты. Хорошие советы смотрите здесь.)
sudo ufw allow 25 sudo ufw allow 110 sudo ufw allow 143 sudo ufw allow 465 sudo ufw allow 587 sudo ufw allow 993 sudo ufw allow 995 sudo ufw allow 4190
Наконец, проверьте ваши настройки и включите их постоянно:
sudo ufw status verbose sudo ufw disable sudo ufw enable
Последний шаг: еще раз проверьте, выполнял ли UFW установку все ваши предыдущие правила iptables, а если нет, удалите их вручную.
iptables -nvL --line numbers iptables -D INPUT X
Замените X на номер строки, которую вы прочитали из вывода первой команды, и повторите (обе команды!) Для каждого правила iptables, которое вы хотите удалить.
Особенно проверьте это правило iptables в цепочке IPUT (как видно из ваших данных выше) с опцией '-v'
sudo iptables -nvL
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Если вы видите столбец с надписью "lo" в этой строке, то все в порядке, и здесь ничего не нужно делать. Если в этой строке нет 'lo', это может означать, что ваш брандмауэр будет принимать весь трафик на все порты (как если бы у вас вообще не было брандмауэра), и его следует удалить.
Теперь у вас должен быть Pure-FTPd, принимающий пассивные порты, и настройка UFW, которая проста для управления брандмауэром.