Commands:
Either long or short options are allowed.
--append -A chainAppend to chain
--delete -D chainDelete matching rule from chain
--delete -D chain rulenum
Delete rule rulenum (1 = first) from chain
--insert -I chain [rulenum]
Insert in chain as rulenum (default 1=first)
--replace -R chain rulenum
Replace rule rulenum (1 = first) in chain
--list -L [chain [rulenum]]
List the rules in a chain or all chains
--list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains
--flush -F [chain]Delete all rules in chain or all chains
--zero -Z [chain [rulenum]]
Zero counters in chain or all chains
--new -N chainCreate a new user-defined chain
--delete-chain
-X [chain]Delete a user-defined chain
--policy -P chain target
Change policy on chain to target
--rename-chain
-E old-chain new-chain
Change chain name, (moving any references)
打开win7的ftp功能
在cmd窗口下面,ftp 192.168.1.4 (本机的IP地址)
用户名 ftp
ls 可以看到 pub目录
开始写规则
打开本地所有连接
1
2
[iyunv@localhost ~]# iptables -A INPUT -i lo -j ACCEPT
[iyunv@localhost ~]# iptables -A OUTPUT -o lo -j ACCEPT
所有已建立的连接,都放行
1
2
[iyunv@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
[iyunv@localhost ~]# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
放行ssh的22端口服务,同个IP最多发起3个连接
1
iptables -A INPUT -d 192.168.1.4 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 3 -j ACCEPT
【假如3号机是web服务器 不允许包含有“***”的字符访问请求】
安装httpd yum -y install httpd
service httpd restart win7浏览器可以打开欢迎界面192.168.3.1
vim /var/www/html/index.html随便写点东西
在防火墙主机上配置
1
iptables -A FORWARD -d 192.168.3.1 -p tcp --dport 22 -m state --state NEW -j ACCEPT
允许已连接的转发
1
iptables -I FORWARD 1 -m state --state ESTABLISHED -j ACCEPT
当前ssh已匹配到的链,但是NEW并没有匹配到数据,那么开始测试NEW
1
4 232 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
关闭3号机的ssh连接
在防火墙添加配置
1
iptables -P FORWARD DROP
重新连接到3号机的ssh 一切Ok,NEW匹配到了数据
1
2 128 ACCEPT tcp -- * * 0.0.0.0/0 192.168.3.1 tcp dpt:22 state NEW
此时ssh是可以访问的 但web已经访问不了
防火墙添加规则 允许ftp的21端口
1
iptables -A FORWARD -d 192.168.3.1 -p tcp --dport 21 -m state --state NEW -j ACCEPT
加载ip_nat_ftp模块 这个很重要,否则RELATED状态不起作用
1
modprobe ip_nat_ftp
添加规则,
1
iptables -R FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
【win7 cmd测试 ftp 192.168.3.1 用户名ftp 密码kong】 OK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\Users\Administrator>ftp 192.168.3.1
连接到 192.168.3.1。
220 (vsFTPd 2.2.2)
用户(192.168.3.1:(none)): ftp
331 Please specify the password.
密码:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
fstab
pub
upload
226 Directory send OK.
ftp: 收到 20 字节,用时 0.00秒 20000.00千字节/秒。
ftp>
【可以让你ping 一秒只让你ping 3次】
1
2
3
iptables -A FORWARD -d 192.168.3.1 -p icmp --icmp-type 8 -m limit --limit 3/second -m state --state NEW -j ACCEPT
iptables -A FORWARD -d 192.168.3.1 -p icmp --icmp-type 8 -m limit --limit 6/minute -m state --state NEW -j ACCEPT
iptables -A FORWARD -d 192.168.3.1 -p icmp --icmp-type 8 -m limit --limit 6/minute --limit-burst 3 -m state --state NEW -j ACCEPT
【上面的RELATED状态对本设置有影响】
【笨鸟先飞】:
NEW NEW说明这个包是我们看到的第一个 包。意思就是,这是conntrack模块看到的某个连接第一个包,它即将被匹配了。比如,我们看到一个SYN 包,是我们所留意的连接的第一个包,就要匹配它。第一个包也可能不是SYN包,但它仍会被认为是NEW状态。这样做有时会导致一些问题,但对某些情况是有非常大的帮助的。例如,在 我们想恢复某条从其他的防火墙丢失的连接时,或者某个连接已经超时,但实际上并未关闭时。
ESTABLISHED ESTABLISHED已经注意到两个方向上 的数据传输,而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是非常容 易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从NEW变 为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防 火墙转发的。ICMP的错误和重定向等信息包也被看作是ESTABLISHED,只要它们是我 们所发出的信息的应答。
RELATED RELATED是个比较麻烦的状态。当一 个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。换句话说,一个连接要想 是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这 个新的连接就是RELATED的了,当然前提是conntrack模块要能理解RELATED。ftp是个很好的例子,FTP-data 连接就是和FTP-control有RELATED的。还有其他的例子,比如,通过IRC的DCC连接。有了这个状态,ICMP应 答、FTP传输、DCC等才能穿过防火墙正常工作。注意,大部分还有一些UDP协议都依赖这个机制。这些协议 是很复杂的,它们把连接信息放在数据包里,并且要求这些信息能被正确理解。