当前位置:   article > 正文

linux中防火墙管理——firewalld、iptables_firewalld 临时策略

firewalld 临时策略

防火墙

  • 防火墙也称防护墙,是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系统的第一道防线,其作用是防止非法用户的进入。
  • 在网络中,所谓“防火墙”,是指一种将内部网和公众访问网分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外。
  • netfilter是内核防火墙框架,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换等。
  • 系统提提供两种管理工具,对防火墙策略进行管理(对netfilter中的数据进行修改)。firewlld以及iptables。
filrewalld
  • 动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” ,以分配对一个网络及其相关链接和界面一定程度的信任。
  • firewalld 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里
  • firewalld提供图形界面管理(firewall-config)以及命令管理(firewall-cmd)

firewalld域(zones)
基于用户对网络所给与的信任程度,防火墙可以将网络分割成不同的9个区域 。

在这里插入图片描述

firewall-config

firewall-config #进入图形界面设置防火墙策略

1 Runtime 设置临时策略,当即生效,但是系统重启或者重新加载防火墙设配置后失效
在这里插入图片描述
2 Permanent 永久设置,设置完成后需要重新加载防火墙配置,一旦设定永久生效
在这里插入图片描述

firewall-cmd
1、开启firewalld服务

为了避免firewlld和iptables产生冲突,再进行实验时候,先关闭iptables,开启firewalld。
systemctl stop iptables #关闭iptables服务
systemctl mask iptables.service #锁定iptables服务
systemctl disable iptables #设置iptables开机不自启动
systemctl start firewalld #启动firewalld服务
systemctl enable firewalld #设置firewalld开机自启动
systemctl status firewalld.service # 查看firewalld 服务状态
在这里插入图片描述

2、域的查看和设置

firewall-cmd --get-zones #查看所有的域
firewall-cmd --get-default-zone #查看默认的域
firewall-cmd --set-default-zone=trusted #设置默认的域
firewall-cmd --state #查看防火墙状态,开启为running 关闭为 not running。
在这里插入图片描述

3 、查看域的防火墙策略

firewall-cmd --list-all #查看默认域的所有防火墙策略,没有指定域就是查看默认域
firewall-cmd --list-all --zone=trusted # 查看指定域的所有防火墙策略
firewall-cmd --list-services --zone=public #查看指定域的某一项策略(services)
firewall-cmd --list-ports --zone=public # 查看指定域的某一项策略(ports)
firewall-cmd --list-all-zones # 查看所有域的所有防火墙策略
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
firewall-cmd --get-services # 查看防火强可以添加的所有的服务

在这里插入图片描述

4、防火墙策略设置示例
1)添加服务

firewall-cmd --add-service=ftp #临时添加ftp服务到默认域,立即生效
firewall-cmd --add-service=http --permanent #永久添加http服务到默认域,加载后生效
在这里插入图片描述
firewall-cmd --reload #重新加载配置,临时添加的服务失效,永久添加的服务生效。
在这里插入图片描述

2)添加端口

firewall-cmd --add-port=8080/tcp #添加端口8080/tcp到默认域
firewall-cmd --add-port=5423/tcp --permanent #永久添加端口5423/tcp到默认域
firewall-cmd --reload # 重新加载防火墙配置
在这里插入图片描述
在这里插入图片描述

3)添加/移除网络接口以及改变网络接口的域

实验需要虚拟机添加两块网卡eth0 以及 eth1
ifconfig eth0 #查看网卡eth0的ip
ifconfig eth1 # 查看网卡eth1 的ip
firewall-cmd --list-all #查看默认域的策略 eth0以及eth1 都在默认域中
在这里插入图片描述
在这里插入图片描述

firewall-cmd --remove-interface=eth1 --zone=public #将接口eth1 从默认域中移出
firewall-cmd --add-interface=eth1 --zone=block # 将接口 eth1 添加到指定的block域
在这里插入图片描述
测试:使用统一网段的主机 可以成功和eth0 通讯,无法和 eth1 进行通讯。
在这里插入图片描述

firewall-cmd --change-interface=eth1 --zone=public # 修改网络接口的域

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

4)添加/移除指定ip通过指定的域访问系统

目前防火墙默认的域为public 但是该域中允许的服务没有ssh
使用主机 172.25.47.250 无法通过ssh服务连接到该主机
在这里插入图片描述
在这里插入图片描述

firewall-cmd --add-source=172.25.47.250/24 --zone=trusted # 将固定ip添加到trusted域中
该主机通过该该域的策略可以成功的连接系统。
在这里插入图片描述
在这里插入图片描述

5)重新加载防火墙配置

firewall-cmd --reload # 重新加载防火墙配置,对于加载以后失效的但是正在使用的策略,仍旧可以使用
firewall-cmd --complete-reload #重新加载防火墙配置,对于加载以后失效的但是正在使用的策略会中断服务。

6)firewalld 策略存储文件

/etc/firewalld/zones/ #有关域的策略都存储在该目录下的xml文件中
在这里插入图片描述
/usr/lib/firewalld/services/ # 有关服务的策略设置都存储在该目录下的xml文件中。
在这里插入图片描述
修改文件中的内容,同样可以起到修改防火墙策略的作用。

7)端口转换

在访问本机的某一端口的时候,自动转换到去访问另一个端口。
示例:访问5423端口的时候,自端转换到80端口。
firewall-cmd --add-forward-port=port=5423:proto=tcp:toport=80 #将访问本机5423端口自动转换成访问本机的80端口。
在这里插入图片描述
在这里插入图片描述

8) 地址伪装

实验环境:
客户主机:ip 8.8.8.8/24 网关8.8.8.10/24
路由器主机:ip1 172.25.47.204/24 ip2 8.8.8.10/24
目标主机:ip 172.25.47.250/24

设置路由主机防火墙策略:
打开地址伪装功能,开启路由转发功能
在这里插入图片描述

使用客户主机 8.8.8.8 直接连接目标主机 172.25.47.250 连接成功 ,并且在目标主机上查看登陆的主机ip为 172.25.47.204 。成功客户主机不在同一个网段的ip进行了伪装。
在这里插入图片描述

9)端口转发

由于上面所说的,目标主机认为连接自己的主机为172.25.47.204,并不知道客户主机的存在,所以需要返回数据的时候,会直接数据包发送给172.25.47.204 主机。但是该数据包本来应该是给客户主机8.8.8.8的。
需要设置端口转发,将目标主机访问 172.25.47.204 主机的 端口时候 自动转发到访问客户主机的相应端口。

没有设置的时候 目标主机只能连接到 172.25.47.204
在这里插入图片描述
充当路由器的主机进行端口转发设置
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=8.8.8.8 #设置将方位本机22端口的数据包全部转发到8.8.8.8主机的22端口。
在这里插入图片描述
再次使用目标主机连接 172.25.47.204 可以被成功转发到8.8.8.8 主机上去
在这里插入图片描述

5、firewalld高级规则

filter 表:一般的过滤功能,对发送给本机的数据进行过滤处理。
该表中存在三条链:
INPUT :通过路由之后数据包目的地为为本机。
FORWARD :通过路由表之后数据包目的地不为本机。
OUTPUT :由本机产生的,向外进行转发。
nat 表 :用于nat功能(端口转换,地址伪装等)
该表中存在四条链:
INPUT :数据包进入本机,但是目的地不为本机。
PREROUTING :数据包进入路由表之前
POSTOUTING :数据包进入路由表之后,发送到网卡接口之前
OUTPUT :不由本机产生,向外进行转发。
mangle 表 : 备用表

设置filter表策略

使用设置filter表对数据包进行筛选限制,一般在INPUT 链上进行设置,直接对进入本机的数据包权限进行设置。

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.47.250 -j ACCEPT # 添加高级规则到 filter 表 INPUT 链 的第一条 允许 ip 172.25.47.250 主机访问22 端口。
首先查看高级规则,对高级规则中存在的设置,按照高级规则进行执行,对于没有在高级规则中进行设定的,按照默认策略进行。
下图中默认域允许ssh服务 并且高级规则中允许特定的ip访问22端口,造成的结果就是所有的主机都可以通ssh服务的22端口连接该主机。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以在默认域中取消允许ssh服务 只在高级规则中指定特定ip主机可以访问22端口,做到只允许特定的主机使用ssh服务对本机进行连接
在这里插入图片描述
在这里插入图片描述
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.47.250 -j ACCEPT # 移除一条高级规则,该规则之中限制的主机,将会按照默认域的策略进行
在这里插入图片描述
在这里插入图片描述
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 ! -s 172.25.47.250 -j ACCEPT #添加高级规则到 filter 表 INPUT 链 的第一条 允许除过 ip 172.25.47.250 之外的所有主机访问22 端口。
在这里插入图片描述
在这里插入图片描述

iptables

使用iptables可以对 filter 表 nat 表 中对应链上的规则进行查看 增加 修改 删除等操作。
iptables命令常用的参数详解

iptable 
	-t	##指定表的名称 
	-n	##不做解析,默认作解析
	-L	##列出指定表格的策略
	-A	##增加策略
	-p	##网络协议
	--dport ##端口
	-s	##数据来源
	-j	##动作
	ACCEPT	##允许
	REJECT  ##拒绝
	DROP	##丢弃
	-N	##增加链
	-E	##修改链的名称
	-X	##删除链
	-D	##删除指定策略
	-I	##插入
	-R	##修改策略
	-P	##修改默认策略
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
1、开启iptables

systemctl unmask iptables.service # 解锁iptables服务
systemctl start iptables.service # 开启iptables服务
systemctl enable iptables.service #设置服务开机自动启动
systemctl status iptables.service # 查看iptables状态 显示开启
systemctl status firewalld.service # 开启iptables之后 firewlld 自动关闭。
在这里插入图片描述

2、查看规则以及保存规则

iptables -t filter -L # 查看filter 表中的规则 -t 指定表 -L 查看规则
iptables -t filter -nL # 带地址解析查看filter 表中的规则 -n 带解析
会显示表中包含的所有链上的规则。
在这里插入图片描述
在这里插入图片描述

iptables -t filter -F # 清除filter 表中的所有规则。 -F 清除
在这里插入图片描述

保存规则 :
iptables-save # 保存规则
iptables-save > /iptables # 将保存的规则保存在指定的文件
service iptables save # 将保存的规则 保存在默认的文件 /etc/sysconfig/iptables

注意: 以上保存的规则 内容全部都是一致的
在这里插入图片描述

3、设置规则(添加 删除 修改)

1 添加规则
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT # 允许22 端口访问
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP # 对22端口访问不与回应
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT # 拒绝22端口访问

添加的规则按照先后顺序排列,当对同一个目标添加多条规则之后,按照最靠前的规则进行执行,后面的将会无效,以上三条中ACCEPT 生效。
在这里插入图片描述

2 插入规则
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT # -I 插入 默认插入到第一条规则
iptables -t filter -I INPUT 3 -p tcp --dport 80 -j REJECT # 指定插入到第三条规则
在这里插入图片描述

3 设置表中的链
iptables -N toto # 增加新的链 toto
iptables -E toto TOTO # 修改toto 链的名称为 TOTO
iptables -X TOTO # 删除表中的链 TOTO
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

iptables -P INPUT DROP # 修改默认链的状态
iptables -P INPUT ACCEPT # 修改默认链的状态

注意 : 只能修改成 DROP 或者 ACCEPT

在这里插入图片描述

4 删除以及修改某一个链中的规则
iptables -R INPUT 1 -p tcp --dport 80 -j DROP # -R 修改
iptables -D INPUT 1 # -D 删除

5 设置 只允许特定的首次访问以及已经访问过本机的可以再次访问

     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 -j REJECT
  • 1
  • 2
  • 3
  • 4

第一条:允许状态为之前访问过的或者正在访问的可以连接本主机
第二条:允许访问本机数据回环接口的新连接
第三条:允许访问本机22端口的新连接
第四条:剩余所有新的访问均拒绝。

一个新的访问80端口被拒绝:
在这里插入图片描述

4、地址转换

实验环境:
客户主机:ip 8.8.8.8/24 网关8.8.8.10/24
路由器主机:ip1 172.25.47.204/24 ip2 8.8.8.10/24
目标主机:ip 172.25.47.250/24

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.47.204
#在经过路由之后将输出到eth0的数据包ip转换成172.25.47.204
  • 1
  • 2

在这里插入图片描述

使用客户主机 8.8.8.8 直接连接目标主机 172.25.47.250 连接成功 ,并且在目标主机上查看登陆的主机ip为 172.25.47.204 。成功将客户主机不在同一个网段的ip进行了伪装
在这里插入图片描述

5、目的地地址转换
iptables -t nat -A PREROUTING  -i eth0 -j DNAT -p tcp --dport 22 --to-dest 8.8.8.8
#将从eth0进入本机的数据包在路由之前转发到ip8.8.8.8 的主机
  • 1
  • 2

在这里插入图片描述
使用目标主机连接 172.25.47.204 可以被成功转发到8.8.8.8 主机上去
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/184250
推荐阅读
相关标签
  

闽ICP备14008679号