基于linux下firewalld防火墙的配置

一、firewalld的简述

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。

在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信
主要类型
(1)网络层防火墙
网络层防火墙可视为一种 IP 封包过滤器,运作在底层的TCP/IP协议堆栈上。我们可以以枚举的方式,只允许符合特定规则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。
(2)应用层防火墙
应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
(3)数据库防火墙
数据库防火墙是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。

二、使用命令来配置防火墙

(1)firewalld中常用的区域名称及策略规则

区域 默认规则策略


trusted :允许所有的数据包


home:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量


internal :等同于home区域


work : 拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量


public:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量


external:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量


dmz:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量


block :拒绝流入的流量,除非与流出的流量相关

扫描二维码关注公众号,回复: 2286954 查看本文章

drop:拒绝流入的流量,除非与流出的流量相关


(2)firewall-cmd 命令中使用的参数以及作用

[root@server ~]# systemctl start firewalld 
#打开防火墙
[root@server ~]# systemctl enable firewalld
#开机时自动重启防火墙
[root@server ~]# firewall-cmd --state
#查看防火墙的状态
[root@server ~]# firewall-cmd --get-active-zones
#显示当前正在使用的区域与网卡名称
[root@server ~]# firewall-cmd --get-default-zone
#查询默认的区域名称
[root@server ~]# firewall-cmd --zone=<区域名称> --list-all
#显示public区域的网卡配置参数、资源、端口以及服务等信息
[root@server ~]# firewall-cmd --list-all-zones
#显示所有区域的网卡配置参数、资源、端口以及服务等信息
[root@server ~]# firewall-cmd --list-all
#显示当前区域的网卡配置参数、资源、端口以及服务等信息
[root@server ~]# firewall-cmd  --set-default-zone=<区域名称> 
#设置默认的区域,使其永久生效
[root@server ~]# firewall-cmd  --get-zones
#显示可用的区域

操作截图

打开防火墙
这里写图片描述
显示防火墙的状态
这里写图片描述
显示正在运行的域的有关信息
这里写图片描述
查看防火墙的默认域
这里写图片描述
显示block区域的相关信息
这里写图片描述
显示防火墙的所有区域,并显示相关信息
这里写图片描述
显示默认域的相关信息
这里写图片描述
设定 默认区域为trusted
这里写图片描述
显示防火墙的区域有哪些
这里写图片描述
查看防火墙的服务有哪些
这里写图片描述

(3)添加ip到指定的区域

服务端

[root@server ~]# firewall-cmd  --add-source=172.25.254.60 --zone=trusted 
#将172.25.254.60导向指定的区域
#--add-source= 添加IP或子网的流量
#--zone= 指定区域
success
[root@server ~]# yum install httpd -y
#安装apache服务
[root@server ~]# systemctl start httpd
#打开apache服务
[root@server ~]# echo westos > /var/www/html/index.html
#在apache服务的默认目录下添加信息
[root@server ~]# firewall-cmd --add-source=172.25.254.118 --zone=trusted
#添加IP(172.25.254.118)到指定区域trusted
#--add-source= 添加IP或子网的流量
#--zone= 指定区域
success

客户端

通过 httpd 服务进行测试

[root@client ~]# yum install elinks -y 
#安装elinks服务
[root@client ~]# elinks http://172.25.254.218
#http服务进行测试

实例

@服务端
(1)添加IP(172.25.254.118)到指定的区域
这里写图片描述
(2)显示trusted区域的相关信息(接口,资源,服务等相关信息)
这里写图片描述
(3)安装apache服务的安装包
这里写图片描述
这里写图片描述
(4)打开apache服务
这里写图片描述
(5)在apache服务的默认发布目录下的默认发布文件中输入westos信息
这里写图片描述
@客户端
(1)安装elinks服务
这里写图片描述
(2)通过http服务进行测试
这里写图片描述
访问成功
这里写图片描述
在某个区域中添加IP,错误,访问本机(172.25.254.218)服务失败
这里写图片描述

[root@server ~]# firewall-cmd --add-port=8080/tcp --zone=public
success

在172.25.254.118这台主机上进行测试
这里写图片描述
这里写图片描述
在172.25.254.60这台主机上进行测试
这里写图片描述
这里写图片描述

(4)移除指定区域的IP

[root@server ~]# firewall-cmd --remove-source=172.25.254.118 --zone=trusted
#移除trusted区域的IP(172.25.254.118)
#--remove-source= 移除IP
success
[root@server ~]# firewall-cmd --zone=trusted --list-all
#查询trusted区域的相关信息
#由下面的信息可以看出移除成功
trusted
  interfaces: 
  sources: 
  services: 
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 


(4)永久添加或删除ssh服务

永久删除ssh服务

[root@server ~]# firewall-cmd  --permanent  --remove-service=ssh
#永久移除ssh服务
#--permanent 永久
#--remove-service= 移除某个服务
success
[root@server ~]# firewall-cmd  --reload
#重新加载防火墙服务
success
[root@server ~]# firewall-cmd  --list-all
#查看ssh服务是否删除,由下图可以看出ssh服务已经删除
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

在真机器进行测试
这里写图片描述

永久添加ssh服务

[root@server ~]# firewall-cmd  --permanent  --add-service=ssh
#永久添加ssh服务
#--permanent 永久添加
#--add-service= 添加某个服务
success
[root@server ~]# firewall-cmd  --reload
#重新加载防火墙
success
[root@server ~]# firewall-cmd  --list-all
#查看ssh服务是否已经添加
#由下图可以看出service这一栏当中,有ssh这个服务
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

在真机中进行测试
这里写图片描述

firewall-cmd –complete-reload 和firewall-cmd –reload的区别
firewall-cmd –complete-reload 已经连接的会断开
firewall-cmd –reload 连接的不会断开

(5)网络接口控制

[root@server ~]# firewall-cmd --list-interfaces
#显示网络接口信息
eth0
[root@server ~]# firewall-cmd --get-zone-of-interface=eth0
#显示eth0接口的域名
#--get-zone-of-interface= 显示某个接口所在的区域
public
[root@server ~]# firewall-cmd --change-interface=eth0 --zone=trusted
#修改区域为trusted的网络接口eth0
#--change-interface= 修改某个区域所在的接口
success
[root@server ~]# firewall-cmd --remove-interface=eth0 --zone=trusted
#移除trusted区域的接口eth0
#--remove-interface= 移除某个接口
success
[root@server ~]# firewall-cmd --add-interface=eth0 --zone=public
#添加public区域的接口eth0
#--add-interface= 添加接口信息
success

若想要永久添加网络接口,必须添加–permanent,并且重新加载,这样执行的命令才可以生效

 [root@server ~]# firewalld-cmd --permanent --命令
 #永久修改信息,在命令前添加 --permanent
 [root@server ~]# firewall-cmd --reload
 #刷新防火墙的配置

(6)将http服务添加或删除到防火墙策略

打开防火墙,并永久添加http服务,在网页访问测试

[root@client~]# yum install httpd -y 
#安装httpd服务
[root@client ~]# systemctl start httpd 
#打开apache服务
[root@client ~]# systemctl start firewalld 
#打开防火墙
[root@client ~]# firewall-cmd --permanent --add-service=http
 #永久添加http服务,此时应该注意的是永久添加时需要进行重新加载
 #--permanent 永久
 #--add-service= 添加某个服务
success
[root@client ~]# firewall-cmd  --reload  
#重新刷新防火墙的配置
success
[root@client ~]# firewall-cmd --list-all 
#查看防火墙的相关信息
#由下面的信息可以看出,服务这一栏里有http服务
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client http ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

此时在172.25.254.60这台主机上进行测试
这里写图片描述
在172.25.254.218这台主机上进行测试
这里写图片描述

[root@client ~]# firewall-cmd --permanent --remove-service=http
#移除http服务
#--remove-service= 移除某个服务
success
[root@client ~]# firewall-cmd  --reload  
#重新刷新防火墙的配置
[root@client ~]# firewall-cmd  --direct  --add-rule  ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.118 -j ACCEPT
#只允许172.25.254.118这台主机进行访问
#--add-rule 添加某个规则
# filter: iptables 的 filter 表
#  INPUT: INPUT 链
#  ipv4: 互联网协议 
# -p: 协议
#  -dport: 目的地端口
#   -s: 数据来源
#  -j: 参数   ACCEPT 允许
              REFECT 直接拒绝,有回应
              DROP   直接丢弃,无回复
success
[root@client ~]# firewall-cmd  --direct  --get-all-rules 
#查看规则
ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.118 -j ACCEPT

在172.25.254.60这台主机上进行测试

这里写图片描述
在172.25.254.118这台主机上进行测试
这里写图片描述

(7)端口转发

端口转发的目的:当我们在真机里登陆172.25.254.218这台主机,进行伪装后,当通过 22 端口访问本机时,将请求转发到 172.25.254.118这台 主机上,同时还要开启 masquerade转发接口

[root@server ~]# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.118
#添加端口22并通过tcp协议,转发到172.25.254.118这台主机的22端口
# --add-forward-port= 添加端口
# proto=tcp 通过tcp协议进行转发
# toport= 转发到某个端口
# toaddr= 转发到172.25.254.118这台主机上
[root@server ~]# firewall-cmd  --add-masquerade
#打开转发端口

实例

@服务端
(1)添加端口22并通过tcp协议,转发到172.25.254.118这台主机的22端口
这里写图片描述
(2)添加转发端口
这里写图片描述
(3)防火墙的相关信息
这里写图片描述
在真机里进行测试
(1)远程登陆172.25.254.218这台主机
这里写图片描述
登陆172.25.254.218这台主机时,查看这台主机IP时,可以看到客户端的IP(172.25.254.118)
这里写图片描述

(8)地址伪装

1、基本配置
(1)server这台主机作为转换服务器;
(2)desktop这台主机作为局域网内的主机;
(3)真机这台主机作为外网的主机;
2、基本原理:局域网内的主机访问外网主机时,为了隐藏局域网中的私有地址,通过转换服务器进行地址的转换,并在局域网的主机里添加网关(路由器),当外网主机查询时只能看到共有地址,这就是地址转换;
3、具体操作
转换服务器

(1)添加两个网卡,eth0,eth1;
(2)配置网络,eth0设置为公共地址(172.25.254.218),eth1设置为私有地址(192.168.1.218),重启网络后,才可以生效
(3)打开转发端口:firewall-cmd –add-masquerade
(4)编辑配置文件,开启内核路由功能sysctl -p ( net.ipv4.ip_forward=1),配置文件为/etc/sysctl.conf

局域网内的主机

(1)设置局域网内的主机ip(192.168.1.118)和网关GATEWAY(192.168.1.218),重启网络后生效
(2)登陆外网主机 ssh [email protected]

外网主机

查看谁登陆过这台主机:w -i

示例

服务器(server)

(1)编辑网络配置文件eth0
这里写图片描述
编辑网络配置文件的内容如下
这里写图片描述
(2)编辑网络配置文件eth1
这里写图片描述
网络配置文件的内容如下
这里写图片描述
(3)重启网络:systemctl restart network
这里写图片描述
(4)查看ip
这里写图片描述
(5)查看默认区域public的相关信息
这里写图片描述
(6)打开转发端口
这里写图片描述
(7)查看masquerade端口是否打开,由下图masquerade这一栏的yes可以看出转发端口已经打开
这里写图片描述
(8)打开内核
这里写图片描述
编辑内核配置文件的内容如下
这里写图片描述
(9)重启内核
这里写图片描述

局域网主机

(1)编辑网络配置文件:设置ip和网关
这里写图片描述
配置网络配置文件的内容
这里写图片描述
(2)重启网络
这里写图片描述
(3)查看ip是否已经配置
这里写图片描述
(4)查看网关信息
这里写图片描述
(5)网络测试
相同网段的主机之间的网络测试
这里写图片描述
同在一个局域网不同网段的主机进行网络测试
这里写图片描述
测试外网主机的网络是否通畅
这里写图片描述
(6)登陆外网的主机
这里写图片描述

外网主机

查看谁登陆过这台主机
这里写图片描述

猜你喜欢

转载自blog.csdn.net/dhjibk/article/details/80558248