如何在RHEL/CentOS 7以及Fedora中配置FirewallD

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在RHEL/CentOS 7以及Fedora中配置FirewallD相关的知识,希望对你有一定的参考价值。

步骤1:安装Firewalld组件

1.Firewalld组件在RHEL/CentOS 7和Fedora 21默认已经安装了。如果没有可以使用如下YUM命令进行安装。

# yum install firewalld -y

2.安装完毕,查看一下iptables是否正在运行。如果是,你需要用以下命令来stop和mask(不再使用)iptables。

# systemctl status iptables

# systemctl stop iptables

# systemctl mask iptables

步骤2:Firewalld组件的讨论

3.在进行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

# firewall-cmd --get-default-zone

# firewall-cmd --list-all-zones

注意:以上命令的输出不仅仅只有单页,因为它将会列出每种区域如block、dmz、drop、external、home、internal、
public、trusted以及work。如果区域还有其它详细规则(rich-rules)、启用的服务或者端口,这些区域信息也会分别被罗列出来。
参考技术A 以下是我的笔记;可以访问wiki学习更多内容 http://fedoraproject.org/wiki/FirewallD

firewall-cmd 参数
--list -all,-service

--status 状态

--reload 重新加载防火墙配置文件

--get-zones
获取支持的区域列表

--get-service 获取所有支持的服务

--get-icmptype

设置默认区域

--set-defualt-zone=<zone>

将接口增加到区域

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

修改接口所属

--change

从区域中删除一个接口

--remove

查询区域中是否包含某个接口

--query

--get-zone-of
--interface=<interface>

应急模式:断网

firewall-cmd --panic-on
开启

firewall-cmd --panic-off 关闭

--add-service

--remove-service

==================
firewall常用配置

firewall-cmd --list-services 查看服务 --list-all

1. 写入配置文件,reload加载

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

firewall-cmd
--reload
2.不加--permanent, 只能临时生效
firewall-cmd --zone=public --add-service=ftp

====================
例如

firewall-cmd --permanent
--zone=public --add-port=80/tcp

端口映射

firewall-cmd --permanent
--add-forward-port=port=33:proto=tcp:toport=22:toaddr=172.16.7.8

:toport=<port>[-<port>] | :toaddr=<address>|
:toport=<port>[-<port>]:totoaddr=<address>

--zone=? --add-fore

启用区域中的的ip伪装功能

--add-masquerade

====================

将命令传递给防火墙。参数 <args> 可以是 iptables, ip6tables 以及 ebtables 命令行参数。

firewall-cmd --direct
--passthrough ipv4 | ipv6 | eb <args>

为表 <table> 增加一个新链 <chain> 。

firewall-cmd --direct --add-chain
ipv4 | ipv6 | eb <table><chain>

从表 <table> 中删除链
<chain> 。

firewall-cmd --direct
--remove-chain ipv4 | ipv6 | eb <table><chain>

查询 <chain> 链是否存在与表 <table>. 如果是,返回0,否则返回1.

firewall-cmd --direct
--query-chain ipv4 | ipv6 | eb <table><chain>

如果启用,此命令将有返回值。此命令没有输出信息。

获取用空格分隔的表 <table> 中链的列表。

firewall-cmd --direct
--get-chains ipv4 | ipv6 | eb <table>

为表 <table> 增加一条参数为 <args> 的链 <chain> ,优先级设定为 <priority>。

firewall-cmd --direct --add-rule
ipv4 | ipv6 | eb <table><chain><priority><args>

从表 <table> 中删除带参数 <args> 的链 <chain>。

firewall-cmd --direct
--remove-rule ipv4 | ipv6 | eb <table><chain><args>

查询 带参数
<args> 的链 <chain> 是否存在表 <table> 中. 如果是,返回0,否则返回1.

firewall-cmd --direct
--query-rule ipv4 | ipv6 | eb <table><chain><args>

如果启用,此命令将有返回值。此命令没有输出信息。

获取表 <table> 中所有增加到链 <chain> 的规则,并用换行分隔。

firewall-cmd --direct --get-rules
ipv4 | ipv6 | eb <table><chain>
参考技术B

安装firewalld 防火墙

yum install firewalld

开启服务

systemctl start firewalld.service

关闭防火墙

systemctl stop firewalld.service

CENTOS7 FIREWALLD防火墙管理

RHEL6.6 & CentOS 6如何安装Kerberized FTP client命令

 手头一台Linux服务器(Red Hat Enterprise Linux Server release 6.6),写了一个shell脚本,在上面测试运行时,发现Kerberized ftp client命令不存在。注意这里所说的是ftp命令,不是ftp工作站。

 

 
[root@KerryDB ~]# more /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.6
[root@KerryDB ~]# ls /usr/kerberos/bin/ftp 
ls: cannot access /usr/kerberos/bin/ftp: No such file or directory
[root@KerryDB ~]# 
[root@KerryDB ~]# whereis ftp
ftp:

 

之前印象中,Kerberized ftp client来自包krb5-workstation,所以我在一台RHEL 5.7上面验证了一下,如下所示,Kerberized ftp client确实来自包krb5-workstation

 

# more /etc/redhat-release 
Red Hat Enterprise Linux Server release 5.7 (Tikanga)
# rpm -qf /usr/kerberos/bin/ftp 
krb5-workstation-1.6.1-62.el5

 

于是在这台服务器上安装了yum install krb5-workstation,但是安装过后依然找不到client命令

 

[root@KerryDB ~]# yum install krb5-workstation.x86_64 
[root@KerryDB ~]# yum info installed | grep "krb5-workstation"
Name        : krb5-workstation
Description : Kerberos is a network authentication system. The krb5-workstation
[root@KerryDB ~]# yum list installed | grep "krb5-workstation"
krb5-workstation.x86_64                 1.15.1-46.el7                  @base   
[root@KerryDB ~]# ll /usr/kerberos/bin/ftp
ls: cannot access /usr/kerberos/bin/ftp: No such file or directory
[root@KerryDB ~]# whereis ftp
ftp:
[root@KerryDB ~]# which ftp
/usr/bin/which: no ftp in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

 

查了资料(如有不正确,敬请指正),似乎从CentOS 6/ RHEL 6开始, krb5-workstation中已经不包含Kerberized ftp client了,而是包含在krb5-appl-clients这个包中。

 

https://bugzilla.redhat.com/show_bug.cgi?id=600428

clip_image001

 

 

如下所示,安装完krb5-appl-clients就能看到/usr/kerberos/bin/ftp命令了。

 

    [root@KerryDB ~]# yum install krb5-appl-clients

 

如果没有配置yum,那么可以从下面地址下载安装包。

 

https://centos.pkgs.org/6/centos-x86_64/krb5-appl-clients-1.0.1-7.el6_2.1.x86_64.rpm.html

 

 

另外,在解决这个问题的过程,查了不少资料,下面个资料介绍了不同Linux版本中ftp client来自那些包。是个不错的总结。

 

Many Linux and Unix systems have Kerberized FTP clients installed by default. You can also download and install the MIT Kerberos distribution, which includes this client. Depending on your system, it may be installed in different locations, for example:

·         /usr/kerberos/bin/ftp on Red Hat and derivatives (from the krb5-workstation package krb5-appl-clients)

·         /usr/bin/krb5-ftp on Debian and derivatives, such as Ubuntu (from the krb5-clients package)

·         /usr/bin/kftp on Gentoo (from the mit-krb5 ebuild)

·         /usr/lib/heimdal/bin/ftp on SuSE 9 (from the Heimdal package)

·         /usr/lib/mit/bin/ftp on SuSE 10 (from the krb5-apps-clients package)

 

 

 

参考资料:

 

https://kb.iu.edu/d/auxi

https://centos.pkgs.org/6/centos-x86_64/krb5-appl-clients-1.0.1-7.el6_2.1.x86_64.rpm.html

以上是关于如何在RHEL/CentOS 7以及Fedora中配置FirewallD的主要内容,如果未能解决你的问题,请参考以下文章

centos 7/rhel7: 如何重启/停止/启动网络服务

如何在 CentOS / RHEL 中启用/禁用 CPU(限制 CPU 数量)

如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置

如何在CentOS/RHEL 7上借助ssm管理LVM卷

如何配置RHEL / CENTOS 7中的XRDP远程桌面服务器

如何使用RHEL/CentOS 7安装创建和管理LXC