CentOS 7 Firewalld防火墙配置

https://www.cnblogs.com/xiluhua/p/5929222.html

https://www.cnblogs.com/xxoome/p/7115614.html

https://www.linuxidc.com/Linux/2018-11/155155.htm

https://www.cnblogs.com/zqifa/p/linux-firewall-1.html

https://blog.csdn.net/dhjibk/article/details/80558248

http://lxgyw.cn/@@@/15216870315478.html

 

一、介绍

防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别

drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接

二、安装

# yum install firewalld
如果需要图形界面的话,则再安装
# yum install firewall-config

 

三、查看firewall服务状态

  systemctl status firewalld
  firewall-cmd --state

  firewall-cmd --set-default-zone=public #设置默认接口区域

四、开启、重启、关闭、firewalld.service服务

# 开启
service firewalld start
systemctl start firewalld.service
systemctl enable firewalld.service   #开启firewall开机启动 (设置开机自启)
# 重启
service firewalld restart
systemctl restart firewalld.service
firewall-cmd --reload   #重启防火墙(修改配置后要重启防火墙)
# 关闭
service firewalld stop
systemctl stop firewalld.service
systemctl disable firewalld.service   #禁止firewall开机启动

五、查看防火墙规则

firewall-cmd --list-all   
netstat -ntlp 或:firewall-cmd --list-ports  #查看开放端口

systemctl list-unit-files | grep enabled   #查看已启动的服务列表
systemctl --failed    #查看启动失败的服务列表

firewall-cmd --version    #查看版本:
firewall-cmd --help       #查看帮助:
firewall-cmd --zone=public --list-ports  #查看所有打开的端口

firewall-cmd --zome=dmz --list-ports  #列出 dmz 级别的被允许的进入端口
firewall-cmd --zone=work --add-service=smtp  #添加 smtp 服务至 work zone
firewall-cmd --get-zone-of-interface=eth0    #显示eth0接口属于的域

六、查看防火墙设置开机自启是否成功:

systemctl is-enabled firewalld.service

firewall-cmd --get-active-zones   #显示当前正在使用的区域与网卡名称
firewall-cmd --get-default-zone   #查询默认的区域名称
firewall-cmd  --get-zones         #显示可用的区域

七、开启特定端口

开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
开放端口区间:firewall-cmd --permanent --zone=public --add-port=8080-9999/tcp   #永久
重启防火墙:systemctl restart firewalld.service   #重启后才能生效
更新防火墙规则:firewall-cmd --reload
firewall-cmd --complete-reload    # 更新规则,重启服务

命令含义:
--zone #作用域
--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
--permanent   #永久生效,没有此参数重启后失效

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

firewall-cmd --zone=public --add-interface=eth0 --permanent #添加某接口至某信任等级,譬如添加 eth0 至 public,再永久生效
firewall-cmd --set-default-zone=public   #设置 public 为默认的信任级别

八、端口转发

要打开端口转发,则需要先
# firewall-cmd --zone=external --add-masquerade

然后转发 tcp 22 端口至 3753
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753

转发 22 端口数据至另一个 ip 的相同端口上
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100

转发 22 端口数据至另一 ip 的 2055 端口上
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100


端口转发的目的:当我们在真机里登陆172.25.254.218这台主机,进行伪装后,当通过 22 端口访问本机时,将请求转发到 172.25.254.118这台 主机上,同时还要开启 masquerade转发接口
# 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这台主机上
# firewall-cmd  --add-masquerade    #打开转发端口

九、开启应急模式阻断所有网络连接

# firewall-cmd --panic-on
 //在 0.3.0 之前的 FirewallD版本中, panic 选项是 –enable-panic 与 –disable-panic

关闭应急模式
# firewall-cmd --panic-off

查看应急模式的状态
# firewall-cmd --query-panic

在不改变状态的条件下重新加载防火墙:
# firewall-cmd --reload

防火墙预定义的服务配置文件是xml文件 目录在 /usr/lib/firewalld/services/
在 /etc/firewalld/services/ 这个目录中也有配置文件 但是/etc/firewalld/services/目录 优先于 /usr/lib/firewalld/services/ 目录
修改配置文件后 使用命令重新加载


# firewall-cmd --reload

在每次修改 端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改 所以也可以在文件中之间修改 然后重新加载

十、设置某个ip 访问某个服务

添加规则
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"

删除上面设置的规则
#firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"

ip 192.168.0.4/24 访问 http
设置后 public.xml 就会出现变化

CentOS 7 Firewalld防火墙配置_第1张图片

 

十一、修改规则

firewall-cmd --change-interface=eth0 --zone=trusted    #修改区域为trusted的网络接口eth0
firewall-cmd --remove-interface=eth0 --zone=trusted    #移除trusted区域的接口eth0
firewall-cmd --add-interface=eth0 --zone=public        #添加public区域的接口eth0

 

十二、地址伪装

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


 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(centos,防火墙)