首页 > 代码库 > iptables的用法

iptables的用法

功能
    过滤数据包
    地址转换
    端口转换
    QoS

硬件防火墙
软件防火墙

节点
数据包流向
    目标地址就是防火墙
    源地址就是防火墙
    经过防火墙

iptables的结构
    1.表(-t)处理顺序由高到低
        raw表:做链接跟踪(OUTPUT,PREROUTING)
        mangle表:给数据做标记,实现QoS功能(INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING)
        nat表:实现地址转换(源地址转换,目标地址转换,端口转换)(PREROUTING,POSTROUTING,OUTPUT)
        filter表:实现数据包过滤功能(INPUT,OUTPUT,FORWARD)
    2.链---描述数据的流向
    INPUT:处理进入防火墙的数据包(目标地址是防火墙)
    OUTPUT:处理从防火墙出去的数据包(源地址是防火墙的数据包)
    FORWARD:处理由防火墙转发的数据包
    PREEOUTING:进行目标地址转换(在路由前处理)
    POSTROUTING:进行源地址转换(在路由后处理)

iptables的基本语法
    iptables -t 表名 操作命令 链名 匹配规则 -j 跳转处理方法
    例:设置服务器拒绝源地址为172.16.0.220进行ping测试
    iptables -t filter -A INPUT -s 172.16.0.220 -p icmp -j DROP

    例:设置服务器只允许源地址为172.16.0.220进行ping测试(先拒绝,后允许)
    # iptables -t filter -P INPUT DROP
    # iptables -t filter -A -s 172.16.0.220 -p icmp -j ACCEPT

iptables的操作命令
-A    添加规则
-D    删除规则
-R    替换规则
-N    新建规则链
-L    列出防火墙规则
-I    插入规则
-F    清空标准规则链
-Z    计算器清零
-X    删除自定义链
-P    设置默认规则
-E    重命名规则链

常见匹配项
-s    指定源地址
-d    指定目标地址
--sport    指定源端口
--dport    指定目标端口
-p    指定协议
-i    指定进入的网卡
-o    指定出去的网卡

跳转处理方法
ACCEPT    允许通过
DROP    丢弃数据包
REJECT    退回数据包
SNAT    源地址转换
DNAT    目标地址转换
MASQUERADE    自动匹配地址masquerade
REDIRECT    端口重定向

保存防火墙设置
service iptables save  将防火前辈个规则保存到/etc/sysconfig/iptables
iptables-save > /iptables  把设置重定向到某个文件
iptables-restore < /iptables  从某个文件恢复防火墙设置

练习:设置服务器防火墙只允许172.16.0.0/16的地址段进ping测试,ftp连接,ssh连接,所有其它的访问全部拒绝

设置服务器的防火墙,要求满足如下要求
1.允许任何地址进行web访问
2.只允许从172.16.0.220进行ssh连接
3.允许从172.16.0.0/16进行ping连通性测试
4.允许本机环回地址进行通信
5.决绝其他任何地址访问

iptables扩展
1.多端口扩展
-m multiport --dport 20,21,22
2.状态扩展
NEW,ESTABLISHED,INVALID(无效连接),RELATED(关联连接)
UNTRACKED(不进行跟踪)
-m state  --state NEW
建立关联连接时,要建立数据跟踪(加载跟踪模块)
modprobe nf_conntrack_ftp
modprobe -l | grep XXX

3.多地址匹配
-m iprange --src-range 172.16.0.100-172.16.0.200

练习:设置你的服务器拒绝10.0.0.x--->10.0.0.y之间的地址进行ping,x和y的差值在10之间

4.tcp标记扩展
--tcp-flags syn,ack,fin(同时检查) syn(只有它为1)

5.时间扩展
--timestart 08:30:00
--timestop  17:30:00
--datestart 2015/06/01
--datestop 2015/06/30
--monthdays 1,20
--weekdays 1,2,3,4,5

6.字符匹配扩展
-m string
-m string --algo(指定算法) kmp --string "sex" -j DROP

7.limit限制扩展
-m limit --limit 5/s(每秒5个包) --limit-burst 8(最大并发包) --- 当出现最大并发时,会用后续的时间进行补偿

8.nat表实现地址转换
#iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 192.168.1.201
#iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.0/16 -j MASQUERADE
#iptables -t nat -A PREROUTING -s 172.16.0.0/16 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -d 10.0.0.10(目的网关) -p tcp --dport 80 -j DNAT --to-destination 192.168.10.100

nat表的转换信息
cat /proc/net/nf_conntrack
/proc/sys/net/nf_conntrack_max
/proc/sys/net/netfilter/

9.raw表的连接控制跟踪
# iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK(不跟踪)
#iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
#iptables -t filter -A INPUT -m state --state --state ESTABLISHED,RELATED,UNTRACKED -j ACCEPT

10.使用mangle表给数据包加标记
策略路由:根据不同的情况,选择不同的网关(如,选择电信还是联通)
#iptables -t mangle -A FORWARD -m iprange --srcrange 192.168.10.1-192.168.10.100 -p tcp --dport 80 -j MARK --set-mark 10
添加策略路由
#ip rule add from all fwmark 10 table 10
#ip route add default via 10.0.0.10 dev eth0 table 10

#iptables -t mangle -A FORWARD -m iprange --srcrange 192.168.10.1-192.168.10.100 -p tcp --dport 80 -j MARK --set-mark 20
添加策略路由
#ip rule add from all fwmark 20 table 20
#ip route add default via 10.0.0.20 dev eth0 table 20

实验:
    1.使用一台机器做服务器,包括WEB服务和FTP服务
    2.要求这台服务器能够正常上网,但是对访问本机的WEB服务和FTP服务不进行连接跟踪
    3.要求能进行ping测试和ssh连接,除此以外拒绝所有其他访问
    4.允许回环地址进行网络测试

iptables -A INPUT -p tcp -m multiport --dport 21,22,80 -j ACCEPT
iptables -t raw -A OUTPUT -p tcp -m multiport --sport 21,80 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED,UNTRACKED -j NOTRACK
iptables -t raw -A PREROUTING -p tcp -m multiport --dport 21,80 -j NOTRACK
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED,UNTRACKED -j ACCEPT
iptables -A INPUT  -p icmp -j ACCEPT
iptables -P INPUT DROP

本文出自 “天晴了要下雨” 博客,请务必保留此出处http://8776055.blog.51cto.com/8766055/1851550

iptables的用法