原文链接:
http://blog.sina.com.cn/s/blog_4ce992f40101ddac.html
========================================================= linux iptables存放位置 /etc/sysconfig/iptables ================================================================ [root@tp ~]#iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT [root@tp ~]#iptables -R INPUT 4 -s 172.17.99.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT [root@tp ~]#iptables -P INPUT DROP(P是大写) [root@tp ~]#iptables -P OUTPUT ACCEPT [root@tp ~]#iptables -P FORWARD DROP [root@tp ~]#service iptables save [root@tp ~]#service iptables restart ================================================================ iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited iptables -A INPUT -s ! 127.0.0.1 -p icmp -j DROP (禁止任何机器 ping服务器) ================================================================ 1、查看: [root@test ~]# iptables -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 192.168.1.1 0.0.0.0/0 2 DROP all -- 192.168.1.2 0.0.0.0/0 3 DROP all -- 192.168.1.3 0.0.0.0/0 2、删除 删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP): [root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP 删除第二行规则 [root@test ~]# iptables -D INPUT 2 3、添加 自动添加一条规则到尾部: [root@test ~]# iptables -A INPUT -s 192.168.1.5 -j DROP 自定义再插入一条规则到第三行: [root@test ~]# iptables -I INPUT 3 -s 192.168.1.3 -j DROP [root@test ~]#iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT [root@test ~]#iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 1433 -j ACCEPT 如:我们只允许192.168.0.3的机器进行SSH连接 [root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT 如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP. 4、修改: [root@test ~]# iptables -R INPUT 3 -j ACCEPT [root@linuxora ~]# iptables -R INPUT 1 -s 172.17.99.0/24 -p tcp --dport 22 -j ACCEPT [root@centlinux]# iptables -R INPUT 4 -s 172.17.99.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT ======================================================================
#iptables -A INPUT -i lo -j ACCEPT 允许本机
#iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
#iptables -A INPUT -m state --state NEW -p tcp -s 211.161.251.192/26 --dport 22 -j ACCEPT
#iptables -A INPUT -m state --state NEW -p tcp -s 211.161.251.192/26 --dport 3306 -j ACCEPT
#iptables -A INPUT -j REJECT 最后规则拒绝所有
======================================================================
5、开放指定的端口
#允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp –dport 21 -j ACCEPT
iptables -A INPUT -p tcp –dport 20 -j ACCEPT
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#禁止其他未允许的规则访问
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
6、屏蔽IP
#如果只是想屏蔽IP的话3、“开放指定的端口”可以直接跳过。
#屏蔽单个IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
禁止访问1521但这个IP除外:
[root@linux]#iptables -A INPUT -p tcp --dport 1521 -s ! 172.16.13.1 -j DROP
=============================================================
Chain INPUT (policy ACCEPT)
target
target
target
target
ACCEPT
ACCEPT
ACCEPT
ACCEPT
ACCEPT
ACCEPT
ACCEPT
ACCEPT
ACCEPT
ACCEPT
REJECT
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.
Chain INPUT (policy ACCEPT)
target
target
target
[root@tp ~]# iptables -X
Chain INPUT (policy ACCEPT)
target
target
target
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包
如果做了邮件服务器,开启25,110端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
如果做了FTP服务器,开启21端口
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
Chain PREROUTING (policy ACCEPT)
target
target
SNAT
target
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
[root@tp ~]# iptables -A INPUT
[root@tp ~]# iptables -A OUTPUT
[root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP
允许所有已经建立的和相关的连接
[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
[root@tp ~]# service iptables restart
别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,