RHEL 7中防火墙的配置和使用方法

RHEL7 中使用了firewalld代替了原来的iptables,操作设置和原来有点不同:

查看防火墙状态:systemctl status firewalld

启动防火墙:systemctl start firewalld

停止防火墙:systemctl stop firewalld

防火墙中的一切都与一个或者多个区域相关联,下面对各个区进行说明:

Zone         Description
-----------------------------------------------------
drop (immutable)     Deny all incoming connections, outgoing ones are accepted.
block (immutable)    Deny all incoming connections, with ICMP host prohibited messages issued.
trusted (immutable)    Allow all network connections
public       		Public areas, do not trust other computers
external       		For computers with masquerading enabled, protecting a local network
dmz        		For computers publicly accessible with restricted access.
work        		For trusted work areas
home        		For trusted home network connections
internal       		For internal network, restrict incoming connections

drop(丢弃)
任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。

block(限制)
任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。

public(公共)
在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。

external(外部)
特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。

dmz(非军事区)
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。

work(工作)
用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。

home(家庭)
用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。

internal(内部)
用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。

trusted(信任)
可接受所有的网络连接。

操作防火墙的一些常用命令:

--显示防火墙状态

[root@localhost zones]# firewall-cmd --state
running

--列出当前有几个zone
[root@localhost zones]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

--取得当前活动的zones
[root@localhost zones]# firewall-cmd --get-active-zones
public
  interfaces: ens32 veth4103622

--取得默认的zone
[root@localhost zones]# firewall-cmd --get-default-zone
public

--取得当前支持service
[root@localhost zones]# firewall-cmd --get-service          
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt MySQL nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

--检查下一次重载后将激活的服务。
[root@localhost zones]# firewall-cmd --get-service --permanent
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

--列出zone public 端口
[root@localhost zones]# firewall-cmd --zone=public --list-ports

--列出zone public当前设置
[root@localhost zones]# firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: eno16777736
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
--增加zone public开放http service
[root@localhost zones]# firewall-cmd --zone=public --add-service=http
success
[root@localhost zones]# firewall-cmd --permanent --zone=internal --add-service=http
success

--重新加载配置
[root@localhost zones]# firewall-cmd --reload
success

--增加zone internal开放443/tcp协议端口
[root@localhost zones]# firewall-cmd --zone=internal --add-port=443/tcp
success

--列出zone internal的所有service
[root@localhost zones]# firewall-cmd --zone=internal --list-services
dhcpv6-client ipp-client mdns samba-client ssh

设置黑/白名单
--增加172.28.129.0/24网段到zone trusted(信任)
[root@localhost zones]# firewall-cmd --permanent --zone=trusted --add-source=172.28.129.0/24
success

--列出zone truste的白名单
[root@localhost zones]# firewall-cmd --permanent --zone=trusted --list-sources
172.28.129.0/24

--活动的zone
[root@localhost zones]# firewall-cmd --get-active-zones
public
  interfaces: eno16777736

--添加zone truste后重新加载,然后查看--get-active-zones
[root@localhost zones]# firewall-cmd --reload         
success
[root@localhost zones]# firewall-cmd --get-active-zones
public
  interfaces: ens32 veth4103622
trusted
  sources: 172.28.129.0/24

--列出zone drop所有规则
[root@localhost zones]# firewall-cmd --zone=drop --list-all
drop
  interfaces:
  sources:
  services:
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

--添加172.28.13.0/24到zone drop
[root@localhost zones]# firewall-cmd --permanent --zone=drop --add-source=172.28.13.0/24
success

--添加后需要重新加载
[root@localhost zones]# firewall-cmd --reload
success

[root@localhost zones]# firewall-cmd --zone=drop --list-all
drop
  interfaces:
  sources: 172.28.13.0/24
  services:
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

[root@localhost zones]# firewall-cmd --reload
success

--从zone drop中删除172.28.13.0/24
[root@localhost zones]# firewall-cmd --permanent --zone=drop --remove-source=172.28.13.0/24
success

--查看所有的zones规则
[root@localhost ~]# firewall-cmd --list-all-zones

最后再提几点:

1、很多时候我们需要开放端口或开放某IP访问权限,我们需要先查看我们当前默认的zone是哪个,然后在对应的zone里面添加port和source,这样对外才会有作用。

比如我当前的默认zone是public,我需要开放80端口对外访问,则执行如下命令:

[root@localhost zones]# firewall-cmd --zone=public --permanent --add-port=80/tcp
success
[root@localhost zones]# firewall-cmd --reload
success

2、使用命令的时候加上 --permanent 是永久生效的意思,在重启防火墙服务后依然生效。否则,只对重启服务之前有效。

3、我们执行的命令,结果其实都体现在具体的配置文件中,其实我们可以直接修改对应的配置文件即可。

以public zone为例,对应的配置文件是/etc/firewalld/zones/public.xml,像我们刚刚添加80端口后,体现在public.xml 中的内容为:

[root@localhost zones]# cat public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
 <short>Public</short>
 <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
 <service name="dhcpv6-client"/>
 <service name="ssh"/>
 <port protocol="tcp" port="80"/>
</zone>

这个大家可自己再进一步了解下配置文件的结构后,进行自行配置,不过记得要在配置后 --reload 或重启 firewall 服务。

以上就是小编为大家带来的RHEL 7中防火墙的配置和使用方法全部内容了,希望大家多多支持我们~

(0)

相关推荐

  • CentOS7中防火墙的一些常用配置介绍

    centos 7中防火墙是一个非常的强大的功能了,但对于centos 7中在防火墙中进行了升级了,下面我们一起来详细的看看关于CentOS7中防火墙的一些常用配置. # 启动 systemctl start firewalld # 查看状态 systemctl status firewalld # 停止关闭 systemctl disable firewalld systemctl stop firewalld # 把一个源地址加入白名单,以便允许来自这个源地址的所有连接 # 这个在集群中使用常

  • CentOS7下Firewall防火墙配置用法详解(推荐)

    centos 7中防火墙是一个非常的强大的功能了,但对于centos 7中在防火墙中进行了升级了,下面我们一起来详细的看看关于centos 7中防火墙使用方法. FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具.它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项.它也支持允许服务或者应用程序直接添加防火墙规则的接口. 以前的 system-config-firewall/lokkit 防火墙模型是静态

  • RHEL 7中防火墙的配置和使用方法

    RHEL7 中使用了firewalld代替了原来的iptables,操作设置和原来有点不同: 查看防火墙状态:systemctl status firewalld 启动防火墙:systemctl start firewalld 停止防火墙:systemctl stop firewalld 防火墙中的一切都与一个或者多个区域相关联,下面对各个区进行说明: Zone Description ----------------------------------------------------- d

  • PHP swoole中http_server的配置与使用方法实例分析

    本文实例讲述了PHP swoole中http_server的配置与使用方法.分享给大家供大家参考,具体如下: swoole中为我们提供了一个swoole_http_server类,方便我们处理http请求. 但是它对http协议的支持并不完整,所以一般建议在前面加一层nginx进行代理,对于php文件的处理交由swoole处理. 一.创建一个简单的http服务 <?php //创建一个http server服务 $server = new swoole_http_server('0.0.0.0'

  • YII2框架中日志的配置与使用方法实例分析

    本文实例讲述了YII2框架中日志的配置与使用方法.分享给大家供大家参考,具体如下: YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用. 我们在config/web.php中配置如下: return [ //log必须在bootstrap期间就被加载,便于及时调度日志消息到目标 'bootstrap' => ['log'], 'components' => [ 'log' => [ //消息跟踪级别,设置yii\log\Dispatcher::traceLevel属性

  • springboot中nacos-client获取配置的实现方法

    目录 1.导入nacos的maven包 2.nacos-config-spring-boot-autoconfigure解析 3.NacosConfigEnvironmentProcessor逻辑解析 在springboot中使用nacos的小伙伴是不是跟我有一样的好奇,springboot中nacos-client是怎么获取配置的?今天我跟了一下代码,大致的流程弄懂了,分享给大家. 1.导入nacos的maven包 <dependency> <groupId>com.alibab

  • django中静态文件配置static的方法

    环境 centos7 django 1.11 nginx 白话 我们可以使用Template 设置我们的网页,同时,一个完美的网页需要css,js,image 等静态文件的支持. django中配置方式貌似有不少总,因为很多相关的博客写的方式并不一致,当然这可能是django 的版本不同导致的. 当我们在一个项目下创建一个app后,我们就需要为该app下创建一个static 文件夹来存放相关静态资源. 但创建了多个app后,就需要在多个app下创建static. 这样引入了一个问题,因为,我们的

  • 在web.config和app.config文件中增加自定义配置节点的方法

    有经验的开发人员都知道在开发.NET应用时可以利用配置文件保存一些常用并且有可能变化的信息,例如日志文件的保存路径.数据库连接信息等等,这样即使生产环境中的参数信息与开发环境不一致也只需要更改配置文件而不用改动源代码再重新编译,极其方便.并且我们一般还约定,在<appSettings>节点保存应用程序的配置信息,在<connectionStrings>中保存数据库连接字符串信息. 上面的这些方法和约定足以让我们在大部分开发中获得方便,但是在有些情况下有些配置信息可以按组分类存放,如

  • 为docker中的nginx配置https的方法步骤

    没有 https 加持的网站会逐渐地被浏览器标记为不安全的,所以为网站添加 https 已经变得刻不容缓.对于商业网站来说,花钱购买 SSL/TLS 证书并不是什么问题.但对于个人用户来说,如果能有免费的 SSL/TLS 证书可用将会是非常幸福的事情!Let's Encrypt 就是一个提供免费 SSL/TLS 证书的网站,由于其证书期限只有三个月,所以需要我们用自动化的方式去更新证书.本文将介绍如何为通过 docker 运行的 nginx 中的站点添加 https 支持,并自动完成证书的更新.

  • 详解在.net中读写config文件的各种方法

    今天谈谈在.net中读写config文件的各种方法. 在这篇博客中,我将介绍各种配置文件的读写操作. 由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码, 目的只为了再现实战开发中的各种场景.希望大家能喜欢. 通常,我们在.NET开发过程中,会接触二种类型的配置文件:config文件,xml文件. 今天的博客示例也将介绍这二大类的配置文件的各类操作. 在config文件中,我将主要演示如何创建自己的自定义的配置节点,而不是介绍如何使用appSetting . 请明:本文所说的conf

  • Linux 中LVS NAT 配置步骤的详解

    Linux 中LVS NAT 配置步骤的详解 概要: 规划机器与IP地址,LVS集群中有三种类型机器4种IP地址.机器类型:Client.Director.Real Server,与机器类型对应的IP地址分别为:CIP.DIP.RIP,Director对应两种IP 除了DIP外还有一个VIP.通常DIP.RIP在一个网络,CIP.VIP在一个网络. CIP:192.168.56.1 VIP:192.168.56.101 DIP : 192.168.0.10 RIP : 192.168.0.100

随机推荐