当我刷新 IPTABLE 规则时(iptables --flush)vsftpd工作正常。
但不符合我的 IPTABLE 规则/
Ubumtu 16.10.1 x64
所有 IPTABLE 规则
xxx.xxx.xxx.xxx - 这是我的 IP 地址
enp2s0 - 我的以太网卡
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:lim1 - [0:0]
-A INPUT -p tcp -m tcp --dport 47050 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 20 --connlimit-mask 32 --connlimit-saddr -j DROP
-A INPUT -p tcp -m tcp --dport 48050 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 20 --connlimit-mask 32 --connlimit-saddr -j DROP
-A INPUT -s ххх.хxx.ххх.ххх/32 -j ACCEPT
-A INPUT -i enp2s0 -p tcp -m tcp --dport 47050 -j ACCEPT
-A INPUT -i enp2s0 -p tcp -m tcp --dport 48050 -j ACCEPT
-A INPUT -i enp2s0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp2s0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 47050 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 47050 -j ACCEPT
-A INPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 48050 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 48050 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 47050 -m recent --update --seconds 2 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 47050 -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 48050 -m recent --update --seconds 2 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 48050 -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource -j ACCEPT
-A INPUT -i enp2s0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -i enp2s0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -i enp2s0 -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -i enp2s0 -p icmp -j DROP
-A INPUT -i enp2s0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -o enp2s0 -p tcp -j DROP
-A OUTPUT -o enp2s0 -p tcp -m tcp --dport 47050 -j lim1
-A OUTPUT -o enp2s0 -p tcp -m tcp --dport 48050 -j lim1
-A OUTPUT -o enp2s0 -p tcp -m tcp --dport 47050 -j ACCEPT
-A OUTPUT -o enp2s0 -p tcp -m tcp --dport 48050 -j ACCEPT
-A OUTPUT -o enp2s0 -p icmp -j ACCEPT
-A lim1 -m limit --limit 50/sec -j RETURN
-A lim1 -j DROP
COMMIT
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
我尝试添加不同的规则,但都没有结果。Vsftpd
配置。
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_max_port=40050
pasv_min_port=40000
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
请帮助调整我的规则,因为我没有能力提前感谢。
答案1
在该行上方添加以下规则-A INPUT -i enp2s0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable
:
-A INPUT -i enp2s0 -p tcp -m multiport --dports 20,21 -j ACCEPT
发生的情况是,您ACCEPT
针对特定 TCP 端口的规则不包括默认 FTP 端口 20 和 21,并且数据包会遍历链,INPUT
直到与上面带有 的行匹配为止icmp-port-unreachable
,因此出现了问题。
此外,您可以将所有 TCPACCEPT
规则组合成以下一行:
-A INPUT -i enp2s0 -p tcp -m multiport --dports 20,21,22,80,47050,48050 -j ACCEPT
希望这可以帮助