威尼斯国际线上娱乐Centos7 防火墙(firewall)开放某叁个端口

一、Centos7使用firewall的管理防火墙

firewall用zone来区分管理,默认有以下一些zone:

centos7下用firewall-cmd命令来配置防火墙。firewall-cmd有”域”(zones)的概念。默认的zone为public。firewall-cmd命令基本上都需要带上zone参数,指定在哪个域上操作。我们一般都是在默认域即public上操作。

技术一直在进步,本人是一个菜鸟,文章用于记录自己的学习过程和知识点,毕竟好记性不如烂笔头。本记录知识点浅薄,只是简单的设置修改。

1.firewalld基本使用

丢弃(DROP)

以下是最常用的命令,以打开端口为例:
1.查看当前防火墙运行状态:
firewall-cmd –state
systemctl start firewalld.service 开启防火墙
systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 彻底关闭防火墙,开机不启动
systemctl enable firewalld.service 开启防火墙,开机启动
2.列出当前防火墙的配置情况:
firewall-cmd –list-all
3.永久开放8888端口:
sudo firewall-cmd –permanent –zone=public –add-port=8888/tcp
sudo firewall-cmd –permanent –zone=public –add-port=8888/udp
4.让firewall-cmd重新加载配置:
sudo firewall-cmd –reload
5.再次列一下当前防火墙配置看是否开放成功:
firewall-cmd –list-all

一、系统的主要起动命令

检查状态:

firewall-cmd --state
systemctl status firewalld.service

启用

systemctl start firewalld.service

关闭

systemctl stop firewalld.service

  启动:systemctl start firewalld

任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。

二、FireWall 域的概念

在进行firewalld配置之前,我想来讨论一下区域(zones)这个概念。默认情况就有一些有效的区域。我们需要网络接口分配区域。区域规定了区域是网络接口信任或者不信任网络连接的标准。区域(zone)包含服务和端口。接下来让我们讨论Firewalld中那些有用的区域(zones)。

  丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用iptables -j drop。使用丢弃规则意味着将不存在响应,只有流出的网络连接有效。
  阻塞区域(Block Zone):阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过。
  公共区域(Public Zone):只接受那些被选中的连接,而这些通过在公共区域中定义相关规则实现。服务器可以通过特定的端口数据,而其它的连接将被丢弃。
  外部区域(External Zone):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,而其它的连接将被丢弃或者不被接受。
  隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性。
  工作区域(Work Zone):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许。
  家庭区域(Home Zone):这个区域专门用于家庭环境。我们可以利用这个区域来信任网络上其它主机不会侵害你的主机。它同样只允许被选中的连接。
  内部区域(Internal Zone):这个区域和工作区域(Work Zone)类似,只有通过被选中的连接。
  信任区域(Trusted Zone):信任区域允许所有网络通信通过。

查看全部的区域

firewall-cmd --get-zones

威尼斯国际线上娱乐 1

查看默认域

firewall-cmd --get-default-zone

设置默认域

firewall-cmd --set-default-zone=home

威尼斯国际线上娱乐 2

查看域详情列表

注意:以上命令的输出不仅仅只有单页,因为它将会列出每种区域如block、dmz、drop、external、home、internal、public、trusted以及work。如果区域还有其它详细规>则(rich-rules)、启用的服务或者端口,这些区域信息也会分别被罗列出来

firewall-cmd --list-all-zones

威尼斯国际线上娱乐 3

查看某个区域的情况

firewall-cmd --zone=home --list-all

查看活动的域

firewall-cmd --get-active-zones

威尼斯国际线上娱乐 4

  关闭:systemctl stop firewalld

阻塞(Block)

三、FireWall 域和接口的关联和操作

添加

firewall-cmd [--zone=<zone>] --add-interface=<interface>

删除

firewall-cmd [--zone=<zone>] --remove-interface=<interface>

改变网卡接口的所属域(ps:一个接口只能属于一个域)

firewall-cmd --zone=public --change-interface=eth1

威尼斯国际线上娱乐 5

永久地改变接口的区域

如果没有在配置中定义的替代区域,那么接口将总是返回到默认区域。在CentOS,这些配置是在/etc/sysconfig/网络scriptsdirectory中定义的,带有格式ifcfg-接口格式的文件。

vim /etc/sysconfig/network-scripts/ifcfg-eth0

威尼斯国际线上娱乐 6

6.png

systemctl restart network.service
systemctl restart firewalld.service

  状态:systemctl status firewalld

任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者
IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。

四、为应用程序设置规则

向您的区域添加服务
获取全部的服务

firewall-cmd --get-services

威尼斯国际线上娱乐 7

查看服务内容

您可以在/usr/lib/firewalld/services目录中,通过{service}.xml,获得关于这些服务的更多细节。。例如,SSH服务是这样定义的:

威尼斯国际线上娱乐 8

域中添加服务

firewall-cmd --zone=public --add-service=http

ps: –zone= 未设置表示默认域

查看某域的服务

firewall-cmd --zone=public --list-services

永久生效的添加

firewall-cmd --zone=public --permanent --add-service=http

查看永久生效的服务

firewall-cmd --zone=home --permanent --list-services

删除服务

firewall-cmd --zone=public --permanent --add-service=http

永久删除服务

firewall-cmd --zone=public --permanent --add-service=http

ps: –permanent 没有使用的话,–reload就会失效

威尼斯国际线上娱乐 9

  开机禁用:systemctl disable firewalld

公开(Public)

五、查看为域打开端口

例如,如果我们的应用程序在端口5000上运行,并且使用TCP,我们可以使用–add-port=
端口号将这个会话添加到这个会话的“公共”区域。协议可以是tcp或udp

firewall-cmd --zone=public --add-port=5000/tcp

永久添加或删除

//添加
firewall-cmd --zone=home --permanent --add-port=1194/udp
//删除
firewall-cmd --zone=home --permanent --remove-port=1194/udp

查看域下端口状况

firewall-cmd --zone=public --permanent --list-ports

  开机启用:systemctl enable firewalld

用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。(You
do not trust the other computers on networks to not harm your computer.
Only selected incoming connections are accepted.)

六、编写手动服务

为您的区域打开端口是很容易的,但是要跟踪每一个区域的目的是很困难的。如果您在服务器上进行了一个服务的分解,那么您可能很难记住哪些端口已经被打开了。为了避免这种情况,可以定义一个服务。
服务仅仅是具有相关名称和描述的端口集合。使用服务比端口更容易管理,但是需要一些前期工作。最简单的方法是复制现有的脚本/etc/firewalld/services到/usr/lib/firewalld/services

cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>Example Service</short>
<description>This is just an example service. It probably
shouldn’t be used on a real system.</description>
<port protocol=”tcp” port=”7777″/>
<port protocol=”udp” port=”8888″/>
</service>

//重新加载配置
firewall-cmd --reload
//查找服务
firewall-cmd --get-services |grep example

威尼斯国际线上娱乐 10

您现在可以像往常一样在您的区域使用该服务。

2.配置项目

外部(Extend)

七、创建自己的域

添加域

sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS

删除域

sudo firewall-cmd --permanent --delete-zone=publicweb

  例1:开放80端口

用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。

八、实现伪装IP

防火墙可以实现伪装 IP 的功能,下面的端口转发就会用到这个功能。

firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade   # 允许防火墙伪装IP
firewall-cmd --remove-masquerade# 禁止防火墙伪装IP

  a.开启80端口

隔离区(dmz)

八、端口转发

端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定
ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。
如果配置好端口转发之后不能用,可以检查下面两个问题:

比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080
端口是否开放监听了
其次检查是否允许伪装 IP,没允许的话要开启伪装 IP

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口

当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

本文主要参考文章如下:
Centos7 firewall
的操作方法和应用(推荐)
CentOS7 中使用 firewall-cmd
控制端口和端口转发
如何在[RHEL]/CentOS 7以及Fedora中配置FirewallD

  命令:firewall-cmd –zone=public –add-port=80/tcp
–permanent
    #–permanent永久生效,没有此参数重启后失效

用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。

  b.重新加载:

工作(work)

  命令: firewall-cmd –reload  #重新加载后生效

用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。

 

家庭(home)

  例2:关闭80端口

用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。

  a.删除80端口:

内部(internal)

  命令:firewall-cmd –zone=public –remove-port=80/tcp –permanet

用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。

  b.重新加载:

受信任的(trust)

  命令: firewall-cmd –reload  #重新加载后生效

允许所有网络连接。

 

 

  例3:查看已开放的端口

因为默认的zone 是public

  a.命令:firewall-cmd –zone=public –list-ports

1.添加删除某个端口

 

firewall-cmd –add-port=3306/tcp

firewall-cmd –remove-port=3306/tcp

2.添加删除某个服务

firewall-cmd –add-service=mysqld

firewall-cmd –remove-service=mysqld

3.添加删除某个ip 访问某个端口

firewall-cmd  –add-rich-rule=”rule family=”ipv4″ source
address=”192.168.0.0/16″ port port=”3306″ protocol=”tcp” accept”

firewall-cmd  –remove-rich-rule=”rule family=”ipv4″ source
address=”192.168.0.0/16″ port port=”3306″ protocol=”tcp” accept”

4.添加删除某个ipset 访问

firewall-cmd –add-source=”192.168.85.0/32″

firewall-cmd –remove-source=”192.168.85.0/32″

保存配置

firewall-cmd –runtime-to-permanent

相关文章