Iptables防火墙,iptables
Iptables防火墙,iptables
1 位置
使用vim /usr/sysconfig/iptables
2 启动、关闭、保存
- service iptables stop
- service iptables start
- service iptables restart
- service iptables save
3 结构
iptables –> tables –> chains –>rules
3.1 iptables的表与链
iptables具有Filter,NAT,Mangle,Raw四种内建表
3.1.1 Filter表
filter表示iptables的默认表,它具有三种内建链:
- input chain - 处理来之外部的数据
- output chain - 处理向外发送的数据
-
forward chain- 将数据转发到本机的其它网卡上
3.1.2 NAT表
NAT有三种内建的链:
- prerouting - 处理刚到达本机并在路由转发前的数据包,它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
- postrouting - 处理即将离开本机数据包,它会转换数据包中的源目标IP地址(source ip address),通常SNAT(source NAT)
- output - 处理本机产生的数据包
3.1.3 Mangle表
Mangle表用于指定如何处理数据包,它能改变TCP头中的Qos位,Mangle表具有5个内建链
- prerouting
- output
- forward
- input
- postrouting
3.1.4 Raw表
raw表用户处理异常,它具有2个内建链
- prerouting chain
- output chain
3.2 Iptables规则(Rules)
- rules包括一个条件和一个目标(target)
- 如果满足条件就执行目标target中规则或者特定值
- 如果不满足条件,就判断下一条Rules
3.2.1 目标值
- accept - 允许防火墙接收数据包
- drop - 防火墙丢弃数据包
- queue - 防火墙将数据包移交到用户空间
- return - 防火墙停止执行当前链中的后续rules规则,并返回到调用链(the calling chain)
4 命令
#iptables -t filter -L 查看filter表
#iptables -t nat -L 查看nat表
#iptables -t mangel -L 查看mangel表
#iptables -t raw -L 查看Raw表
例如 以下例子表明在filter表的input链, forward链, output链中存在规则:
# iptables --list Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
字段说明
num:编号
target:目标
prot:协议
source:数据包的源IP地址
destination:数据包的目标地址
4.1 清空所有的规则
#iptables –flush
4.2 追加命令
iptables -A命令追加新规则,其中-A表示append,一般而言最后一条规则用于丢弃(drop)所有数据包,并且使用-A参数添加新规则,那么就是无用的。
4.2.1 语法
iptables –A chain firewall-rule
- -A chain 指定要追加的规则的链
- firewall-rule 具体规则的参数
4.2.2 基本参数
用于描述数据包的协议,源地址、目的地址、允许经过的网络接口,以及如何处理这些数据包。
- 协议 –p (protocol)
如tcp,udp,icmp等,可以使用all来指定所有协议
不指定-p参数,默认值是all,
可以使用协议名(tcp,udp),或者协议值(6代表tcp),映射关系可以查看/etc/protocols - 源地址 –s (source)
指定数据包的源地址,参数可以使用IP地址、网络地址、主机名,不指定-s参数,就是代表所有地址。
例如:-s 192.168.1.101 具体的IP地址
例如:-s 192.168.1.10/24 指定网络地址 - 目的地址 –d (destination)
指定目的地址,参数和-s相同 - 执行目标 –j (jump to target)
-j代表了当与规则(Rule)匹配时如何处理数据包,可能的值是accept、drop、queue、return,还可以指定其他链(chain)作为目标 - 输入接口 –i (input interface)
指定了要处理来自哪个接口的数据包,这些数据包进入input、forward、prepoute链,不指定将处理进入所有接口的数据包
例如:-i eth0 指定了要处理eth0进入的数据
可以取反 !-i eth0,指eth0以外。
可以匹配 -i eth+ 指以eth开头的 - 输出接口 –o (out interface)
数据包有那个接口输出,类似于 –i - 源端口 –sport
例如 –sport 22
例如 –sport 22:100指定端口范围 - 目的端口 –dport
类似于-sport - TCP标志
- ICMP类型
5 实例分析
例如:接收目标端口为22的数据包
iptables –A INPUT –i etho –p tcp –dprot 22 –j ACCEPT
例如:拒绝所有其他数据包
iptables –A INPUT –j DROP
6 修改默认策略
上例仅对接收的数据包进行过滤,而对于要发出的数据包却没有任何限制。
使用iptables –L
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:ssh DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
评论暂时关闭