Linux-iptables安全加固

iptables安全加固

主机型

用户态,在/sbin/iptables存在(user iptables)的防火墙,是用户看得见能操作的。

linux-iptables主机型防火墙工作在2,3,4层,对TCP/IP数据包进行过滤和限制。属于包过滤型防火墙。(除非编译内核才可以使iptables支持7层)

缺点

1.无法过滤内部网络的数据包。因此若有人从内部网络攻击时,防火墙没有作用。
2.电脑本身的操作系统亦可能因一些系统漏洞,使入侵者可以利用这些漏洞绕过防火墙过滤,从而入侵电脑。
3.防火墙无法有效阻挡病毒攻击,尤其是隐藏在数据中的病毒。
4.正常状况下,所有互联网的数据包软件都应经过防火墙的过滤,这将造成网络交通的瓶颈。例如在攻击性数据包出现时,攻击者会不时寄出数据包,让防火墙疲于过滤数据包,而使一些合法数据包软件亦无法正常进出防火墙。
PS:没有绝对安全的操作系统,虽然防火墙有这些缺点,但还是能阻挡大多数来自于外网的攻击!

表&链

四个表

filter过滤  nat装换   mangle碾压   raw不追踪

五个链

PREROUTING预路由
POSTROUTING已路由
INPUT入站
OUTPUT出站
FORWARD转发

架构图

在这里插入图片描述

关系图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rZsKbHwr-1616752700018)(D:\一阶段\文件\命令\image-20210325115609655.png)]

表链关系

1.filter表
INPUT		访问本机的数据包进行过滤
FORWARD		途径本机的数据包进行过过滤
OUTPUT		本机访问互联网的数据包进行过滤
总结:根据规则来处理数据包,如转或者丢。就是实现主机型防火墙的主要表。内核模块 iptable_filter

2.nat表
PREROUTING		修改目的地址
POSTTOUTING		修改源地址
OUTPUT		主要是控制内部
总结:转换地址的表(改IP,改端口。当网关使用的linux。保护内外网流量。内核模块叫iptable_nat)

3.mangle表	
PREROUTING,POSTROUTING,INPUIT,OUTPUT,FORWARD
流量整形的表。路由标记用的表。改TOS,TTL,Mark标记策略路由等,
内核模块iptables_mangle

4.raw表
PREROUTING,OUTPUT
新表,数据包跟踪  iptables_raw

表的应用顺序

raw > mangle > nat > filter

链之间的顺序

入站:
比如访问自身的web服务流量。
先PREROUTING(是否改地址),再INPUT(是否允许)到达程序。
	
转发:
经过linux网关的流量。
先PREROUTING(是否改地址),然后路由。转发给FORWARD(转发或者丢弃),最后经过POSTROUTING(看看改不改地址。如NAT)
	
出站:
源自linux自身的流量。
先OUTPUT,然后路由。再给POSTROUTING(是否改IP)。

规则的应用顺序

ACL逐条匹配,匹配即停止。(除了LOG规则)
	进来一条流量,从第一条规则开始匹配。又进来一条规则,还是从第一条规则开始匹配。

编写防火墙规则

基本语法

iptables -t 表名 管理选项 [链名] [匹配条件] [-j 控制类型]

-t 表名		 :每个表都可用,不写默认fliter表。
管理选项 	 :操作方式如插入,删除,查看等。
链名		 :PREROUTING,POSTROUTING,INPUIT,OUTPUT,FORWARD
匹配条件		 :数据包特征IP,端口,协议等。
控制类型		 :数据包处理方式,ACCEPT允许,REJECT拒绝,DROP丢弃,
			   LOG日志(LOG不适用匹配即停止,记录后下一条)等。

添加新规则

-I:在链的开头(或指定序号)插入一条规则
-A:在练的末尾追加一条规则

iptables -I INPUT -p udp -j ACCEPT 
	#添加到第一行
iptables -I INPUT 2 -p icmp -j ACCEPT
	#(插入到第2行)第二行
iptables -t filter -A INPUT -p tcp -j ACCEPT
	#添加到最后一行

查看规则列表

-L:列出所有的规则条目
-n:以数字形式显示地址,端口信息
-v:以更详细的方式显示规则信息
iptables-save:完整列出防火墙的规则
--line-numbers:查看规则时,显示规则的序号(可以通过'-D INPUT 2'按序号删除规则)

iptables -L -n		#查看

删除、清空规则

-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则 
-X:清理自定义的链
-Z:清零规则序号

iptables -D INPUT 3		#删除第三行
iptables -F				#全清空(改不了默认)

设置默认策略

-P:为指定的链设置默认规则

iptables -t filter -P INPUT ACCEPT	
	#配入站链为允许(默认同意)
iptables -t filter -P INPUT DROP 
	#配入站为不理会(不知道为啥配置不了拒绝REJECT)

规则的匹配条件

1、协议&地址&物理接口

iptables -I INPUT -s 192.168.122.1 -j REJECT
	-s 192.168.122.1 : 指定地址
	-s 192.168.122.0/24 : 指定地址段
	-i ens33 : 指定网卡

2、隐含匹配–sport/–dport,需要协议的前提

iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT
	#允许22和23端口进
	-p tcp:  指定tcp协议
	-p tcp --dport 20:25  :指定一片端口
	-p tcp --sport 80	  :指定端口
		dport :目的端口
		sport :来源端口

iptables -I INPUT -i eth0 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP
	#tcp连接状态为 SYN,RST,ACK SYN 的包丢弃 
	-p tcp --tcp-flags SYN,RST :匹配指定TCP标记
		SYN( 同步; 表示开始会话请求 ), ACK(应答),
		FIN(结束; 结束会话),RST(复位;中断一个连接) 
    	PSH(推送; 数据包立即发送),URG(紧急 ), 
    	ALL(指选定所有的标记),NONE(指未选定任何标记)

iptables -A INPUT -p icmp --icmp-type 8 -j DROP
	#允许ping别人,不允许别ping自己
	-p icmp --icmp-type 8为ping 
		命令请求信号,ping别人可以,反之不行
	-p icmp --icmp-type 0为ping 
		命令响应信号,不能ping别人,别人可以ping自己

3.显示匹配(通过调用模块:lsmod | grep xt_ 来加载内核扩展模块,如端口匹配,IP范围,MAC地址,状态等特殊匹配)

多端口匹配
iptables -A INPUT -p tcp -m multiport --dport 80,20,21 -j  DROP
	-m multiport --dports	目的端口
	-m multiport --sports	来源端口
	#一次放行多个端口。更加自由

IP范围匹配
iptables -I INPUT -p tcp -m iprange --src-range 192.168.100.21-192.168.100.28 -j ACCEPT
	-m iprange --src-range
	#自定义IP范围

MAC地址匹配
iptables -I INPUT -m mac --mac-source 00:0C:29:64:E3:8D -j ACCEPT
	-m mac --mac-source
	#放一个MAC地址进来

TCP状态匹配
# iptables -I INPUT -p tcp -m multiport --dport 80 -j  ACCEPT
# iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT 
# iptables -P INPUT DROP
	-m state --state
	#根据iptables跟踪链接状态,来定义链接的3个状态new新,established相应,related已有

网络型


在这里插入图片描述

将iptables作为路由使用

开启路由装发功能:
echo "net.ipv4.ip_forward = 1">>/usr/lib/sysctl.d/50-default.conf (重启一下)

echo 1 > /proc/sys/net/ipv4/ip_forward

sysctl -a | grep ip_forward

SNAT(源地址转换)

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 192.168.200.10
	-t nat :NAT表
	-A POSTROUTING	:追加,已路由链
 	-s 192.168.100.0/24	:源地址
	-o ens33	:接口33,出方向
 	-j SNAT		:动作:源地址转换
	--to-source 192.168.200.10	:源地址转成200.10
	#将100网段已路由(要出去)的地址转换为200.10并从ens33出去

目的:内网访问外网,并得到数据
条件:外网地址已知
缺点:外网无法访问内网

MASQUERADE(地址伪装)

外网地址是什么就伪装成什么

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
	-t nat 
	-A POSTROUTING
	-s 192.168.100.0/24
	-o ens33 
	-j MASQUERADE

目的:内网上外网
条件:外网地址不固定
缺点:外网无法访问内网

DNAT(转换目标地址)

将路由器外网地址和内网地址捆绑

iptables -t nat -A PREROUTING -i ens33 -d 192.168.200.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10
	-t nat
	-A PREROUTING
	-i ens33
	-d 192.168.200.10 	:目标地址
	-p tcp --dport 80 	:目标端口
	-j DNAT
	--to-destination 192.168.100.10	:目标地址转换为

目的:使外网能访问内网——发布内网服务器
#外网访问路由器网关,由于路由器配了DNAT,所以目标地址转换为了路由规则所配置的内网地址

PNAT(端口映射)

P=port :端口

内网地址在映射到外网时换一个端口

iptables -t nat -A PREROUTING -i ens33 -d 192.168.200.10 -p tcp --dport  2345 -j DNAT --to-destination 192.168.100.10:22
	-t nat	:NAT表
	-A PREROUTING	:预路由链
	-i ens33	:接口33,入方向
	-d 192.168.200.10	:目的地址 200.10
	-p tcp --dport  2346	:指定端口2346
	-j DNAT 	:目标地址转换
	--to-destination 192.168.100.10:22	:转成目标地址100.10

目的:外网访问内网时还要添加指定端口,安全性提高
缺点:不便捷
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值