linux的火墙策略优化

linux的火墙策略优化

实验环境

三台主机, 一个双网卡 ,两个单网卡
双网卡主机设定两个网段,192.168.43.100(和windows一个网段),172.25.254.100
单网卡主机 172.25.254.200
单网卡主机 192.168.43.79

数据库管理原理

iptables用来管理netfilter这个包,netfilter是内核上面数据过滤的一个插件。
iptables{firewalld iptables}两种控制方式。
企业七之前没有firewalld
iptables更趋近于对表格的管理,会精确到表得到每一条连接

火墙管理方式的切换

  • 从firewall切换到iptables

     dnf install iptables-services -y
     systemctl stop firewalld
     systemctl disable firewalld 
     systemctl    mask firewalld
    
     systemctl  enable   --now  iptables      ##此时就已经切换到iptables管理
     iptables -nL用来查看
    

在这里插入图片描述
在这里插入图片描述

  • 从iptables切换到firewall
    systemctl stop iptables
    systemctl disable --now iptables
    systemctl mask iptables
    systemctl unmask firewalld
    systemctl enable --now firewalld

在这里插入图片描述

关于firewalld的域

trusted 			##接受所有的网络连接
home  				##用于家庭网络,允许接受ssh mdns ipp-client samba-client  dhcp-client
work  				##工作网络  ssh  ipp-client dhcp-client
public  			##公共网络  ssh  dhcp-client
dmz  				##军级网络  ssh
block  				##拒绝所有
drop  				##丢弃,所有数据全部丢弃无任何回复
internal  			##内部网络  ssh madn  ipp-client samba-client dhcp-client
external  			##ipv4网络地址伪装转发 sshd

firewalld的管理方式

firewalld用域来进行管理,域就是管理的集合,在/etc/firewalld/zones中有文件,删掉这些文件相当于使用了命令进行了管理删除
把域设定成不同的样子,能访问的也不同

firewall-cmd --state  							##查看火墙状态
firewall-cmd --get-default-zone  				##查看默认域
firewall-cmd --get-active-zone 					##查看当前火墙中生效的域
firewall-cmd  --list-all  						##查看默认域中的火墙策略
firewall-cmd --list-all  --zone=work  			##查看指定域中的火墙策略
firewall-cmd --list-all-zones 					##列出所有域的信息
firewall-cmd --get-zones	 					##查看可以用的域
firewall-cmd --set-default-zone=trusted			##设定默认域,改了就生效,而且是永久的。但是在/etc/firewalld/zones中并没有显示出来。
firewall-cmd --permanent --add-service=ssh		##当我们添加一个设备的时候才会出现文件。实际上在我们更改域的时候,他是在/lib/firewalld中进行变化的。

--permanent的意思就是永久更改,并且保存在/etc/firewalld/zones中。

firewall-cmd --get-services						##查看所有允许的服务
firewall-cmd  --add-service=http				##改了就生效,在浏览器可以访问生效,但是这是一次性的
firewall-cmd --reload    ##输入此命令之后,上述修改就会消失
firewall-cmd  --permanent   --add-service=http	##使用此命令进行永久修改,修改之后需要进行reload
firewall-cmd --reload            				 ##输入此命令让上述命令生效
firewall-cmd  --permanent --remove-service=http   ##移除服务

端口:
vim /etc/httpd/conf/httpd.conf
8080
systemctl restart httpd
netstat -antlupe | grep httpd
firewall-cmd  --permanent --add-service=http       ##开启了httpd服务,但是在/lib/firewalld/services/http.xml中默认的端口是80
firewall-cmd   --reload
firewall-cmd  --list-all				##此时在浏览器访问是不能访问到的
firewall-cmd  --permanent --add-port=8080/tcp
firewall-cmd   --reload
firewall-cmd  --list-all				##此时在浏览器中可以访问到
firewall-cmd  --permanent --remove-port=8080/tcp   ##取消这个端口


firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block   
firewall-cmd   --reload
firewall-cmd  --list-all --zone=block
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block

firewall-cmd  --permanent  --remove-interface=ens192 --zone=public
firewall-cmd  --permanent  --add-interface=ens192 --zone=trusted
 firewall-cmd   --reload
 firewall-cmd  --list-all
 firewall-cmd  --list-all  --zone=trusted

firewall-cmd  --permanent  --change-interface=ens192 --zone=public  ##一次性修改,不用先移除。

在这里插入图片描述

在这里插入图片描述##火墙打开了,这些服务都保存在/etc/firewalld/zones这个目录中

在这里插入图片描述
在这里插入图片描述
##查看可用的域

在这里插入图片描述

在这里插入图片描述
##部署实验内容
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

火墙的三张表五条链及高级规则

某一个服务,只让某一个人不能访问,或者只能让某一个人访问。
火墙的内部规则,有三张表五条链。
在这里插入图片描述
在这里插入图片描述

  • 高级规则

     firewall-cmd --direct --permanent   --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 192.168.43.200 -j REJEC
      					 ##不允许ip为192.168.43.200的这个主机访问端口为80的服务
     firewall-cmd   --reload
     firewall-cmd  --direct --get-all-rules    ##查看规则
    

    snat 172.25.254.0/24网段访问192.168.43.0/24
    dnat 192.168.43.0/24网段访问172.25.254.0/24

    原地址转换:
    在双网卡主机中:
    打开地址伪装:

     firewall-cmd  --permanent  --add-masquerade
     firewall-cmd   --reload
     firewall-cmd   --list-all
    

    打开内核路由功能:

     sysctl -a | grep ip_forward       ##如果是1,就表示已经打开,如果没开表示这个双网卡不在一个网段,是不能通信的,这个要可以通信依赖于一个内核路由功能
     	
     vim  /etc/sysctl.conf				##如果是0,就编辑这个而文件为1
     sysctl -p  让其生效
    

    网关就是在双网卡中和单网卡属于同一个网段的ip。如果是172.25.254.9到192.168.43.200,我们就应该在192中设定网关192.168.43.100:

     route -n  ##查看网关
     ip  route  add default via 192.168.43.100   ##临时添加网关,网卡重新启动,就会不见。
    

    此时设定完成,在192单主机中。ping 172.25.254.9的单网卡主机,可以ping通,且可以连接ssh这个172.25.254.9
    切换到172.25.254.9可以用w - i 查看是谁连接了他,此时 发现是172.25.254.100.

    目的地地址转换:
    此时使用ssh @root172.25.254.100,发现真的连接到了172.25.254.100,但是我们需要转接到192.168.43.200,172.25.254.100只是有一个转接的作用,这就是目的地地址转换:

     firewall-cmd --permanent  --add-forward-port=proto=tcp:port=22:toport=22:toaddr=192.168.43.200
     firewall-cmd --reload
     firewall-cmd --list-all
    

    此时在172.25.254.9上ssh root@172.25.254.100 发现连接到了192.168.43.200

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

iptables命令的基本使用方法

systenctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
systemctl enable iptables.service

 /etc/sysconfig/iptables   			##这个是他的策略文件

iptables -nL  					    ##查看,n表示不做解析
iptables -F							##刷新
systemctl restart iptables.service  ##重启
iptables  -nL						##查看,发现没有保存之前的火墙策略。 
iptables-save > /etc/sysconfig/iptables
service iptables save 	 			##刷新之后,可以用这两种保存的方式,保存下来。

默认策略的5条链:
input   		##输入
output  		##输出
forward 		##转发
postrouting  	##路由之后
prerouting  	##路由之前

 默认的3张表:
 filter  		##经过本机内核的数据(input,output,forward)
 nat  			##不经过内核的数据(input,output,postrouting,prerouting)
 mangle  		##当上面的两个表不够用的时候使用

iptable命令
iptables
		 -t   ##指定表的名称
		 -n   ##不做解析
		 -L	  ##查看
		 -A   ##添加策略
 		 -p   ##协议
         --dport  ##目的地端口
		 -s   ##来源
		 -j   ##动作 
			# ACCEPT允许
			#DROP丢弃
			#REJECT拒绝
			#SNAT原地址转换
			#DNAT目的地址转换
	  	-N 			##新建链
		-E 			#更改链名称
		-X 			##删除链
		-D			##删除规则
		-I 			##插入规则
		-R 			##更改规则
		-P  		##更改默认规则

iptables -t filter -nL
iptables -t mangle -nL
iptables -t nat -nL

iptables -A INPUT -p tcp  --dport 22 -j ACCEPT				 ##22端口的服务被允许
iptables -I INPUT 1 -p tcp --dport 22 -s 172.25.254.200  -j  REJECT	
															 ##将这个命令插入到第一条,表示200这个用户不能使用这个命令。
iptables -D INPUT 2
iptables -R INPUT 1 -p tcp --dport 22 -s 172.25.254.200  -j DROP  ## 这个状态不能用ssh连接,数据包丢失了
iptables -R INPUT 1 -p tcp --dport 22 -s 192.168.43.222  -j REJECT
iptables -N westo新建链接
iptables -E westo westos更改
iptables -X westos删除
iptables -P INPUT DROP更改策略,一般都是ACCEPT
iptables -P INPUT ACCEPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

iptables中数据包状态的跟踪

数据包的状态:
RELATED表示已经连接过,,ESTABLISHED表示正在连接,new表示新的
火墙的优化:

iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -j  REJECT
iptables-save > /etc/sysconfig/iptables
service iptables save   

在这里插入图片描述
在192.168.43.200中ping 172.25.254.9发现不通,网关已经设定,不通的原因就是双网卡主机的火墙策略没有设定,此时nat,forwart表都是空的
在双网卡之中开启内核功能,之前也已经做过。如果要让192.168.43.200可以Ping172.25.254.9,应该设定一下nat 中的postrouting ,路由之后

iptables -t nat -A POSTROUTING -o ens160 -j SNAT  --to-source 172.25.254.100

ens160表示 从双网卡的172网段出去的网卡名字。所有从ens160这个网卡出去的都吧地址伪装成172.25.254.100
IPtables -t nat -nL
此时在192.168.43.200中ping 172.25.254.9可以ping通
此时在192.200中ssh root @172.25.254.9连接
切换到172.25.254.9中使用w-i查看,是172.25.254.100连接过来的。
此时需要在172.9中连接172.100的时候连接到192.200
这就是dnat

iptable -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 192.168.43.200

##从172.100这个的网卡 进来的都转换到192.200

iptable -t nat -A PREROUTING  ! -s 172.25.254.9 -i ens160 -j DNAT --to-dest 192.168.43.200

##除了172.25.254.9这个ip,其他的从172.100这个的网卡 进来的都转换到192.200
此时在9中ssh root@172.25.254.100

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值