Iptables四表五链及规则组成

iptables组成:四张表 + 五条链(Hook point) + 规则

Iptables和Netfilter的关系:
Netfilter: Netfilter是linux操作系统核心层内部的一个数据包处理模块
Hook point: 数据包在Netfilter中的挂载点(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING )
Iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
在这里插入图片描述
Iptables四表五链
四表:filter、natmanagleraw,默认是filter表。表的处理优先级:raw>managle>nat>filter

filter过滤数据包
nat网络地址转换(端口映射、地址映射等。)
mangle用于对特定数据报的修改。
raw优先级最高,设置raw时一般是为了不再让iptables做数据报的链接跟踪处理,提高性能。

五链:PREROUTINGINPUTFORWARDOUTPUTPOSTROUTING

PREROUTING数据包进入路由表之前,对数据包做路由选择前应用此链路中的规则,所有的数据包进来的时候都先由这个链处理
INPUT通过路由表后目的为本机,进来的数据报应用此规则链上的策略
FORWARD通过路由表后,目标地址不为本机,做转发数据报时应用此规则链上的策略
OUTPUT由本机产生的外出的数据包向外转发时,应用此规则链中的策略
POSTROUTING数据报做路由选择后发送后到网卡接口之前应用此链中的规则,所有的数据包出来的时候都先由这个链处理

表与链之间的包含关系:

filterINPUT、FORWARD、OUTPUT
natPREROUTING(DNAT)、OUTPUT、POSTROUTING(SNAT)
manglePREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
rawPREROUTING、OUTPUT

数据包在4张表和5条链的流向:
在这里插入图片描述
iptables规则组成
数据包访问控制:ACCEPT、DROP、REJECT
数据包改写:SNAT、DNAT
信息记录:LOG

iptables [-t TABLE] COMMAND CHAIN [num] 匹配标准 -j 处理办法

在这里插入图片描述
command

管理规则:

-A:附加一条规则,添加在链的尾部
-I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条,不指定默认为第一条
-D CHAIN [num]:删除指定链中的第num条规则
-R CHAIN [num]:替换指定的规则

管理链:

-F [CHAIN]:flush,情况指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链
-P CHAIN:设定指定链的默认策略    iptables -P INPUT DROP
-N:自定义一个新的空链
-X:删除一个自定义的空链
-Z:置零指定链中所有规则的计数器
-E:重命名自定义的链

查看类:

-L:显示指定表中的规则
    -n:以数字格式显示主机地址和端口号
	-v:显示链及规则的详细信息
	-x:显示计数器的精确值
	--line-numbers:显示规则号码

匹配保准:
通用匹配:

-s,--src :指定源地址
-d,--dst :指定目标地址
-p{tcp|udp|icmp} :指定协议
-i interface :指定数据报文流入的接口(eth0)
   可用于定义标准的链:PREROUTING,INPUT,FORWARD
-o interface :指定数据报文流出的接口
   可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD

隐含扩展匹配:不用特别指明由哪个模块进行的扩展,因为此时使用{tcp|udp|icmp}

-p tcp
	 --sport PORT[-PORT]: 源端口
	 --dport PORT[-PORT]: 目标端口
	 --tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;
	   --tcp-flags SYN,FIN,ACK,RST SYN = --syn
	 --syn
-p icmp  (ping)
	 --icmp-type 
		0: echo-reply   ping应答
		8: echo-request ping请求
		
	iptables -A INPUT -p icmp --icmp-type 8 -s 192.168.239.0/24 -j DROP 
	iptables -A INPUT -p icmp --icmp-type any -s 192.168.239.0/24 -j DROP

-p udp
	 --sport
	 --dport	

显示扩展匹配:使用额外的匹配机制,必须指明由哪个模块进行的扩展,在iptables 中使用-m选型可完成此功能

-m state:状态扩展
	 结合ip_conntrack追踪会话状态
	 NEW:新连接请求
	 ESTABLISHED:已建立的链接
	 INVALID:非法链接
	 RELATED:相关联的 (ftp,需要加载模块)
	 
	iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


-m multiport:离散的多端口匹配扩展
	 --source-ports
	 --destination-ports
	 --ports
	 -m multiport --destination-ports 21,22,80 -j ACCEPT			

-m iprange   指定范围
     --src-range
     --dst-range
	iptables -A INPUT -p tcp -m iprange --src-range 172.16.100.3-172.16.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

-m connlimit  连接数限制
     ! --connlimit-above n 
	iptables -A INPUT -d 192.168.2.102 -p tcp --dport 80 -m connlimit ! --connlimit-above 2 -j ACCEPT 
	iptables -A INPUT -d 192.168.2.102 -p tcp --dport 80 -m connlimit --connlimit-above 2 -j DROP 

-m limit
     --limit rate[/second|/minute|/hour|/day]
     --limit-burst number    the default is 5
	iptables -A INPUT -d 192.168.2.102 -p tcp --dport 80 -m limit --limit 5/minute --limit-burst 3 -j ACCEPT 

-m string
     --algo {bm|kmp}
     --string pattern 

动作(target):

ACCEPT:放行
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志     --log-prefix  prefix
MARK:打标记

-j SNAT 
    --to-source ipaddr[-ipaddr][:port[-port]]
	iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 172.16.100.1
	iptables -t nat -L  查看

-j DNAT
    --to-destination [ipaddr][-ipaddr][:port[-port]]
	iptables -t nat -A PREROUTING -d 172.16.100.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.7:8080

-j MASQUERADE (外网地址动态获取时使用)

保存规则

# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

常用示例
1.设置链的默认策略

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

2.允许回环访问

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

3.允许外部主机ping内部主机

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type any -s 192.168.239.0/24 -j DROP

4.匹配端口范围

iptables -A INPUT -p tcp --dport 18:80 -j DROP
iptables -A INPUT -p tcp -m multiport --dport 21,22,23 -j DROP

5.防攻击

connlimit模块
作用:用于限制每一个客户端ip的并发连接数
参数:–connlimit-above n //限制并发个数

iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT 	(并发访问控制)

limit模块
作用:限速,控制流量
参数:–limit rate[/second|/minute|/hour|/day]
–limit-burst number the default is 5

iptables -A INPUT -p icmp -m limit --limit 5/minute --limit-burst 3 -j ACCEPT 
iptables -A INPUT -p icmp -j REJECT

6.局域网机器共享上网

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.19

7.外部地址和端口映射到内部地址和端口

iptables -t nat -A PREROUTING -d 10.0.0.19 -p tcp --dport 80  -j DNAT --to-destination 192.168.1.20:8080
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值