Linux基础——Firewalld防火墙(二)

处理运行时区域:

运行时模式下对区域进行的修改不是永久有效的。重新加载或者重启后修改将失效。

1、启用区域中的一种服务即给某个区域开启某个服务

firewall-cmd [--zone=区域] --add-service=服务 [--timeout=秒数]

此操作启用区域中的一种服务。如果未指定区域,将使用默认区域。如果设定了超时时间,服务将只启用特定秒数。

使区域中的 ipp-client服务生效 60 秒:

启用默认区域中的 http 服务:firewall-cmd--add-service=http

2、禁用区域中的某种服务即关闭某个服务

firewall-cmd [--zone=区域] --remove-service=服务

此举禁用区域中的某种服务。如果未指定区域,将使用默认区域。

例:禁止默认区域中的 http 服务:

3、查询区域中是否启用了特定服务

firewall-cmd [--zone=区域] --query-service=服务

Yes 表示服务启用,no 表示服务关掉了。

4、启用区域端口和协议组合

firewall-cmd [--zone=区域] --add-port=portid[-portid]/protocol [--timeout=seconds]此操作将启用端口和协议的组合。端口可以是一个单独的端口或者是一个端口范围 - 。协议可以是 tcp 或 udp。

5、禁用端口和协议组合

firewall-cmd [--zone=区域] --remove-port=portid[-portid]/protocol

6、查询区域中是否启用了端口和协议组合

firewall-cmd [--zone=区域] --query-port=portid[-portid]/protocol

7、启用区域中的 IP 伪装功能

firewall-cmd [--zone=区域] --add-masquerade

此操作启用区域的伪装功能。私有网络的地址将被隐藏并映射到一个公有 IP。这是地址转换的一种形式,常用于路由。由于内核的限制,伪装功能仅可用于IPv4。

8、禁用区域中的 IP 伪装

firewall-cmd [--zone=区域] --remove-masquerade

9、查询区域的伪装状态 firewall-cmd [--zone=区域] --query-masquerade

注意:启用伪装功能的主机同时也需要开启转发服务:

# echo 1 > /proc/sys/net/ipv4/ip_forward

#vi /etc/sysctl.conf 添加如下内容

net.ipv4.ip_forward = 1

保存退出并执行#sysctl -p使修改生效

10、启用区域的 ICMP 阻塞功能

firewall-cmd [--zone=区域] --add-icmp-block=icmp 类型

例:firewal-cmd --add-icmp-block=echo-request

此操作将启用选中的 Internet 控制报文协议(ICMP)报文进行阻塞。 ICMP 报文可以是请求信息或者创建的应答报文,以及错误应答。

11、禁止区域的 ICMP 阻塞功能

firewall-cmd [--zone=区域] --remove-icmp-block=icmp 类型

12、查询区域的 ICMP 阻塞功能

firewall-cmd[--zone=区域] --query-icmp-block=icmp 类型

13、在区域中启用端口转发或映射

firewall-cmd [--zone=区域]

--add-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][ :toaddres s=address [/mask]]

端口可以映射到另一台主机的同一端口,也可以是同一主机或另一主机的不同端口。端口号可以是一个单独的端口或者是端口范围 - 。协议可以为 tcp 或 udp。目标端口可以是端口号或者是端口范围 - 。目标地址可以是 IPv4 地址。受内核限制,端口转发功能仅可用于 IPv4。

意思是凡是来从 external进来的 22端口的数据包全部转发到 211.106.65.50

firewall-cmd --zone=external

--add-forward-port=port=22:proto=tcp:toaddress=211.106.65.50

14、禁止区域的端口转发或者端口映射

firewall-cmd [--zone=]

--remove-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][ :toad dress=address [/mask]]

15、查询区域的端口转发或者端口映射

firewall-cmd

[--zone=]--query-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]] [ :toaddress=address[/mask]]

处理永久区域:

永久选项不直接影响运行时的状态。这些选项仅在重载或者重启服务时可用。为了使用运行时和永久设置,需要分别设置两者。选项--permanent 需要是永久设置的第一个参数。

1、获取永久选项所支持的服务

firewall-cmd --permanent --get-services

2、获取永久选项所支持的 ICMP类型列表

firewall-cmd --permanent --get-icmptypes

3、获取支持的永久区域

firewall-cmd --permanent --get-zones

4、配置防火墙在 public 区域打开 http 协议,并保存,以致重启有效

firewall-cmd --permanent --zone=public --add-service=http 查看永久模式下 public区域是否打开http 服务。firewall-cmd --permanent --zone=public --query-service=http

5、防火墙开放 8080 端口在 public 区域

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

6、命令行配置富规则:

查看富规则:# firewall-cmd --list-rich-rules

创建富规则:

firewall-cmd--add-rich-rule 'rule family=ipv4 source address=10.35.89.0/24 service name=ftplog prefix="ftp" level=info accept' --permanent

firewall-cmd --add-rich-rule 'rule family=ipv4 sourceaddress=10.35.89.0/24 port port=80 protocol=tcp log prefix="80"level=info accept' --permanent

firewall-cmd --add-rich-rule rule family="ipv4" sourceaddress="192.168.10.30" forward-port port="808"protocol="tcp" to-port="80" to-addr="10.10.10.2"

富规则中使用伪装功能可以更精确详细的限制:

firewall-cmd--add-rich-rule 'rule family=ipv4 source address=10.10.10.2/24 masquerade'

仅允许部分 IP 访问本机服务配置

firewall-cmd --permanent --zone=public --add-rich-rule="rulefamily="ipv4" source address="192.168.0.0/24" servicename="http" accept"

禁止远程 IP 访问ssh

firewall-cmd--permanent --zone=public --add-rich-rule=’rule family=ipv4

sourceaddress=192.168.0.0/24 service name=sshreject’

7、删除rich 规则

firewall-cmd--permanent --zone=public --remove-rich-rule=’rule family=ipv4

sourceaddress=192.168.0.0/24 service name=sshreject’

8、仅允许部分 IP 访问本机端口配置

firewall-cmd --permanent --zone=public--add-rich-rule="rule family="ipv4" sourceaddress="192.168.0.0/24"port protocol="tcp"port="8080" accept"

9、创建rich 规则,可以指定日志的前缀和输出级别

firewall-cmd --permanent --zone=public --add-rich-rule="rulefamily="ipv4" source address="192.168.0.4/24"port port=8080protocol="tcp" log prefix=proxy level=warning accept"

可以通过查看/var/log/messages 日志文件

10、端口转发。实验环境下,desktop访问server的5423端口,将访问server的80端口。

Server上的操作:(172.25.0.10是desktop的IP地址)

11、172.25.1.0/24 网段内的客户端不能访问主机的 SSH

12、也可通过配置以下 XML 文件,进行对防火墙的配置修改

#cat /etc/firewalld/zones/public.xml

<?xmlversion="1.0" encoding="utf-8"?>

<zone>

<short>Public</short>

<description>Foruse in public areas. You do not trust the other computers on networks

to not harmyour computer. Only selected incoming connections areaccepted.</description>

<servicename="dhcpv6-client"/>

<servicename="ssh"/>

<rulefamily="ipv4">

<sourceaddress="192.168.0.4/24"/>

<servicename="http"/>

<accept/>

</rule>

</zone>

netfilter 防火墙总是容易受到规则顺序的影响,因为一条规则在链中没有固定的位置。在一条规则之前添加或者删除规则都会改变此规则的位置。在静态防火墙模型中,改变防火墙就是重建一个干净和完善的防火墙设置,默认链通常也没有安全的方式添加或删除规则而不影响其他规则。

动态防火墙有附加的防火墙功能链。这些特殊的链按照已定义的顺序进行调用,因而向链中添加规则将不会干扰先前调用的拒绝和丢弃规则。从而利于创建更为合理完善的防火墙配置。下面是一些由守护进程创建的规则,过滤列表中启用了在公共区域对ssh , mdns 和ipp-client的支持:

图形化配置工具

firewall daemon 主要的配置工具是 firewall-config。它支持防火墙的所有特性。管理员也可以用它来改变系统或用户策略。

命令行客户端

firewall-cmd 是命令行下提供大部分图形工具配置特性的工具。

注:要想了解更多 firewall 防火墙更多知识可以查看 firewall的相关手册页:

man -k firewalld

若要查看rich-rule 手册页

man firewalld.richlanguage

原文发布于微信公众号 - L宝宝聊IT(gh_b0e552aa80db)

原文发表时间:2018-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏吴小龙同學

Android ADB 命令行

用了 MBP,一直有个问题,不能像 Windows 一样直接拷贝文件到手机 SD 卡上,Android ADB 好像可以直接拷贝,但由于忙,没有去详细了解,最...

31510
来自专栏小狼的世界

为PHP编译imap扩展

最近为项目增加了邮箱登陆的验证,本地测试OK,部署至服务器上提示 imap_open 为未定义函数,由此可知缺少了IMAP的PHP扩展。

691
来自专栏信安之路

windows命令执行上传文件的姿势

我们在做渗透测试的时候会经常遇到存在命令执行的Windows服务器,而且不能上传shell,唯一的入口就是命令执行,这种情况下,我们需要向服务器上传一个大一点的...

730
来自专栏Hadoop实操

如何永久删除Kafka的Topic

使用kafka-topics --delete命令删除topic时并没有真正的删除,而是把topic标记为:“marked for deletion”,导致重新...

5736
来自专栏应兆康的专栏

【腾讯云的1001种玩法】在腾讯云上部署你的Hadoop集群

Apache Hadoop软件库是一个框架,开发者只需使用简单的编程模型在大量计算机(配置不高)上对大型数据集进行分布式处理。本文主要跟大家讲述如何在腾讯云上部...

6823
来自专栏smy

gulp 自动添加版本号

本文介绍利用 gulp-rev 和 gulp-rev-collector 进行版本管理 npm官网介绍使用后的效果如下: "/css/style.css" =>...

3185
来自专栏流媒体

Linux下C++打包so文件以及使用(Socket项目示例)简介

这里重点在与-I和-L参数。在前面gcc编译参数中我们讲到-I指的是头文件的搜索目录,-L是动态库的搜索目录。 这里我们就成功的进行了编译。 然后运行./m...

884
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Linux,Nginx,MySQL,以及PHP(LNMP)堆栈

LNMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在...

1264
来自专栏魏艾斯博客www.vpsss.net

WordPress 提示”存在不一致的文件权限”的解决办法

1143
来自专栏一“技”之长

使用Jenkins配置iOS自动化构建工具 原

      关于iOS自动化构建其实并不复杂,通过一些简单的Git与Xcode指令,加上UI,我们自己也可以动手编写一款自动化构建工具。这在之前的博客中也有涉及...

461

扫码关注云+社区