iptables
一、iptables介绍
iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables
命令设置你的规则,来把守你的计算机网络──哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log)。让我
们看一下iptables的优点:iptables允许建立状态(stateful)防火墙,就是在内存中保存穿过防火墙的每条连接。这种模式
对于有效地配置FTP和DNS以及其它网络服务是必要的。 iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。
iptable能够阻止某些DOS攻击,例如SYS洪泛攻击。
二、安装
linux系统中自带
三、iptables命令行选项的一个总结
规则链维护选项
1.建立新的规则链(-N)
2.删除一个空的规则链(-X)
3.改变一个内置规则链的策略(-P)
4.列出一条规则链中的规则(-L)
5.擦写一条规则链中的规则(-F)
规则维护
1.在一条规则链中加入一条新的规则(-A)
2.删除一条规则链中某个位置的规则(-D)
四、初始化工作
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
以上每一个命令都有它确切的含义。一般设置你的iptables之前,首先要清除所有以前设置的规则,我们就把它
叫做初始化好了。虽然很多情况下它什么也不做,但是保险起见,不妨小心一点吧!
五、开始设置规则
#iptables -P INPUT DROP
这一条命令将会为你构建一个非常“安全”的防火墙,此时你的机器将相当于没有网络。如果你ping localhost,
你就会发现屏幕一直停在那里,因为ping收不到任何回应。
iptables -A INPUT -i ppp0 -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -i ppp0 -p udp -j REJECT --reject-with icmp-port-unreachable
来代替,以防让黑客对我的计算机了解太多
#iptables -A INPUT -j ACCEPT
这条规则的意思是:接受所有的
#iptables -A INPUT -i ! ppp0 -j ACCEPT
这条规则的意思是:接受所有的,来源不是网络接口ppp0的数据。
# iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
允许来自网络接口eth0(internet接口),并且来源端口是80的数据进入你的计算机。
# iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
这条命令的含义是,接受所有来自网络接口eth0,upd协议的53端口的数据。53也就是著名的dns端口。
# iptables -L
查看你的防火墙
# iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
这一句也就是将自己机器上的80端口对外开放了,这样internet上的其他人就能访问你的www了
# /sbin/service iptables save
保存和恢复 IPTables 规则
六、实验
1、[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这时的主机相当于和网络断开了
2、[root@localhost ~]# iptables -A INPUT -p tcp -s 10.5.3.105 --dport 22 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.5.3.105 anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3、[root@localhost ~]# iptables -D INPUT -p tcp -s 10.5.3.105 --dport 22 -j ACCEPT
删除这条规则
4、[root@localhost ~]# Open_ports="22 80"
自己机器对外开放的端口
5、[root@localhost ~]# iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.5.3.105 anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这样就完成了。现在只有10.5.3.105 能ssh 上10.5.1.155 ,但是所有的机器都访问10.5.1.155的web.
阅读(896) | 评论(0) | 转发(0) |