Iptables 防火墙 (一)
1,Linux防火墙基础
Linux的防火墙主要工作在网络层,针对tcp/ip数据包实施过滤和限制,属于典型的包过滤防火墙(网络层防火墙)。
Netfilter:指的是Linux内核实现包过滤防火墙的内部结构,属于“内核态”
Iptables:指的是用来管理Linux防火墙的命令程序,位于/sbin/iptables目录下,属于“用户态”的管理体系。
2,表链结构
(1)规则表
A.filter表:用来对数据包进行过滤,包括三个链:INPUT(入站),OUTPUT(出站)
FORWARD(转发)。
B.nat表(网络地址转换):用来修改数据包的ip地址,端口号等。包括三个链:
PREROUTING(路由选择之前),POSTROUTING(路由选择之后),OUTPUT(出站)。
C.mangle表:修改数据包的标记。包含五个链:PREROUTING, POSTROUTING, INPUT, OUTPUT, FORWARD
D.raw表:对数据包进行状态跟踪。包括两个链:OUTPUT(出站),PREROUTING(路由选择之前)。
3,规则表之间的顺序
Raw----mangle----nat----filter
4,规则链之间的顺序
5,防火墙规则之间的顺序
链内的过滤遵循“匹配即停止”的原则,(LOG日志操作的规则除外)
6,编写防火墙规则
(1),命令格式:iptables -t 表名 管理选项 链名 匹配条件 -j 控制类型
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应
REJECT:拒绝数据包,会给数据发送端一个响应信息。
LOG:在/var/log/messages中记录日志信息,然后将数据包 传递给下一条规则.
@.
-D:删除规则
-I:插入规则
-R:修改规则
-L:列出指定链的所有规则
-F:清空链中的所以规则
-P:指定链的默认策略
7,查看规则链表
Iptables -L INPUT --line-numbers(显示规则序号)
Iptables -nL INPUT(以数字地址查看filter表INPUT链中的所以规则)
8,以下操作可以将filter表中FORWARD链的默认策略为丢弃,OUTPUT链的默认策略为允许。
Iptables -t filter -p FOREARD DROP
Iptables -p OUTPUT ACCEPT
9.,(协议匹配 “-p 协议名”)丢弃通过icmp协议访问防火墙本机的数据包,允许转发经过防火墙的除icmp协议外的数据包
Iptables -I INPUT -P icmp -j DROP
Iptables -A INPUT ! -P icmp -j ACCEPT
10,(地址匹配 “-s 源地址或-d 目标地址”)拒绝转发源地址为192.168.1.11的数据,允许转发源地址位于192.168.7.0/24网段的数据。
Iptables -A FOREARD -s 192.168.1.11 -j REJECT
Iptables -A FOREARD -s 192.168.7.0/24 -j ACCEPT
11,(网络接口匹配 “-i 接口名入站或-o 接口名出站”),丢弃从外网接口(eth1)访问防火墙本机且源地址为私有地址的数据包
Iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
Iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
12,端口匹配( “--sport 源端口或 --dport 目标端口”)
允许网段192.168.4.0/24转发DNS查询数据包
Iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
Iptables -A FORWARD -d 192.168.4.0/24 -p udp --sport 53 -j ACCEPT
13,ICMP类型匹配(”--icmp-type icmp类型“ 【icmp类型使用字符串或数字代码表示,如”echo-request(8)“ “echo-reply(0)” “destinetion-unreachable(3)” ,分别对应ICMP协议的请求,回显,目标不可达】)
禁止从其他主机ping本机,但是允许本机ping其他主机
Iptables -A INPUT -p icmp --icmp-type 8 -j DROP
Iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
Iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
Iptables -A INPUT -p icmp -j DROP
14,多端口匹配(”-m multiport --dports 端口列表 或 “-m multiport --sports 端口列表”)
允许本机开发25.80.110.143端口,
Iptables -A INPUT -p tcp -m multiport --dport 25.80.110.143 -j ACCEPT
15.IP范围匹配(“-m iprange --src-range ip范围”或“-m iprange --dst-range IP范围”)
禁止转发源IP地址位于192.168.4.21与192.168.4.28之间的TCP数据包
Iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j REGECT
16.MAC地址匹配(“-m mac --mac-source MAC地址”)
根据MAC地址封锁主机,禁止访问本机的任何应用
Iptables -A INPUT -m mac --mac-source 00:0c:29:55:3f -j DROP
17.状态匹配(“-m state --state 连接状态”)
禁止转发与正常TCP连接无关的非syn请求数据包
Iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
本文出自 “IT工作者” 博客,请务必保留此出处http://wn123.blog.51cto.com/10199375/1690754
原文地址:http://wn123.blog.51cto.com/10199375/1690754