firewall防火墙

<h1 id="firewall防火墙">firewall防火墙
<h2 id="防火墙简介">1 防火墙简介

在基于RHEL7的服务器,提供了一个firewall的动态管理的防火墙,其支持IPv4和IPv6,还支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。

firewall的配置文件:/etc/lib/firewalld//etc/firewalld/下的XML文件。配置firewall可以直接编辑配置文件,也可以使用firewall-cmd命令行工具。

  1. 查看firewalld的状态
firewall-cmd --state
  1. 查看活动分区类别
firewall-cmd --get-active-zones
  1. 查看当前分配的接口
firewall-cmd --get-zone-of-interface=ens33
  1. 查看分配的区域的所有接口:
firewall-cmd --zone=public --list-interfaces
  1. 找出公共区域的所有设置
firewall-cmd --zone=public --list-all
firewall-cmd --list-all
  1. 关闭|开启所有的输入和输出的数据包(禁用)
# 关闭所有输入输出的数据包
firewall-cmd --panic-on
# 开启再次输入输出的数据包
firewall-cmd --panic-off
# 查看panic模式的状态(yes启用 no退出)
firewall-cmd --query-panic
  1. 重新加载防火墙
# 重新加载防火墙,不中断用户连接(不丢失状态信息)
firewall-cmd --reload
# 重新加载防火墙并中断用户连接(丢失状态信息),防火墙出现严重问题才执行
firewall-cmd --complete-reload
  1. 为分区增加接口
# 把em1增加到公共分区,增加--permanent选择并重新加载防火墙,是之永久生效
firewall-cmd --zone=public --add-interface=em1
  1. 设置分区(将一个端口加入分区)
# 设置默认分区,立即生效,不需要重新加载防火墙
firewall-cmd --set-default-zone=public
# 将一个端口加入分区
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
# 查看开发的端口
firewall-cmd --zone=public --list-ports
# 删除
firewll-cmd --zone=pubic --remove --remove-port=8080/tcp
  1. 将一个服务(http)加入到分区
# 加入
firewall-cmd --permanent --zone=work --add-service=http
firewall-cmd --reload
# 移除
firewall-cmd --permanent  --zone=work --remove-service=http
firewall-cmd --reload
# 注意,这并不会中断已经建立的连接。如果您打算中断,您可以使用 --complete-reload 选项,但这不仅仅中断您已经移除的服务,还会中断所有已经建立的连接。
  1. 配置伪装 IP 地址
# 查询是否可用
firewall-cmd --zone=external --query-masquerade
# 允许伪装IP
firewall-cmd --zone=external --add-masquerade
# 禁用伪装IP
firewall-cmd --zone=external --remove-masquerade
  1. 配置端口转发,地址转发
# 将22端口转发到3753端口,使用tcp协议
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
# 原本发往22端口的程序包现在被转发到地址是192.0.2.55下相同的端口
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.0.2.55
# 将22端口的数据包转发到192.0.2.55下的2055端口
firewall-cmd --zone=external /
      --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55
  1. 使用直接接口增加一个自定义规则
# 增加一个自定义规则到 “IN_public_allow” 链里:
 firewall-cmd --direct --add-rule ipv4 filter IN_public_allow \
      0 -m tcp -p tcp --dport 666 -j ACCEPT
# 从 “IN_public_allow” 链移除一个自定义规则:
firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow \
      0 -m tcp -p tcp --dport 666 -j ACCEPT
# 列出 “IN_public_allow” 链中的规则:
firewall-cmd --direct --get-rules ipv4 filter IN_public_allow
  1. 配置rich language语法:
    格式:
# 添加
firewall-cmd [--zone=zone] --add-rich-rule='rule' [--timeout 9=seconds]
# 移除
firewall-cmd [--zone=zone] --remove-rich-rule='rule'
# 检查是否存在
firewall-cmd [--zone=zone] --query-rich-rule='rule'

多规则结构:

rule [family=""]
    [ source address="
" [invert="True"] ] [ destination address="
" [invert="True"] ] [ ] [ log [prefix=""] [level=""] [limit value="rate/duration"] ] [ audit ] [ accept|reject|drop ]

多规则命令:

source:指定源地址,不支持使用主机名。可以通过增加 invert="true" 或 invert="yes" 来颠倒源地址命令的意思。所有提供的地址都匹配。
destination:通过制定目的地址,目标可以被限制在目的地址中。
service:服务名称是 firewalld 提供的其中一种服务。可以通过 firewall-cmd --get-services查看。格式: service name=service_name
port: 端口,可为范围或者独立数字 格式:port port=number_or_range protocol=protocol
protocol:协议
icmp-block:用这个命令阻绝一个或多个 ICMP 类型,查看支持的icmp类型列表:firewall-cmd --get-icmptypes,格式: icmp-block name=icmptype_name
masquerade:打开规则里的 IP 伪装。用源地址而不是目的地址来把伪装限制在这个区域内。在此,指定一个动作是不被允许的。
forward-port:从一个带有指定为 tcp 或 udp 协议的本地端口转发数据包到另一个本地端口,或另一台机器,或另一台机器上的另一个端口.格式:forward-port port=number_or_range protocol=protocol /
            to-port=number_or_range to-addr=address
            

运行来自主机192.168.1.3的所有IPv4流量

firewall-cmd --zone=public --add-rich-rule="rule family='ipv4' source address=192.168.1.3 accept" 

拒绝来自主机192.168.1.4到22端口的tcp流量

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.1.4 port port=22 protocol=tcp reject'

允许主机10.1.0.3到80端口的IPv4的TCP流量,并转发到65530端口上

firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=65530'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。管道用于具有亲缘关系的进程间通信,有名管道的每个管道具有名字,使没有亲缘关系的进程间也可以通信。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息。&#xD;&#xA;&#xD;&#xA;按实现原理分,可分为基于计数器和跟踪以及剖析。含义如下:&#xD;&#xA;&#xD;&#xA;计数器:内核维护的统计数据,通常为无符号整型,用于对发生的事件计数,比如,网络包接收计数器,磁
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书验证,详细追踪整个交互过程,可用于调用网络后端接口,诊断http和https网络服务故障。
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满、fd泄漏等问题。命令包括ping、fping、tcpdump、lsof、netstat、/proc/$pid/fd、du、grep、traceroute、dig。
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的进程数目,用uptime查看到负载很高,既有可能是CPU利用率高,也可能是大量在等待io的进程导致,用mpstat查看每个CPU的使用情况,查看CPU的使用率或者CPU花在等待io的时间,接着用pidstat定位具体的进程
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线程切换及中断切换,进程切换的开销较大,除了需要保存寄存器和程序计数器中的值还需保存全局变量、栈等到内存中,以便下次运行恢复,而同一进程中的线程切换开销会小很多,只需更新寄存器和线程独有的栈,共享资源如打开的文件、全局变量等无需切换,当硬件中
1.top命令 作用:该命令可以按CPU使用.内存使用和执行时间对任务进行排序,常用来监控系统中占用CPU或内存较高的程序及CPU和内存的负载。 默认视图: 当想看系统负载时,可观察汇总的%CPU中的us用户进程和sy系统进程是否占用CPU很高,相加接近100%就说明占用很高了,有些程序可能得不到及
文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限!!!粘滞位!!!超详解!!!
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Windows、Linux、MacBook_mack book 安装qt
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Linux——了解操作系统的发展历史以及初次体验Linux编程环境
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)_openssh_9.5p1
文章浏览阅读3.5k次,点赞93次,收藏78次。初识Linux中的线程,理解线程的各种概念,理解进程地址空间中的页表转换,介绍pthread线程库并理解线程库!
文章浏览阅读863次。出现此问题为Linux文件权限问题,解决方案为回到引擎目录执行命令。输入用户密码后运行./UnrealEditor。_increasing per-process limit of core file size to infinity.
文章浏览阅读2.9k次。使用文本编辑器:打开CSV文件,并使用文本编辑器(如Notepad++、Sublime Text、Visual Studio Code等)来查看文件的字符编码格式。通常在编辑器的底部状态栏或设置中可以找到当前编码的显示。请注意,上述方法并非绝对准确,特别是当文件没有明确的编码标识时。因此,如果你发现CSV文件在不同的工具或方法中显示不同的编码格式,可能需要进行进一步的分析和判断,或者尝试使用不同的编码转换方法。该命令将输出文件的MIME类型和编码信息。使用命令行工具:在命令行中,你可以使用。_shell读取csv文件逐行处理
本文介绍了如何在Linux系统中升级gcc版本,以便更好地支持C++11及以上版本的新特性。通过升级gcc,可以提升编译器的功能和性能,获得更好的开发体验。详细的步骤和方法请参考原文链接。
文章浏览阅读4.4k次,点赞6次,收藏19次。Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单,可以方便的来进行一些测试。_linux mosquitto
文章浏览阅读7.2k次,点赞2次,收藏12次。Linux中,用于根目录下有一个.ssh目录,保存了ssh相关的key和一些记录文件。_~/.ssh/
文章浏览阅读4.5k次,点赞5次,收藏18次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具