CentOS7 防火墙配置-详解
CentOS 7 防火墙配置
1、防火墙的简述
防火墙对服务器起到一定的保护作用,所以了解一些相关的操作是很有必要的。
在CentOS 7.x中,有了一种新的防火墙策略叫FireWall , 在6.x中用的是iptables。
Centos 7 中防火墙是一个非常的强大的功能了, Firewalld 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态 防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配 置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接
2、 图形化和命令行
你可以通过图形界面工具 firewall-config 或者命令行客户端 firewall-cmd
启用或者关 闭防火墙特性。
- 在CentOS 7.x中,防火墙的基本命令是 firewall-cmd
- 命令行方式
使用命令行工具 firewall-cmd 支持全部防火墙特性。 使用它,只需要如下yum安装firewalld(实际我们不需要安装,默认已经装好了)
[root@localhost ~]# yum
install firewalld -y
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]# rpm -ql firewalld | grep '/usr/bin/firewall-cmd'
/usr/bin/firewall-cmd
[root@localhost ~]# firewall-cmd --state
running
- 图形化界面方式
如果需要图形界面的话,要安装firewalld还需要再安装firewall-config的rpm包,
[root@localhost ~]# yum
install firewalld firewall-config -y
3、 查看帮助文档
先通过man
firewall-cmd 来简单看看它的帮助文档。
[root@localhost ~]# man
firewall-cmd
[root@localhost ~]# firewall-cmd --help # 或 firewall-cmd -h
[root@localhost ~]# firewall-cmd --version 查看防火墙版本
4、 状态|启动|停止|重启
4.1 查看防火墙状态
- 查看方式1:
[root@localhost ~]#
firewall-cmd --state
# remark:如果终端输出running就表示防火墙已经开启了,反之就没有。
- 查看方式2:
[root@localhost ~]# systemctl
status firewalld
# remark:如果终端输出有Active: active (running)就表示防火墙已经开启了,反之就没有。
4.2 添加开机启动
[root@localhost ~]# systemctl
enable firewalld # 开机启动
[root@localhost ~]# systemctl disable firewalld
# 取消开机启动
[root@localhost ~]# systemctl
is-enabled firewalld #查看服务是否开机启动
[root@localhost ~]# systemctl list-unit-files|grep
enabled #查看已启动的服务列表
[root@localhost ~]# systemctl --failed
#查看启动失败的服务列表
4.3 启动防火墙
[root@localhost ~]# systemctl
start firewalld
4.4 停止防火墙
[root@localhost ~]# systemctl
stop firewalld
4.5 重启防火墙
- 方式1,建议用此方法,会重新加载配置
[root@localhost ~]#
firewall-cmd --reload # 更新规则,不重启服务,用此条命令即可
[root@localhost ~]# firewall-cmd --complete-reload # 更新规则,重启服务,一般不用此条命令
- 方式2
[root@localhost ~]# systemctl
restart firewalld
5、查已有配置和端口
5.1 命令查看配置
[root@localhost ~]#
firewall-cmd --list-all
#如果要查看指定级别则用firewall-cmd --zone=public --list-all
public
target:
default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich
rules:
rule
family="ipv4" source address="122.144.131.91" port
port="111" protocol="tcp" accept
rule
family="ipv4" source address="180.168.69.242" port
port="2200" protocol="tcp" accept
rule
family="ipv4" source address="27.115.59.166" port
port="2200" protocol="tcp" accept
rule
family="ipv4" source address="122.144.131.90" port
port="2200" protocol="tcp" accept
rule
family="ipv4" source address="122.144.208.19" port
port="10050" protocol="tcp" accept
5.2 配置文件查看
[root@localhost ~]# cat
/etc/firewalld/zones/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="ssh"/>
<service name="dhcpv6-client"/>
<port protocol="tcp" port="80"/>
<rule family="ipv4">
<source address="122.144.131.91"/>
<port protocol="tcp" port="111"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="180.168.69.242"/>
<port protocol="tcp" port="2200"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="27.115.59.166"/>
<port protocol="tcp" port="2200"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="122.144.131.90"/>
<port protocol="tcp" port="2200"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="122.144.208.19"/>
<port protocol="tcp" port="10050"/>
<accept/>
</rule>
</zone>
5.3 查看已开放的端口
- 方式1:查看所有已经开放端口,注意这里不会把开放的特定IP+特定端口的列出来,要想全部列出来则用上面的firewall-cmd --list-all,
[root@localhost ~]#
firewall-cmd --list-ports
80/tcp
- 方式2:查看特定已经开放的端口
执行下面的命令后,如果指定的端口已经开放就会输出yes,反之就输出no
[root@localhost ~]#
firewall-cmd --zone=public --query-port=81/tcp
6、添加和删除端口
这一步的操作就好比在Windows上的防火墙中新建一个入站规则。
6.1 添加单独端口add
只添加一个单独的端口(示例为81) ,注:如果是udp则把tcp改为udp即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --zone=public --add-port=81/tcp --permanent
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
6.2 添加连续端口add
添加一组连续的端口(示例为82到85) ,注:如果是udp则把tcp改为udp即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --zone=public --add-port=82-85/tcp --permanent
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
6.3 删除端口remove
只是把添加端口命令中add改为remove即可删除,其它的都不用动,注:如果是udp则把tcp改为udp即可,
注意:这里有--permanent
[root@localhost ~]# firewall-cmd
--list-all #先查看一下开放的规则和端口
[root@localhost ~]# firewall-cmd --zone=public
--remove-port=81/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public
--remove-port=82-85/tcp --permanent
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
7、添加特定IP+特定端口
7.1 添加特定IP+单个端口add
注:如果是udp则把tcp改为udp即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --permanent --add-rich-rule="rule family="ipv4"
source address="122.144.131.91/24" port protocol="tcp"
port="111" accept"
7.2 添加特定IP+多个端口add
注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --permanent --add-rich-rule="rule family="ipv4"
source address="122.144.131.91/24" port protocol="tcp" port="4001-4004"
accept"
[root@localhost ~]# firewall-cmd --permanent
--add-rich-rule="rule family="ipv4" source
address="192.168.142.166" port protocol="tcp"
port="10-51000" accept"
7.3 删除IP+端口规则remove
只需要把其中的add改为remove即可,其它的都不用动,注:如果是udp则把tcp改为udp即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --list-all #先查看一下开放的规则和端口
[root@localhost ~]# firewall-cmd --permanent
--remove-rich-rule="rule family="ipv4" source
address="122.144.131.91/24" port protocol="tcp"
port="111" accept"
[root@localhost ~]# firewall-cmd --permanent
--remove-rich-rule="rule family="ipv4" source
address="122.144.131.91/24" port protocol="tcp"
port="4001-4004" accept"
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
8、查看Zone区域信息
8.1 查看已被激活的Zone
[root@localhost ~]#
firewall-cmd --get-default-zone #查看默认区域
public
[root@localhost ~]# firewall-cmd
--get-active-zones #查看已被激活的Zone
public
interfaces: em1
8.2 查看指定接口的Zone
[root@localhost ~]#
firewall-cmd --get-zone-of-interface=em1
public
8.3 查看指定级别的接口
[root@localhost ~]#
firewall-cmd --zone=public --list-interfaces
em1
8.4
查看指定级别的所有信息
[root@localhost ~]#
firewall-cmd --zone=public --list-all #查看所有级别firewall-cmd --list-all
8.5 查看所有级别被允许的信息
[root@localhost ~]#
firewall-cmd --get-service
[root@localhost ~]# firewall-cmd --get-service
--permanent #查重启后所有Zones级别中被允许的服务
8.6
更改所属区域
显示所有公共区域(public)
[root@localhost ~]#
firewall-cmd --zone=public --list-all
临时修改网络接口(enp0s3)为内部区域(internal),注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --zone=internal --change-interface=enp03s
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
永久修改网络接口enp03s为内部区域(internal),注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --permanent --zone=internal --change-interface=enp03s
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
9、端口转发
9.1
配置 ip 地址伪装
注意:这里有--permanent
#查看伪装
[root@localhost ~]# firewall-cmd
--zone=external --query-masquerade
#打开伪装
[root@localhost ~]# firewall-cmd --permanent
--zone=external --add-masquerade
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
#关闭伪装
[root@localhost ~]# firewall-cmd --permanent
--zone=external --remove-masquerade
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
9.2
端口转发
第一步:要进行端口转发,则首先需要开启伪装,注意:如果不开启伪装IP,端口转发会失败,如果要删除则把add改为remove即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --permanent --zone=external --add-masquerade
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
然后,转发 tcp 22 端口至 3753,如果要删除则把add改为remove即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --permanent --zone=external
--add-forward-port=port=22:proto=tcp:toport=3753
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
转发 22 端口数据至另一个 ip 的相同端口上,如果要删除则把add改为remove即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --permanent --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
转发 22 端口数据至另一 ip 的 2055 端口上,如果要删除则把add改为remove即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --permanent --zone=external
--add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
10、服务管理
一些服务,对应多个端口,在防火墙允许某项服务则可能意味着允许该服务对应的多个端口,
10.1 查看所有服务
[root@localhost ~]#
firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client
bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc
ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns
docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps
freeipa-replication freeipa-trust ftp ganglia-client ganglia-master
high-availability http https imap imaps ipp ipp-client ipsec iscsi-target
kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls
managesieve mdns mosh mountd ms-wbt mssql mysql nfs nfs3 nrpe ntp openvpn
ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi
pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster
quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp
smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog
syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm
vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
10.2
查看当前允许的服务
! 特别注意:比如下面的ssh服务已经被允许开放,那么sshd对应的端口比如有两个端口22号端口和2200端口则就会被外部允许访问,即使防火墙这两个端口没有开放,也是可以访问的!!
[root@localhost ~]#
firewall-cmd --list-services --zone=public #查看所有被允许开放的服务
ssh dhcpv6-client
[root@localhost ~]# firewall-cmd
--query-service=http --zone=public #查看特定的服务是否开放
10.3 给区域添加服务add
注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --add-service=ftp --zone=public
--permanent
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
10.4 删除区域服务remove
将add改为remove即可,注意:这里有--permanent
[root@localhost ~]#
firewall-cmd --remove-service=ftp --zone=public
--permanent
[root@localhost ~]# firewall-cmd --reload #此步不能少,必须重新加载配置才能生效
[root@localhost ~]# firewall-cmd --list-all #查看是否已生效
[root@localhost ~]# firewall-cmd --list-ports #查看是否已生效
11、应急模式
11.1
应急模式阻断所有网络
启动应急模式阻断所有网络连接,以防出现紧急状况,注意:此情况会断开所有的网络连接,远程连接勿使用
[root@localhost ~]#
firewalld-cmd --panic-on
11.2 禁用应急模式
[root@localhost ~]#
firewalld-cmd --panic-off
11.3 查询应急模式
[root@localhost ~]#
firewalld-cmd --query-panic
CentOS7 防火墙配置-详解的更多相关文章
- fedora/centos7防火墙FirewallD详解
1 使用 FirewallD 构建动态防火墙 1.1 “守护进程” 1.2 静态防火墙(system-config-firewall/lokkit) 1.3 使用 iptables 和 ip6tabl ...
- OpenVPN CentOS7 安装部署配置详解
一 .概念相关 1.vpn 介绍 vpn 虚拟专用网络,是依靠isp和其他的nsp,在公共网络中建立专用的数据通信网络的技术.在vpn中任意两点之间的链接并没有传统的专网所需的端到端的物理链路,而是利 ...
- Centos7上部署openstack ocata配置详解
之前写过一篇<openstack mitaka 配置详解>然而最近使用发现阿里不再提供m版本的源,所以最近又开始学习ocata版本,并进行总结,写下如下文档 OpenStack ocata ...
- (转)Centos7上部署openstack ocata配置详解
原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124 文章-2 评论-82 Centos7上部署openstack ocata配置详解 ...
- linux下IPTABLES配置详解 (防火墙命令)
linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT ...
- Nginx + Tomcat 负载均衡配置详解
Nginx常用操作指南一.Nginx 与 Tomcat 安装.配置及优化1. 检查和安装依赖项 yum -y install gcc pcre pcre-devel zlib zlib-devel o ...
- 日志分析工具ELK配置详解
日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...
- tomcat的配置详解:[1]tomcat绑定域名
转自:http://jingyan.baidu.com/article/7e440953dc096e2fc0e2ef1a.html tomcat的配置详解:[1]tomcat绑定域名分步阅读 在jav ...
- CentOS6.5下VNC Server远程桌面配置详解
参考文献: (总结)CentOS Linux下VNC Server远程桌面配置详解 远程桌面连接工具VNC——license Key 我的下载地址为 太平洋下载 VNC连接黑屏的问题 centos 6 ...
随机推荐
- mongodb-的副本集
复制的重要性不再多说,其主要就是提供数据保护,数据高可用和灾难恢复. 复制是跨多个mongodb服务器分布和维护的方法.mongodb可以把数据从一个节点复制到其他节点并在修改时进行同步. mongo ...
- HBase Shell相关
1.进入hbase命令行 ./hbase shell 2.基本命令 显示hbase中的表List list 查询user表中的所有信息Scan scan 'users' 清空user表中的数据Trun ...
- Python3基础 print 输出helloworld
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- HDU 6425 Rikka with Badminton(组合问题签到)题解
题意:问你有多少种选法使得不能满足大于等于2个拍子且大于等于1个球. 思路:数学组合问题,分类讨论一下,刚开始的时候分的很乱,写的乱七八糟的...还有注意MOD,基本上有大数相乘的地方都要先MOD一下 ...
- jsoop_封装
<script> //java.utils.ArrayList() //包(命名空间) /* var java = {}; java.utils = {}; java.utils.Arra ...
- ZOJ 3769 Diablo III(分组背包)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3769 题意:有13种装备,每种装备值可以穿戴一种,特殊的就是双手武器和单手 ...
- redis高可用 - Master&Slave
Master&Slave也就是我们所说的主从复制,即主机数据更新后根据配置和策略,自动同步到备机的机制.其中Master以写为主,Slave以读为主. Master&Slave的作用主 ...
- Android中的自定义注解(反射实现-运行时注解)
预备知识: Java注解基础 Java反射原理 Java动态代理 一.布局文件的注解 我们在Android开发的时候,总是会写到setContentView方法,为了避免每次都写重复的代码,我们需要使 ...
- 在Angular中定义共享的Providers
转自:https://segmentfault.com/a/1190000010700308 有时,你需要在 Angular 应用中创建一个共享模块,该模块定义了功能模块和lazy-loaded模块可 ...
- POJ 3087 Shuffle'm Up 线性同余,暴力 难度:2
http://poj.org/problem?id=3087 设:s1={A1,A2,A3,...Ac} s2={Ac+1,Ac+2,Ac+3,....A2c} 则 合在一起成为 Ac+1,A1,Ac ...