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 ...
随机推荐
- 高可用Mysql架构_Haproxy+keepalived+mycat集群的配置
接上一篇文章http://www.cnblogs.com/wt645631686/p/8310891.html,虽然已经在原有两台mycat基础上增加了Haproxy作为mycat的中间服务器,不足的 ...
- ESXi上的固态硬盘识别为非SSD
启动ESXi的SSH服务 通过SSH远程连接ESXi主机 输入如下命令 # esxcli storage nmp device list #列出储存清单(SSD设备的“device na ...
- luogu P1605 迷宫
https://www.luogu.org/problem/show?pid=1605 就很实在的深搜 我就是模拟的地图搜索 没想到竟然1A了 给了我很大的信心 #include<bit ...
- SQL Server2012创建约束图解
SQLServer中有五种约束:Primary Key约束.Foreign Key约束.Unique约束.Default约束和Check约束 1 . Primary Key 约束 在 ...
- 类的成员变量修饰 const 和static
类型 初始化方式 类内(声明) 类外(类实现文件) 构造函数中 构造函数的初始化列表 非静态非常量数据成员 N N Y Y 非静态常量数据成员 N N N Y (must) 静态非常量数据成员 N Y ...
- npm 安装私有 git 包
npm 安装私有 git 包 npm 对于前端开发来说是一种必备的工具,对于开源项目来说,完全没有任何问题,安装包的依赖直接依赖于 Npm 即可. 对于公司内网的一些项目就不是太方便了,因为我们通常会 ...
- 递推-练习1--noi1760 菲波那契数列(2)
递推-练习1--noi1760 菲波那契数列(2) 一.心得 二.题目 1760:菲波那契数列(2) 总时间限制: 1000ms 内存限制: 65536kB 描述 菲波那契数列是指这样的数列: 数 ...
- 为什么需要消息队列MQ?
主要原因:是在高并发情况下,由于来不及同步处理,请求往往会发生堵塞,比如诸多的insert.update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积很多,从而触发大量的to ...
- Rails 5 Test Prescriptions(everday Rspectest作者推荐) 目录 1-3章
总文档连接: RSpec.info/documentation/ 如何使用TDD 和 自动化测试来建立一个Rails app. TDD让你用测试来探索代码的设计.你将学习可利用的工具,并学习用什么工具 ...
- svn版本管理与上线
1.1 SVN介绍 1.1.1 什么是SVN(Subversion)? Svn(subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统 ...