Fail2Ban/IPTables 和 Pure-Ftpd

Fail2Ban/IPTables 和 Pure-Ftpd

我在带有 Fail2Ban 的 Web 服务器上运行 pure-ftpd。Fail2Ban 允许 apache2 连接,但拒绝除本地主机之外的任何 FTP 连接。我尝试修改 jail.local 和 jail.conf 文件,但仍然遇到问题。

这是我的 jail.local 文件的 pure-ftpd 部分:

[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 正常工作?

答案1

我在 /etc/default/iptables 中找到了默认的 IPTABLES 配置,并添加了以下内容,然后重新启动了 iptables 服务,并且 ftp 现在可以正常工作:

-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT

答案2

如何为 Pure-FTPd 设置被动端口(以及设置防火墙):

  1. 在此文件中设置最大并发 ftp 连接数:

    /etc/pure-ftpd/conf/MaxClientsNumber
    

    例如:

    50
    
  2. 在此文件中设置所需的被动端口范围:

    /etc/pure-ftpd/conf/PassivePortRange
    

    例如:

    42420 42520
    

    提示:

    • 输入两个以空格分隔的端口号。
    • 打开两倍于您在 MaxClientsNumber 中设置的端口数,例如 MaxClientsNumber = 50 -> 打开 100 个被动端口。
    • 端口必须处于空闲端口范围内(您的机器上尚未被其他服务使用,也未被任何其他标准服务使用)。
    • 被动端口范围示例:29100-29200 或 32770-32870 或 42420-42520 或 51899-51999。查看标准 IP 端口的完整列表这里. 使用 检查您机器上使用的端口sudo iptables -nvL
  3. 在防火墙中打开端口:

    我可以建议使用联邦水务局除了 iptables 之外还有什么?这将使设置防火墙规则变得更加容易,并且还能使规则持久。

    无论何时更改防火墙上的设置,都要注意不要将自己锁定在机器之外!如果您通过 ssh 连接,请检查端口 22/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
    
  4. 最后一步:再次检查 UFW 安装是否处理了您之前的所有 iptables 规则 - 如果没有,则手动删除它们。

    iptables -nvL --line numbers
    iptables -D INPUT X
    

    将 X 替换为您从第一个命令的输出中读取的行号,然后对要删除的每个 iptables 规则重复(两个命令!)。

    特别再次检查 IPUT 链上的此 iptables 规则(如上面的数据所示),使用选项“-v”sudo iptables -nvL

    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
    

    如果您看到此行中显示“lo”的列,则一切正常,无需在此处执行任何操作。如果此行中没有“lo”,则可能意味着您的防火墙将接受所有端口上的所有流量(就像您根本没有防火墙一样),因此应将其删除。

现在您应该拥有 Pure-FTPd 接受被动端口和 UFW 设置,以便轻松处理防火墙管理。

相关内容