容易掌握的火墙管理( firewalld 和 iptables )

一、firewalld

1.什么是firewalld

动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
实际上它就是系统内核上的插件,系统提供了图像化的配置工具 firewall-config ,yum安装后即可使用

2.firewalld 简单管理命令

#首先我们了解一下firewalld 的域是什么
在这里插入图片描述

yum install firewall-confing     ##安装火墙图形管理软件(一般自带)
systemctl  start  firewalld      ##开启火墙,否则图形管理界面开启后全是灰色不能操作
firewall-config                  ##开启火墙的图形管理

在这里插入图片描述

firewall-cmd --state	         ##查看火墙的当前状态
firewall-cmd --get-active-zones  ##查看正在工作的域,用的是哪个就是哪个
firewall-cmd --get-default-zone  ##查看默认使用的域,与正在工作的域可以不同

在这里插入图片描述

firewall-cmd --get-zones       			  ##查看所有的域
firewall-cmd --zone=public --list-all     ##public域里的设置

在这里插入图片描述

firewall-cmd --list-all-zones 	 ##查看所有域的所有设置
firewall-cmd --get-services      ##所有支持可以直接添加使用的服务名称

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

firewall-cmd --set-default-zone=public  ##改变默认域

在这里插入图片描述

3.命令修改火墙参数(添加 --permanent 永久生效,不添加重启当前环境后设置失效)

#首先一台双网卡主机,配置两个网段ip,172.25.254.0/24 1.1.1.0/24 ,开启apache服务,但是防火墙没有允许此服务

firewall-cmd  --list--all        ##查看两个网卡默认在哪个域里

在这里插入图片描述
#测试:
在这里插入图片描述

firewall-cmd  --zone=trusted --add-source=172.25.254.21
##来源于21这台主机的数据直接通过trusted域访问
##--add-source=172.25.254.0/24   允许这个网段都走trusted域

在这里插入图片描述
测试:
在这里插入图片描述
#设定

firewall-cmd  --permanent  --zone=trusted  --remove-source=172.25.254.21
##永久取消21走trusted域的权限

firewall-cmd --reload               ##永久取消后需要重新读取火墙策略才会生效

firewall-cmd  --remove-interface=eth1 --zone=public
##将eth1网卡从public域里删除,本机的eth1的ip为1.1.1.121

firewall-cmd  --add-interface=eth1 --zone=trusted
##将eth1网卡加入到trusted域里

在这里插入图片描述
#测试:
测试机设定
在这里插入图片描述
在这里插入图片描述
#设定

firewall-cmd  --change-interface=eth1 --zone=public 
##直接将eth1网卡改变成走public域通道

firewall-cmd --list--all --zone=trusted      ##查看trusted域里的服务

在这里插入图片描述

小结:
1.1.1.221和eth1同一个网段,在eth1添加到trusted域后可以直接访问1.1.1.121的默认发布文件,eth0没添加依然不能访问

172.25.254.21在被添加到走trusted域后可以直接访问121
4.firewalld对服务的管理
firewall-cmd --permanent --zone=public --add-service=ssh  
##给指定域永久添加服务ssh
firewall-cmd --permanent --zone=public --add-port=8080/tcp
##添加端口要指定端口类型
firewall-cmd --reload 					##一般永久设置都要reload之后才能生效
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
##永久删除端口

在这里插入图片描述

firewall-cmd --permanent --zone=public --remove-service=ssh
##永久删除指定域里的服务ssh(不添加永久的话一reload就会重新读取文件,然后会恢复成原来没被删除的样子)
firewall-cmd --reload           
##重新读取火墙策略,不会中断别人正在使用的服务:如读取ssh服务被删除后,正在使用ssh服务的用户不受影响
firewall-cmd --complete-reload
##完全重新读取火墙策略,会中断别人正在使用的服务:如ssh

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

vim  /etc/firewalld/zones/public.xml
##直接修改文件后reload火墙策略也能生效,原来的文件内容会变成public.xml.old
cd /lib/firewalld/services/
##里面是服务运行所调用的函数文件,修改后需要重启服务生效

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

5.firewall里的Direct Rules

通过 firewall-cmd 工具 , 可以使用 --direct 选项在运行时间里增加或者移除链。如果不熟悉 iptables , 使用直接接口非常危险 , 因为您可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序 ,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.21 -p tcp --dport 22 -j ACCEPT
##21用ssh服务连接时使用这个特殊规则,其他的仍然使用默认域里的设置
##这个特殊规则允许21连接

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.21 -p tcp --dport 22 -j ACCEPT
##让除了21之外的所有用户走这个特殊规则

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

firewall-cmd --direct --add-rule ipv4 filter INPUT 1  -s 172.25.254.21 -p  tcp --dport 22 -j REJECT
##21会被这个特殊规则拒绝访问,客户端会提示没有权限

firewall-cmd --direct --add-rule ipv4 filter INPUT 1  -s 172.25.254.21 -p   tcp --dport 22 -j DROP
##21的访问会被这个特殊规则丢弃,但是客户端会一直访问且没有失败提示,这样会浪费资源

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

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1  -s 172.25.254.21 -p   tcp --dport 22 -j REJECT
##删除这个特殊规则,让它走默认域的通道

firewall-cmd --direct --get-all-rules 
##查看所有添加的direct规则

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

6.firewalld 的地址伪装和端口转发

#双网卡相当于一个路由来给1.1.1.221伪装和端口转发,1.1.1.221的网关是172.25.254.121
#通过地址伪装,1.1.1.221可以ping通172网段的用户,即在双网卡主机上把1网段伪装成了172网段来访问服务端

##双网卡服务端设置:

firewall-cmd --permanent --add-masquerade         
##开启伪装功能,给1.1.1.221设置网关后它可以连上172网段的主机,但是是以172.25.254.121的身份连接的

firewall-cmd --reload                ##重新读取火墙策略

sysctl -a | grep forward			 ##查看路由ip转发功能是否打开
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p

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

firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.221  --perman
##只要是访问这个双网卡的22端口,就把它转发到221上

firewall-cmd --reload         		##重新读取火墙策略 

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

二、iptables

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

在这里插入图片描述
##Iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的。

systemctl stop  firewalld                    ##关闭火墙
systemctl  start iptables					 ##开启iptables

在这里插入图片描述

service iptables save			##保存当前策略
vim /etc/sysconfig/iptables     
##iptables当前策略保存的文件,保存后刷新策略会刷掉所有内容,但是重启iptable服务后,会读取这个文件加载曾经保存的策略

iptables  -F					##刷掉表中的所有策略(清除所有策略),当没有用-t指定表名称时默认时filter
iptables  -nL                   ##查看表中的策略,不用-t指定默认为filter表

systemctl restart iptables      ##重启iptables服务
iptables  -nL  					##查看是否读取了上次文件中保存的策略

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

iptables -A INPUT -i lo -j ACCEPT				##允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT	##允许访问22端口
iptables -A INPUT -s 172.25.254.250 -j ACCEPT	##允许250主机访问本机所有端口

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

iptables -A INPUT -j REJECT 			##拒绝所有主机的数据来源,客户端会提示没有权限,DROP则客户端不能访问也没有提示

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

iptables -N redhat			##增加链redhat
iptables -E redhat westos	##改变链名称
iptables -X westos			##删除westos链

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

iptable -D INPUT 2									##删除INPUT链中的第二条策略
iptables -I INPUT  -p tcp --dport 80  -j REJECT		##插入策略到INPUT中的第一条
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT		##修改第一条策略
iptable -P INPUT DROP								##把INPUT表中的默认策略改为drop

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

2.iptables 下(地址)伪装和(端口)转发的实现(这个实验需要nat表的网络地址转换功能)
sysctl -a | grep forward                             	##查看路由ip转发功能是否打开
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p

在这里插入图片描述

iptables -t nat -A PREROUTING  -i eth0 -p tcp --dport 22 -j DNAT --to-dest  1.1.1.221:22

##路由前端口转发,连接172.25.254.12122端口会转到1.1.1.22122端口,客户端需要设置网关
##是先到双网卡172网段,再通过内核到双网卡的1网段,然后再到客户的1网段,所以路由前是eth0,即172网段

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

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.121

##路由后地址伪装,将1.1.1.221的地址伪装成172.25.254.121来访问172网段的ip
##客户1网段先访问双网卡的1网段,通过内核伪装成172网段到达其他主机,所以这里的路由后是eth0

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值