iptables

iptables

iptables是工作在用户空间的提供报文处理规则策略编辑的一个前段工具,报文数据处理是由位于内核空间中的netfilter模块进行,
netfilter根据策略规则对经内核处理的数据包进行匹配并执行对应的改写、转发、过滤等操作
SYNOPSIS

iptables [-t table] {-A|-C|-D} chain rule-specification -j ACTION ps:指定链、表–匹配条件–执行动作

table:raw<–mangle<–nat<–filter(忽略secrure表)
chain:PREROUTING-INPUT-FORWARD-OUTPUT-POSTROUTING

链在表中的分布
	raw:PREROUTING-OUTPUT
	mangle:PREROUTING-INPUT-FORWARD-OUTPUT-POSTROUTING
	nat:PREROUTING-INPUT-OUTPUT-POSTROUTING
	filter:INPUT-FORWARD-OUTPUT
		ps:OUTPUT是唯一同时存在与四个表中的规则链
命令解析:
	所属链表:
		-t	table (不指定的话,默认是filter)
		链表操作命令:
				表:增:-N 删:-X 改:-E 查:-L
				链:增:-A -I 删:-D -F-Z  改:-R  查:-L
	匹配条件:
		基本匹配条件:-s,-d,-i,-o,-p
		扩展匹配条件:隐式(tcp、udp、icmp),显式(需要用-m选项添加匹配模块)
			隐式匹配:
					tcp
						--sport --dport 格式:a:b或a或b
						--tcp-flags  SYN,ACK,FIN,RST,URG,PSH (ALL)  FLAG1,FALG2
					udp
						--sport --dport
					icmp
						--sport --dport
						--icmp-type 
								echo reply 0/0
								echo request 8/0
						
			显式匹配:
					multiport
							--sports  --dports  格式:a:b,c,d,e:f
					iprange
							--src-range --dst-range  格式:ipv4_1,ipv4_2-ipv4_3
					time
							--starttime --stoptime --weekdays --monthdays --datestart --datestop
					string
							--algo{dm|gcm}  匹配算法
							--string "STRING" 
					connlimit
							--connlimit-upto
							--connlimit-above
							--connlimit-mask	子网整体的连接数限制
					limit
							--limit  格式:RATE/minute、second、hour、day
							--limit-burst  令牌桶
					state
							--state NEW,ESTABLISHED,RELATED,INVALID,UNTRACKED
			执行动作:
				ACCEPT、DROP、REJECT
				LOG(默认/var/log/message,在/etc/rsyslog.conf中添加kern.warning /etc/log/*,自定义日志文件)
					--log-level 指定日志的级别:emerg、alert、crit、error、warning、notice、info、debug
					--log-prefix 给记录的日志信息添加“标签”,以便区分过滤
防火墙

分类:1、网络防火墙和主机防火墙;2、硬件防火墙和软件防火墙

	网络防火墙:
		职能:转发过滤,工作在filter表的FORWARD链
	主机防火墙:
		职能:过滤限制,工作在filter表的INPUT和OUTPUT链

	软件防火墙依赖linux内核对数据包的处理的处理过滤,通用处理器的指令集对于数据包处理效率,
	相较于硬件防火墙所用的专用指令集并不占优,但是有成本优势

报文的拆解转发需要在内核空间完成,iptables可以通过四表五链对报文进行很多组合操作,防火墙功能是运用filter这张表完成的其中一个应用。

PS: 端口和IP都有两个方向的报文:a、本机向远程的请求(走OUTPUT)和远程主机对本机对应的响应(走INPUT );b、远程主机向本机的请求(走INPUT)和本机对远程主机对应的响应(走OUTPUT),我们为了访问远程主机的服务开放了相应端口或IP,同时会有远程主机通过此端口或IP向本机访问的风险,这个风险可以通过“连接追踪”机制来控制,但是“连接追踪”能够记录的表的大小是有限制的,对于很繁忙的服务主机来说,连接追踪机制可能会成为一个问题

NAT

NAT对内外网的报文进行IP地址转换,以实现内外网的隔离,主要工作在nat表的PREROUTING链和POSTROUTING链上。

NAT主要实现两个功能:

1、对内网访问外网的报文进行源地址的改写,叫snat,在POSTROUTING上编写规则
	条件匹配这一块跟filter的条件匹配类似,动作由ACCEPT、DROP、REJECT变为SNAT,跟上动作参数
	-j SNAT --to-source IPADDR:PORT 
	-j MASQUERATE [--to-ports]  用于动态的网口IP
2、对外网的响应报文进行目标地址的改写,叫dnat,在PREROUTING链上进行
	同样条件匹配类似,动作变为DNAT,跟上修改策略:
	-j DNAT --to-destination IPADDR:PORT
3、端口映射
	-j REDIRECT --to-ports 
	在本机上进行端口映射,只能定义在PREROUTING和OUTPUT链中	
	
在测试DNAT时,对应SNAT规则也需要配置,才能正常DNAT,可以先尝试只配置DNAT规则,如果无法正常DNAT,
再尝试添加对应的SNAT规则,SNAT规则配置一条即可,DNAT规则需要根据实际情况配置不同的DNAT规则。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值