Linux操作系统-11-Firewalld

2024-04-18 17:36

本文主要是介绍Linux操作系统-11-Firewalld,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、IPtables总结

常用的两张表:filter和net

filter用于过滤数据包,net用于路由转发功能

常用的两条链:INPUT、OUTPUT

常见的是三个行为:ACCEPT、DROP、REJECT

限制变量的三个特征:端口、协议、IP(五元组),-d -s   --dport    --sport   -pc

端口转发:本机端口、远程端口

在firewalld中,没有表、没有链、没有行为,默认拒绝所有流量。

二、Firewalld防火墙

1、firewalld的区域

  • drop:丢弃
    任何传入的网络数据包都被丢弃,只能进行传出网络连接
  • block:阻止
    任何传入的网络连接都被拒绝,其中包含用于Ipv4de icmp-host-prohibited消息和用于Ipv6的icmp6-adm-prohibited,只能从系统内启动网络连接。
  • public:公共(默认)
    用于公共场所,您不相信网络上其他计算机不会损害您的计算机,仅接受选定的传入连接。
  • dmz:管制区
    适用于非军事区中的计算机,这些计算机可公开访问,并且对内部网络的访问权限有限,仅接受选定的传入连接。
  • work:工作
    用于工作区域,您最常信任网络上的其他计算机,以免损害您的计算机,仅接受选定的传入连接。
  • home:家庭
    适用于家庭领域。您最信任网络上的其他计算机,以免损害您的计算机,仅接受选定的传入连接。
  • internel:内部
    用于内部网络。您最常信任网络上的其他计算机,以免损害您的计算机,仅接受选定的传入连接。
  • trusted:受信任
    接受所有的网络连接。
    可以将这些区域中的一个指定默认区域,将接口连接添加到NetworkManager时,会将它们分配到默认区域,安装时,firewalld中的默认区域是public公共区域。

在不同区域下,可以设置不同的防火墙策略,以便在需要的时候可以实现快速切换,而不需要从0开始配置一套,对于一套服务器环境来说,通常情况下,没有那么多需要去切换。配置drop、public和其他即可。

2、查看不同区域下的规则

  • firewall-cmd --list-all
    默认是public 区域

#说明: 
#icmp-block-inversion表示是否禁用icmp,默认为no,表示我们可以ping这台服务器
#interfaces表示默认关联的网卡
#source:ip地址默认没有对任何IP地址进行限制
#servces:服务,默认允许了IPV6客户端的ssh服务
#ports:允许的端口
#protocols:允许的协议
#masquerade:是否允许IP伪装
#forward-ports:转发的端口
#source-ports:源端口
# rich rules:富规则

[root@bastion215 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client sshports: 443/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  •  firewalld-cmd --set-default-zone=trusted
    切换到trusted所有流量都可以通过
Last login: Sat Sep 16 10:37:10 2023 from 192.168.1.133
[root@bastion215 ~]# firewall-cmd --set-default-zone=trusted
success
[root@bastion215 ~]# firewall-cmd --list-all
trusted (active)target: ACCEPTicmp-block-inversion: nointerfaces: ens33sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
  • firewall-cmd --set-default-zone=drop
    切换到drop区域默认全都不接受,drop区域target是DROP
[root@bastion215 ~]# firewall-cmd --set-default-zone=drop
success
[root@bastion215 ~]# firewall-cmd --list-all
drop (active)target: DROPicmp-block-inversion: nointerfaces: ens33sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: [root@bastion215 ~]# 

  •  firewall-cmd --set-default-zone=block
    切换到block区域默认全都不接受,block区域target是REJECT
[root@bastion215 ~]# firewall-cmd --set-default-zone=block
success
[root@bastion215 ~]# firewall-cmd --list-all
block (active)target: %%REJECT%%icmp-block-inversion: nointerfaces: ens33sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: [root@bastion215 ~]# 

3、添加允许规则

(1)添加端口

  • firewall-cmd --add-port=80/tcp

[root@bastion215 ~]# firewall-cmd --add-port=80/tcp
success
[root@bastion215 ~]# firewall-cmd --list-all
drop (active)target: DROPicmp-block-inversion: nointerfaces: ens33sources: services: ports: 80/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
  • firewall-cmd --remove-port=80/tcp 
[root@bastion215 ~]# firewall-cmd --remove-port=80/tcp
success
[root@bastion215 ~]# firewall-cmd --list-all
drop (active)target: DROPicmp-block-inversion: nointerfaces: ens33sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 

(2)添加服务

  • firewall-cmd --add-service=http
[root@bastion215 ~]# firewall-cmd --add-service=http
success
[root@bastion215 ~]# firewall-cmd --list-all
drop (active)target: DROPicmp-block-inversion: nointerfaces: ens33sources: services: httpports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: #使用iptables附加得看看端口号
[root@bastion215 ~]# iptables -nL | grep 80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ctstate NEW,UNTRACKED

使用firewall-cmd --get-services命令查看可以通过添加服务配置防火墙的规则有哪些

[root@bastion215 ~]# firewall-cmd --get-services
RH-Satellite-6 RH-Satellite-6-capsule amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

重启防火墙后,配置的规则将消失,为了让配置的规则永久生效,即重启firewalld之后规则也一直存在。

(3)将规则写入配置文件

permanent相当于直接把add-service写进配置文件,
firewall-cmd --list-all实时显示出来的还没有,需要--reload重新加载一下。

firewall-cmd --add-service=http --permanent
firewall-cmd --list-all
firewalld-cmd --reload
firewall-cmd --list-all

(4)查看当前活动区域

firewall-cmd --get-active-zone

(5)获取到所有的区域

firewall-cmd --get-zones

三、Firewalld进阶用法

1、拒绝所有包

拒绝所有包:

firewall-cmd --panic-on

取消拒绝状态:

firewall-cmd --panic-off

查看是否拒绝:

firewall-cmd --query-panic

firewalld的配置文件存放路径:cd /usr/lib/firewalld

2、临时允许某服务通过一段时间

firewall-cmd --zone=public --add-service=http --timeout=1m   

注:timeout选项是一个以秒(s)、分(m)或小时(h)为单位的时间值。

重载防火墙

firewall-cmd --reload

检查防火墙状态

firewalld-cmd --state

重启firewalld

systemctl restart firewalld

检查设定是否生效

iptables -L -n | grep 21
firewall-cmd --list-all

3、富规则

富规则是支持五元组的各种约束的

(1)添加指定ip访问特定端口

firewall-cmd --permanent --add-rich-rule ‘rule family=ipv4 source address=192.168.112.1 port  protocol=tcp port=80 accept’

(2)删除指定ip访问特定端口

firewall-cmd --permanent --remove-rich-rule ‘rule family=ipv4 source address=192.168.112.1 port  protocol=tcp port=80 accept’

(3)接受某网段所有IP访问ssh

接受192.168.112.0网段所有IP访问SSH服务

firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.112.0/24 service name=ssh accept’

(4)拒绝某网段所有IP访问ssh

firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.112.0/24 service name=ssh drop’

(5)禁止某个IP访问

iptables -I INPUT -s 192.168.112.1 -j DROP

firewall -cmd --add-rich-rule=‘rule family=ipv4 source address=“192.168.112.1” drop’

(6)允许ping

firewalld -cmd --add-rich-rule='rule family="ipv4" protocol value="icmp" source address="192.168.112.1" accept'

与iptables一致:富规则中的动作可以设置为:accept、drop、reject(注意是小写)

4、直接模式

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 192.168.112.1 -j ACCEPT

注意:INPUT后面得数字1 代表谷子额得优先级,数字越小,优先级越高,建议优先级从1开始。

通过直接 模式添加富规则后,使用firewall-cmd --list-all命令是看不到的,使用以下命令查看:

firewall-cmd --direct --get-all-rules

添加下面两条规则,优先级高的DROP生效

firewall-cmd --direct --add-rule ipv4 filter INPUT 5 -p tcp --dport 80 -s 192.168.112.1 -j ACCEPT

firewall-cmd --direct --add-rule ipv4 filter INPUT 3 -p tcp --dport 80 -s 192.168.112.1 -j DROP

5、端口转发

  • 端口转发可以指定地址访问指定的端口时,将流量转发至指定地址的指定端口。
  • 转发的目的如果不指定ip的话默认时本机,如果指定了IP却没指定端口,则默认使用来源端口
  • 如果配置好端口转发之后不能用,可以检查下面两个问题:
    比如我将80端口转发只8080端口,首先检查本地的80端口和目标的8080端口是否开放监听了其次检查是否允许伪装IP,没允许的话要开启伪装IP

#将8888端口的流量转发至80

firewall-cmd --add-forward-port=port=8888:poroto=tcp:tport=80

firewall-cmd --remove-forward-port=port=8888:poroto=tcp:tport=80

#开启伪装IP

firewall-cmd --query-masquerade        #j检查是否允许伪装IP

firewall-cmd --add-masquerade           #允许防火墙伪装IP

firewall-cmd --remove-masquerade      #禁止防火墙伪装IP

#将8888端口的流量转发至101.37.65.91的80端口

firewall-cmd --add-forward-port=port=8888:proto=tcp:toaddr=101.37.65.91:toport=80

当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再打开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。

端口转发还可以做流量分发,一个防火墙拖着好几台运行着不同服务的机器,然后用防火墙将 不同端口的流量转发至不同机器。

这篇关于Linux操作系统-11-Firewalld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915434

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

Linux 下的Vim命令宝贝

vim 命令详解(转自:https://www.cnblogs.com/usergaojie/p/4583796.html) vi: Visual Interface 可视化接口 vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式)输入模式末行模式 模式转换: 编辑-->输入: i: 在当前光标所在字符的前面,转为输入模式

Linux和Mac分卷压缩

使用 zip 命令压缩文件 使用 zip 命令压缩文件,并结合 split 命令来分卷: zip - largefile | split -b 500k 举例: zip - ./tomcat.dmg |split -b 500k 上述命令将文件 largefile 压缩成 zip 包并分卷成不超过 500k 的文件,分解后文件名默认是 x* ,后缀为 2 位a-z 字母,如 aa、ab。