Iptables与Firewalld防火墙

news2024/11/15 9:49:39

 前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 

目录

一、防火墙管理工具

二、Iptables

三、Firewalld

​四、服务的访问控制列表

五、Cockpit驾驶舱管理工具

致谢


一、防火墙管理工具

防火墙策略基于流量的源目地址、端口号、协议、应用等信息来定制,使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样能够保证仅有合法的流量在企业内网和外部公网之间的流动了

从RHEL 7系统开始,firewalld防火墙正式取代了iptables防火墙。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。我们只需要配置妥当其中的一个就足够了

二、Iptables

早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙管理服务已经被投入使用,但大量的企业在生产环境中依然出于各种原因而继续使用iptables。

1、策略与规则链

防火墙会从上至下的顺序来读取配置的策略规划,在找到匹配项后就理解结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。若读取完后没有匹配项,就去执行默认的策略。

iptables服务把用于处理或过滤流量的策略条目称为规则多条规则可以组成一个规则链,而规则链依据数据包处理位置的不同进行分类,具体如下:

  • 在进行路由选择先处理数据包(PREROUTING)
  • 处理流入的数据包(INPUT)
  • 处理流出的数据包(OUTPUT)
  • 处理转发的数据包(FORWARD)
  • 在进行路由选择后处理数据包(POSTROUTING)

"允许"、"拒绝"、"登记"、"不理它"对应到iptables服务的术语中分别是ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、DROP(拒绝流量通过)。DROP直接将流量丢弃而且不响应;REJECT则会在拒绝流量后再回复一条”信息已经收到,但是被扔掉了“

(红帽考试中必须使用REJECT进行拒绝,明确让判分脚本得到反应才有分值。而工作中建议用DROP进行拒绝,对隐藏服务器运行状态有好处)

当Linux系统中的防火墙策略设置为REJECT拒绝动作后,流量发送方会看到端口不可达到的响应:

 [root@linuxprobe ~]# ping -c 4 192.168.10.10
 PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
 FROM 192.168.10.10 icmp_seq=1 Destination Port Unreachable
 FROM 192.168.10.10 icmp_seq=1 Destination Port Unreachable
 FROM 192.168.10.10 icmp_seq=1 Destination Port Unreachable
 FROM 192.168.10.10 icmp_seq=1 Destination Port Unreachable
 --- 192.168.10.10 ping statistics ---
 4 packets transmitted, 0 received, 100% packet loss, time 3063ms

而把linux系统中防火墙策略修改为DROP拒绝动作后,流量发送方会看到响应超时的提醒。

 [root@linuxprobe ~]# ping -c 4 192.168.10.10
 PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
 ​
 --- 192.168.10.10 ping statistics ---
 4 packets transmitted, 0 received, 100% packet loss, time 3063ms

2、基本的命令参数

iptables是一款基于命令行的防火墙策略管理工具,具有大量参数,学习难度较大。只需掌握常用的参数并做到灵活搭配即可

根据OSI七层模型的定义,iptables属于是数据链路层的服务,所以可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。再次提醒:防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级高的策略规则放到前面,以免发生错误。下面是常用参数:

参数作用
-P设置默认策略
-F清空规则链
-L查看规则链
-A在规则链的末尾加入新规则
-l num在规则链的头部加入新规则
-D num删除某一条规则
-s匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d匹配目标地址
-i 网卡名称匹配从这块网卡流入的数据
-o 网卡名称匹配从这块网卡流出的数据
-p匹配协议,如TCP、UDP、ICMP
--dport num匹配目标端口号
--sport num匹配来源端口号

1、在iptables命令后添加-L参数查看已有的防火墙规则链:

 [root@linuxprobe ~]# iptables -L
 Chain INPUT (policy ACCEPT)
 target     prot opt source               destination         
 ​
 Chain FORWARD (policy DROP)
 target     prot opt source               destination         
 DOCKER-USER  all  --  anywhere             anywhere            
 DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
 ACCEPT     all  --  anywhere             anywhere             ctstate 
 ...

2、在iptables命令后添加-F参数清空已有的防火墙规则链:

 [root@linuxprobe ~]# iptables -F
 [root@linuxprobe ~]# iptables -L
 Chain INPUT (policy ACCEPT)
 target     prot opt source               destination         
 ​
 Chain FORWARD (policy DROP)
 target     prot opt source               destination         
 ​
 Chain OUTPUT (policy ACCEPT)
 target     prot opt source               destination    

3、把INPUT规则链的默认策略设置为拒绝:

 [root@linuxprobe ~]# iptables -P INPUT DROP
 Chain INPUT (policy DROP)
 target     prot opt source               destination         
 ​
 Chain FORWARD (policy DROP)
 target     prot opt source               destination         
 ​
 Chain OUTPUT (policy ACCEPT)
 target     prot opt source               destination 

4、向INPUT链中添加允许ICMP流量进入的策略规则

在日常运维工作中,经常使用ping命令来检查对方主机是否在线,而向防火墙的INPUT规则链中添加一条允许ICMP流量进入的策略规则就默认允许了这种ping命令检测行为。

 [root@linuxprobe ~]# iptables -I INPUT -p icmp -j ACCEPT
 [root@linuxprobe ~]# ping -c 4 10.0.0.2
 PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
 64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.037 ms
 64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.028 ms
 64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.029 ms
 64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.030 ms
 ​
 --- 10.0.0.2 ping statistics ---
 4 packets transmitted, 4 received, 0% packet loss, time 3098ms
 rtt min/avg/max/mdev = 0.028/0.031/0.037/0.003 ms

5、删除INPUT规则链中刚刚加入的那条策略(允许ICMP流量),并把默认策略设置为允许

使用-F清空已有的所有防火墙策略,使用-D参数可以指定删除某一条策略,更加安全和准确

 [root@linuxprobe ~]# iptables -D INPUT 1
 [root@linuxprobe ~]# iptables -P INPUT ACCEPT
 [root@linuxprobe ~]# iptables -L
 Chain INPUT (policy ACCEPT)
 target     prot opt source               destination         
 ​
 Chain FORWARD (policy DROP)
 target     prot opt source               destination         
 ​
 Chain OUTPUT (policy ACCEPT)
 target     prot opt source               destination 

6、将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其它的所有主机的流量

 [root@linuxprobe ~]# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
 [root@linuxprobe ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT
 [root@linuxprobe ~]# iptables -L
 chain INPUT (policy ACCEPT)
 target prot opt source destination
 ACCEPT tcp -- 192.168.10.0/24 anywhere tcp dpt:ssh
 REJECT tcp -- anwhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
 ...

再次重设,防火墙策略时按照从上往下的顺序匹配的,因此一定要把运行动作放到拒绝动作前面,否则所有的流量都被拒绝了。

# 使用IP地址在192.168.10.10/24网段内的主机访问服务器
[root@linuxprobe ~]# ssh 192.168.10.10
...连接上了...192.168.10.10/24

# 再使用IP地址在192.168.20.10/24网段内的主机访问服务器的22端口
[root@linuxprobe ~]# ssh 192.168.10.10
Connection failed

7、向INPUT规则链中添加拒绝所有人访问本机12345端口的策略规则:

[root@linuxprobe ~]# iptables -I INPUT -p tcp --dport 12345 -j REJECT
[root@linuxprobe ~]# iptables -I INPUT -p udp --dport 12345 -j REJECT
[root@linuxprobe ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT udp -- anwhere anywhere udp dpt:italk reject-with icmp-port-unreachable
REJECT tcp -- anwhere anywhere tcp dpt:italk reject-with icmp-port-unreachable
ACCEPT tcp -- 192.168.10.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anwhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
...

8、向INPUT规则链中添加拒绝192.168.10.5主机访问本机80端口(Web服务)的策略规则:

[root@linuxprobe ~]# iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT
[root@linuxprobe ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT tcp -- 192.168.10.5 anywhere tcp dpt:http reject-with icmp-port-unreachable
...

9、向INPUT规则链中添加拒绝所有主机访问本机1000~1024端口的策略规则

[root@linuxprobe ~]# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
[root@linuxprobe ~]# iptables -A INPUT -p udp --dport 1000:1024 -j REJECT
[root@linuxprobe ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT tcp -- anywhere anywhere tcp dpts:cadlock2:1024 reject-with icmp-port-unreachable
REJECT udp -- anywhere anywhere udp dpts:cadlock2:1024 reject-with icmp-port-unreachable
...

把上面实例消化吸收就完全可以搞定日常的iptables配置工作了。注意:使用iptables命令配置的防火墙规则默认会在系统下一次启动时失效,如果想要配置的防火墙策略永久生效,还要执行保存命令

[root@linuxprobe ~]# iptables-save

# 若服务器版本是5/6/7版本的话,对应的保存命令是
[root@linuxprobe ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[OK]

三、Firewalld

RHEL 8系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewalld Manager of Linux systems)服务是默认的防火墙配置管理工具,也叫Linux系统的动态防火墙管理器,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。

Firewalld支持动态更新技术并加入区域(zone)的概念。区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。firewalld中常见的区域名称以及相关的策略规则:

区域默认规则策略
trusted允许所有的数据包
home拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal等同与home区域
work拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

1、终端管理工具

firewall-cmd是firewalld防火墙配置管理工具的CLI命令行界面版本。它的参数一般都是以“长格式”来提供的:

参数作用
--get-default-zone查询默认的区域名称
--set-default-zone=<区域>设置默认的区域,使其永久生效
--get-zones显示可用的区域
--get-services显示预先定义的服务
--get-active-zones显示当前正在使用的区域与网卡名称
--add-source=将源自此IP或子网的流量导向指定的区域
--remove-source=不再将源自此IP或子网的流量导向某个指定区域
--add-interface=<网卡名称>将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称>将某个网卡与区域进行关联
--list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones显示当前区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名>设置默认区域允许该服务的流量
--add-port=<端口号/协议>设置默认区域允许该端口的流量
--remove-service=<服务名>设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议>设置默认区域不再允许该端口的流量
--reload让”永久生效“的配置规则立即生效,并覆盖当前的配置规则
--panic-on开启应急状况模式
--panic-off关闭应急状况模式

与Linux系统中其他的防火墙策略配置一样,使用firewalld配置的防火墙策略默认为运行时(Runtime)模式,又称当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式,方法是在用firewalld-cmd命令正常设置防火墙策略时添加--permanent参数,这样配置的防火墙策略就可以永久生效了。但是这需要在系统重启后才能自动生效,或手动执行firewalld-cmd --reload命令。

1、查看firewalld服务当前所使用的区域

[root@linuxprobe ~]# firewall-cmd --get-default-zone 
public

2、查询指定网卡在firewalld服务中绑定的区域:

生产环境中,服务器大多不止有一块网卡,假如作为网关的服务器有两块网卡,一块对公网,一块对内网,那么这两块对审查流量时的策略肯定也是不一样的。

[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=ens33
public

3、把网卡默认区域修改为external,并在系统重启后生效:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface=ens33
The interface is under control of NetworkManager, setting zone to 'external'.
success
[root@linuxprobe ~]# firewall-cmd --permanent --get-zone-of-interface=ens33
external

4、把firewalld服务的默认区域设置为public:

默认区域也叫全局配置,指对所有网卡都生效的配置,优先级较低。可以看到当前默认区域为public,而ens33网卡的区域为external,这种情况便是以网卡的区域名称为准:

[root@linuxprobe ~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone 
public
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=ens33
external

5、启动和关闭firewalld防火墙服务的应急状况模式:

"--panic -on"参数会立即切断一切网络,而"--panic -off"则是恢复网络连接

[root@linuxprobe ~]# firewall-cmd --panic-on
success
[root@linuxprobe ~]# firewall-cmd --panic-off
success

6、查询ssh和https协议的流量是否允许放行:

虽然工作中不可以使用"--zone"参数指定区域名称,firewall-cmd命令会自动依据默认区域进行查询,减少用户输入量。如果默认区域与网卡所绑定的不一致时,就会发生冲突的情况,因此规范写法是要一定要加的

[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no

7、把https协议的流量设置为永久允许放行,并立即生效:

默认情况下做的修改都属于Runtime模式,即当前生效而重启后失效,在工作和考试经量避免使用。而使用"--permanent"参数时则当前不会立即看到效果,而是重启或重新加载后方可生效。于是,当添加了允许放行https协议的流量后,查询当前模式策略依然是不允许:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no

不想重启服务器的话,要用"--reload"参数:

[root@linuxprobe ~]# firewall-cmd --reload 
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
yes

8、把http协议的流量设置为永久拒绝,并立即生效:

由于默认来讲http协议流量就没有被允许,所以会有:”Warning:NOT_ENABLED:http"这样的提示,对实际操作没有影响:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --remove-service=http
Warning: NOT_ENABLED: http
success
[root@linuxprobe ~]# firewall-cmd --reload 
success

9、把访问8080和8081端口的流量策略设置为允许,但仅限当前生效:

[root@linuxprobe ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports 
8080-8081/tcp

10、把原本访问本机888端口的流量转发到22端口,要求当前和长期均有效:

ssh远程控制协议是基于22/tcp端口号传输控制指令的,如果想要其他用户通过其他端口号也能访问到ssh服务,就可以试试端口技术。

使用firewall-cmd命令实现端口号转发的格式有点长:

firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

命令中的目标IP地址一般写服务器本机:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=10.0.0.2
success
[root@linuxprobe ~]# firewall-cmd --reload 

在客户端使用上述命令尝试访问10.0.0.2主机的888端口:顺利成功

[root@client A ~]# ssh -p 888 10.0.0.2

11、富规则的设置:

富规则也叫复规则。表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先即在所有的防火墙策略也是最高的。

比如:我们可以在firewalld服务中配置一条富规则,使其拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务(22端口)

[root@linuxprobe ~]# firewalld-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"

在客户端使用ssh命令尝试访问192.168.10.10主机的ssh服务:

[root@linuxprobe ~]# ssh 192.168.10.10
Connecting to 192.168.10.10:22...
Could not connect to '192.168.10.10' (port 22): Connection failed

2、图形管理工具

firewall-config防火墙配置管理工具的GUI图形用户界面版本,几乎可以实现所有以命令来执行的操作。即使读者没有扎实的Linux基础,也可以妥善配置。但默认情况下未被提供,需要自行用dnf命令安装,所以需要先配置软件仓库:

首先将虚拟机的CD/DVD光盘选项设置为“使用ISO镜像/映像文件”,并选择好下载好的系统镜像

然后把光盘设备中的系统镜像挂载到/media/cdrom目录

[root@linux ~]# mkdir -	p /media/cdrom
[root@linux ~]# mount /dev/cdrom /media/cdrom
mount: /media/cdrom: WARNING: device write-protected, mount read-only.

为了一直能为用户提供服务,将配置信息写入到/etc/fstac中:

[root@linux ~]# vim /etc/fstab
...
/dev/cdrom 			/media/cdrom				 iso9660 defaults 			0 0

最后,使用Vim文本编辑器创建仓库软件的配置文件。REHL 8需要配置两个软件仓库,即[BaseOS]与[AppStream]缺一不可

[root@linux ~]# vim /etc/yum.repos.d/rhel18.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0

正确配置软件仓库后,使用dnf/yum命令安装软件了

[root@linux ~]# yum install firewall-config

firewall-config的图形化界面如图:

具体功能如下:

  1. 选择运行时(Runtime永久(Permanent)模式的配置
  2. 可选的策略集合区域列表
  3. 常用的系统服务列表
  4. 主机地址的黑白名单
  5. 当前正在使用的区域
  6. 管理当前被选中区域的服务
  7. 管理当前被选中区域的端口
  8. 设置允许被访问的协议
  9. 设置允许被访问的端口
  10. 开启或关闭SNAP源地址转换协议技术
  11. 设置端口转发策略
  12. 控制请求icmp服务的流量
  13. 管理防火墙的富规则
  14. 被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量
  15. firewall-config工具的运行状态

还有用于将网卡与区域绑定的"Interfaces"和用于将IP地址与区域绑定的"sources"选项

实践:将当前区域中请求http服务的流量设置为允许放行,但仅限当前生效:

添加一条防火墙规则:放行8080-8088端口(TCP协议)的流量,并将其设置为永久生效,达到系统重启后防火墙策略依然生效;配置完后,在Options菜单中单击Reload Firewalld命令,让防火墙策略立即生效;

 

2.1、SNAT技术

SNAT(Source Network Address Translation)源网络地址转换技术。SNAT是一种为了解决IP地址匮乏而设计的技术,可以使得多个内网中的用户通过同一个外网IP接入Internet。

网络中不使用SNAT技术:局域网PC机发出的请求在服务器响应后返回的数据包无法找到这个私有网络的IP地址。

网络中使用SNAT技术:发给网关服务器后,在转发给局域网中的PC

使用iptables命令实现SNAT技术是一件很麻烦的事情,但是在firewall-config中简单实现:

使用不同的方式:将本机888端口的流量转发到22端口,且要求当前和长期均有效:

让192.168.10.20主机访问到本机的1234端口号,如图:其中Element选项能够根据服务名称、端口号、协议等信息进行匹配;Source与Destination选项后的inverted参数代表反选功能,勾选后代表对已填写信息进行反选,即除了填写信息以外的主机地址;Log日志选项选中后不仅会记录到日志文件中,还可以选择重要级别,便于后续筛查。

生成环境中服务器有多块网卡在同时提供服务,则对内网和对外网提供服务的网卡要选中的防火墙策略区域也是不一样的。就是说,可以把网卡与防火墙策略区域进行绑定,就可以使用不同的防火墙区域策略,对源自不同网卡的流量进行针对性的监控:

四、服务的访问控制列表

TCP Wrappers是RHEL 6/7系统中默认启用的一款流量监控程序,能够根据来访主机地址与本机的目标服务程序做出允许或拒绝的操作,当前8版本中已经被Firewalld正式替代。就是说:Linux系统中其实有两个层面的防火墙,第一种是前面讲到的基于TCP/IP协议的流量过滤工具,而TCP Wrappers服务则是能允许或禁止Linux系统提供服务的防火墙,从而在更高层面保护了Linux系统的安全运行。

TCP Wrappers服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表问来阻止对服务的请求流量。

  • 控制列表文件修改后会立即生效
  • 系统先检查允许控制列表文件(/etc/hosts.allow),匹配到相应策略则允许放行;没有则进一步匹配控制列表文件,匹配到则拒绝
  • 都没匹配到则默认放行流量

8版本中已不再支持TCP Wrappers服务程序,因此在另一台服务器上进行实验;TCP Wrappers常用参数:

客户端类型示例满足示例的客户端列表
单一主机192.168.10.10IP地址为192.168.10.10的主机
指定网段192.168.10.IP地址为192.168.10.0/24的主机
指定网段192.168.10.0/255.255.255.0IP地址为192.168.10.0/24的主机
指定DNS后缀.linuxprobe.com所有DNS后缀为.linuxprobe.com的主机
指定主机名称www.linuxprobe.com主机名称为www.linuxprobe.com的主机
指定所有客户端ALL所有主机全部包括在内

配置TCP Wrappers服务时要遵循两个原则:

  • 编写拒绝策略规则时,填写的是服务名称,而非协议名称
  • 建议先编写拒绝策略规则再编写允许策略规则,以便直观地看到相应的效果

下面编写拒绝策略规则文件,禁止访问本机sshd服务的所有流量(无需修改/etc/hosts.deny文件中原有的注释信息):

[root@linux ~]# vim /etc/hosts.deny
#
# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
sshd:*
[root@linux ~]# ssh 192.168.10.10
# 连接不通过

接下来,在允许策略规则文件中添加一条规则,使其放行源自192.168.10.0/24网段,访问本机sshd服务的所有流量:

[root@linux ~]# vim /etc/hosts.allow
#
# hosts.allow   This file contains access rules which are used to
#               allow or deny connections to network services that
#               either use the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
sshd:192.168.10.
[root@linux ~]# ssh 192.168.10.10
# 连接通过
[root@linux ~]# 

五、Cockpit驾驶舱管理工具

Cockpit是一个基于网页的图形化工具,天然具备很好的跨平台性,被广泛用于服务器、容器、虚拟机等。下面进行安装:

[root@linux ~]# yum install cockpit
Updating Subscription Management repositories.
Last metadata expiration check: 1:01:25 ago on Sun 07 Jul 2024 12:51:23 PM CST.
Package cockpit-310.4-1.el8_10.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

cockpit服务程序在RHEL 8.0版本中没有自动运行,将它开启并加入到开机自启项中:

[root@linux ~]# systemctl start cockpit
[root@linux ~]# systemctl enable cockpit.socket
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.

服务开启后打开系统自带浏览器,访问"本机地址:9090"即可访问。由于https加密协议,但证书又是本地签发的,因此需要再多一个信任本地证书的操作:

 

进入到Cockpit网页:总计十三个功能模块:系统状态、日志信息、硬盘存储、网卡网络、账户安全、服务程序、软件仓库、报告分析、内核排错、SELinux、更新软件、订阅程序、终端界面。  

1、系统状态

能够看到系统架构、版本、主机名与时间等信息,还能够动态的展现出CPU、硬盘、内存和网络的复杂情况;

2、日志信息

上面有两个选项:时间和日志级别,通过这两选项能让用户更快的找到所需信息;

3、硬盘存储

让用户能够通过该界面,用鼠标创建出RAID、LVM、VDO和iSCSI等存储设备

4、网卡网络

可动态看网卡的输出和接收值;还可以进行网卡的绑定(Bonding)和聚合(Team),还可以创建桥接网卡以及添加VLAN,最下方会单独列出与网卡相关的日志信息:

5、账户安全

进入到管理用户的界面中,可以对用户进行重命名、设置权限、锁定、修改密码及创建SSH密钥信息

6、服务程序

可以查看到系统中已有的服务列表和运行状态,点击进入后可以对具体的服务进行开启、关闭操作。设置服务加入到开机启动项中,重启后也会依然为用户进行服务

 7、软件仓库

后期如果有Cockpit或红帽订阅服务安装的软件,将会显示在这里

8、报告分析

报告分析模块的功能是帮助用户收集及分析系统的信息,找到系统出现问题的原因,其实功能鸡肋,就是将sosreport命令做成了一个网页按钮

9、内核排错

Kdump是一个用于收集系统崩溃、死锁或死机时内核参数的一个服务。如果一天系统崩溃了,这时Kdump服务就会开始工作,将系统运行状态和内核数据收集到一个“dump core:的文件中,便于后续分析。由于在安装系统时没有启用它,因此该界面可以等后续再使用

10、SELinux

此界面展示SELinux服务的控制按钮和警告信息界面

11、更新软件

这里所提到的“Software Updates” 实际不是日常更新软件的工作区域,而是红帽客户订阅的服务界面。用户需要购买红帽第三方服务后才能使用这里面的功能。

12、订阅服务

13、终端界面

压轴的总在最后,Cockpit服务提供了Shell终端的在线控制平台,方便用户通过网页管理服务器

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1911339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js ES6 part1

听了介绍感觉就是把js在oop的使用 作用域 作用域&#xff08;scope&#xff09;规定了变量能够被访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问&#xff0c; 作用域分为&#xff1a; 局部作用域、 全局作用域 1. 函数作用域&#xff1a; 在函数内部声明的…

【UE5】仅修改结构体的若干个数据

蓝图中的结构体变量 | 虚幻引擎4.27文档 (unrealengine.com) 连线连到傻&#xff0c;因为如果某个变量set空值也一起过去了。一查发现有这个节点。

Windows10系统下mysql5.6的安装步骤

1.下载mysql 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 在这里我们下载zip的包 2.解压mysql包到指定目录 3. 添加my.ini文件 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configurat…

最新深度技术Win7精简版系统:免费下载!

在Win7电脑操作中&#xff0c;用户想要给电脑安装上深度技术Win7精简版系统&#xff0c;但不知道去哪里才能找到该系统版本&#xff1f;接下来系统之家小编给大家带来了深度技术Win7系统精简版本的下载地址&#xff0c;方便大家点击下载安装。系统安装步骤已简化&#xff0c;新…

Java客户端调用SOAP方式的WebService服务实现方式分析

简介 在多系统交互中&#xff0c;有时候需要以Java作为客户端来调用SOAP方式的WebService服务&#xff0c;本文通过分析不同的调用方式&#xff0c;以Demo的形式&#xff0c;帮助读者在生产实践中选择合适的调用方式。 本文JDK环境为JDK17。 结论 推荐使用Axis2或者Jaxws&#…

20240709每日后端--------最优解决Invalid bound statement (not found)

目标 最优解决Invalid bound statement (not found) 步骤 1、打包 2、查看target下是否成双成对出现 3、核对无误后&#xff0c;即可解决问题。

重塑智慧生活想象 Yeelight易来举行2024年战略及新品发布会圆满成功

7月9日&#xff0c;智能照明品牌Yeelight易来在广州举行“光为境和无界”——2024年Yeelight易来战略&新品发布会&#xff0c;此次发布会不仅展示了易来在新的一年中取得的显著业绩增长&#xff0c;还发布了多款引领行业潮流的智能新品。同时&#xff0c;发布会还邀请了权威…

Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门

参考文章 【Docker安装部署KafkaZookeeper详细教程】_linux arm docker安装kafka-CSDN博客 Docker搭建kafkazookeeper 打开我们的docker的镜像源配置 vim /etc/docker/daemon.json 配置 { "registry-mirrors": ["https://widlhm9p.mirror.aliyuncs.com"…

mysql查询语句执行流程

流程图 连接器&#xff1a;建立连接&#xff0c;管理连接、校验用户身份&#xff1b;查询缓存&#xff1a;查询语句如果命中查询缓存则直接返回&#xff0c;否则继续往下执行。MySQL 8.0 已删除该模块&#xff1b;解析 SQL&#xff0c;通过解析器对 SQL 查询语句进行词法分析、…

构造二进制字符串

目录 LeetCode3221 生成不含相邻零的二进制字符串 #include <iostream> #include <vector> using namespace std;void dfs(string s,int n,vector<string>& res){if(s.size()n){res.push_back(s);return;}dfs(s"0",n,res);dfs(s"1"…

Zabbix Sia Zabbix 逻辑漏洞(CVE-2022-23134)

前言 CVE-2022-23134是一个中等严重度的漏洞&#xff0c;影响Zabbix Web前端。这个漏洞允许未经身份验证的用户访问setup.php文件的某些步骤&#xff0c;这些步骤通常只对超级管理员开放。利用这个漏洞&#xff0c;攻击者可以通过跳过某些步骤来重新配置Zabbix前端&#xff0c…

代码随想录算法训练营第四十八天| 115.不同的子序列、583. 两个字符串的删除操作、 72. 编辑距离

115.不同的子序列 题目链接&#xff1a;115.不同的子序列 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 思路&#xff1a; dp[i][j] 表示在 s 的前 j 个字符中&#xff0c;t 的前 i 个字符作为子序列出现的次数。 匹配的情况&#xff1a; 1.当 s[j-1] 与 t[i-1] 匹配…

软考高级里《系统架构设计师》容易考吗?

我还是22年通过的架构考试。系统架构设计师属于软考高级科目&#xff0c;难度比初级和中级都要大&#xff0c;往年的通过率也比较低&#xff0c;一般在10-20%左右。从总体来说&#xff0c;这门科目确实是不好过的&#xff0c;大家如果想要备考系统架构设计师的话&#xff0c;还…

营销宝典:4P理论全方位解读,营销人的必修课

这么说吧&#xff0c;4P是营销的一切&#xff0c;也是一切的营销&#xff01; 4P理论产生于20世纪60年代的美国&#xff0c;随着营销组合理论的提出而出现的。 1953年&#xff0c;尼尔博登&#xff08;NeilBorden&#xff09;在美国市场营销学会的就职演说中创造了“市场营销…

【Python】已解决:SyntaxError: invalid character in identifier

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;SyntaxError: invalid character in identifier 一、分析问题背景 在Python编程中&#xff0c;SyntaxError: invalid character in identifier是一个常见的编译…

java Web 优秀本科毕业论文系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 优秀本科毕业论文系统是一套完善的web设计系统&#xff0c;对理解JSP java serlvet 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&a…

苍穹外卖--导入分类模块功能代码

把各层代码拷贝到所需文件夹下&#xff0c; 进行编译 在运行 提交和推送仓库

教程系列1 | 趋动云『社区项目』极速部署 SD WebUI

在上周&#xff0c;趋动云新推出的『社区项目』功能&#xff0c;以“一键克隆”的极致便捷与“省时省力”的高效体验&#xff0c;赢得了广大用户的关注。 随后&#xff0c;启动趋动云『社区项目』教程系列&#xff0c;旨在从零开始&#xff0c;全方位、手把手地引领您深入探索…

【鸿蒙学习笔记】Stage模型

官方文档&#xff1a;Stage模型开发概述 目录标题 Stage模型好处Stage模型概念图ContextAbilityStageUIAbility组件和ExtensionAbility组件WindowStage Stage模型-组件模型Stage模型-进程模型Stage模型-ArkTS线程模型和任务模型关于任务模型&#xff0c;我们先来了解一下什么是…

【Python】一文向您详细介绍 np.inner()

【Python】一文向您详细介绍 np.inner() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;曾…