【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作

本文详细介绍了CentOS系统中的Firewalld防火墙工具,包括其基础概念、常用命令以及实战操作,如启动/停止服务、调整区域规则、开放端口等,以帮助系统管理员更好地管理和保护服务器安全。

  

🍎个人博客:个人主页

🏆个人专栏:Linux

⛳️  功不唐捐,玉汝于成


目录

前言

正文

Firewalld基础概念:

Firewalld常用命令:

启动/停止/重启Firewalld服务:

查看Firewalld状态:

查看所有区域:

查看指定区域的规则:

开放端口:

添加服务:

删除端口/服务:

Firewalld实例操作:

开放SSH访问(端口22):

开放HTTP和HTTPS服务:

将网络接口从默认的public区域移动到trusted区域:

禁止Ping请求:

允许特定IP访问SSH端口:

Firewalld配置文件路径:

结语

 我的其他博客


前言

理解和有效地配置防火墙是任何系统管理员的重要任务之一。在Linux系统中,CentOS防火墙(Firewalld)是一个强大的工具,可以帮助保护服务器免受恶意网络活动的侵害。本文将详细介绍CentOS防火墙的基本概念、常用命令以及实例操作,帮助你更好地了解和管理防火墙设置。

正文

CentOS防火墙(Firewalld)是Linux系统中一种用于管理网络连接的工具,它可以配置和控制系统的网络流量,保护系统免受恶意网络活动的侵害。以下是CentOS防火墙的详细讲解:

Firewalld基础概念:

  1. 区域(Zone):Firewalld将网络接口分组到不同的区域中,每个区域可以定义一组预定义的安全规则,例如公共、私有、内部、信任等。

  2. 服务(Service):服务是一组预定义的规则集合,可以通过名称来指代一组特定的端口和协议。例如,HTTP服务通常使用端口80,HTTPS服务通常使用端口443。

  3. 端口(Port):端口是用于标识网络服务的数字,每个网络服务都会监听特定的端口以便于通信。防火墙可以通过允许或者拒绝端口的访问来控制网络流量。

Firewalld常用命令:

通过修改这些配置文件,你可以自定义Firewalld的行为,但记得在修改后重新加载防火墙配置。

以上就是CentOS防火墙(Firewalld)的详细讲解,希望对你有所帮助。

  1. 启动/停止/重启Firewalld服务:

    sudo systemctl start firewalld
    sudo systemctl stop firewalld
    sudo systemctl restart firewalld
    

    查看Firewalld状态:

    sudo firewall-cmd --state
    

    查看所有区域:

    sudo firewall-cmd --get-zones
    

    查看指定区域的规则:

    sudo firewall-cmd --zone=public --list-all
    

    开放端口:

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

    添加服务:

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --reload
    

    删除端口/服务:

    sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
    sudo firewall-cmd --zone=public --remove-service=http --permanent
    sudo firewall-cmd --reload
    

    Firewalld实例操作:

  2. 开放SSH访问(端口22):

    sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
    sudo firewall-cmd --reload
    

    开放HTTP和HTTPS服务:

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --reload
    

    将网络接口从默认的public区域移动到trusted区域:

    sudo firewall-cmd --zone=trusted --change-interface=eth0
    sudo firewall-cmd --reload
    

    禁止Ping请求:

    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" protocol="icmp" icmp-type="echo-request" drop' --permanent
    sudo firewall-cmd --reload
    

    允许特定IP访问SSH端口:

    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' --permanent
    sudo firewall-cmd --reload
    

    Firewalld配置文件路径:

    Firewalld的配置文件位于/etc/firewalld/目录下,其中主要的配置文件有:

  3. firewalld.conf:Firewalld的主要配置文件。
  4. zones:每个区域的配置文件都在这个目录下,例如public.xmlinternal.xml等。
  5. services:包含每个服务的XML文件,例如http.xmlssh.xml等。

结语

通过本文的学习,你应该对CentOS防火墙有了更深入的了解,并能够使用Firewalld命令来配置和管理服务器的网络连接。记得根据实际需求和安全策略,及时更新防火墙规则,以确保服务器的安全性和稳定性。

 我的其他博客

【MySQL】数据库规范化的三大法则 — 一探范式设计原则-优快云博客

【JAVA】线程的run()和start()有什么区别?-优快云博客

【日常聊聊】程序员必备的面试技巧:如何在面试战场上脱颖而出-优快云博客

【JAVA】Java8开始ConcurrentHashMap,为什么舍弃分段锁-优快云博客

【JAVA】怎么确保一个集合不能被修改-优快云博客

【Web开发】会话管理与无 Cookie 环境下的实现策略-优快云博客

【Mybatis】Mybatis如何防止sql注入-优快云博客

【软件工程】航行敏捷之路:深度解析Scrum框架的精髓-优快云博客

【Spring】理解IoC与AOP:构建灵活而模块化的软件架构-优快云博客

### 服务器端口未开放原因及解决方案 #### 一、常见原因分析 服务器端口未开放通常由以下几个方面引起: 1. **防火墙规则限制** 防火墙可能阻止了特定端口的流量。例如,Windows系统的内置防火墙Linux中的`iptables`/`firewalld`可能导致目标端口被屏蔽[^2]。 2. **安全组配置缺失** 如果使用的是云服务器(如阿里云、腾讯云),则需要在云端的安全组中手动开放对应端口。如果没有正确配置安全组规则,即使本地设置了监听,外部也无法访问该端口[^4]。 3. **服务未启动或绑定错误** 对应的服务程序可能未正常运行,或者未绑定到指定端口。例如SQL Server未开启TCP/IP协议支持,或者Nginx/Apache未正确配置监听端口[^1]。 4. **操作系统网络策略限制** 操作系统层面可能存在额外的网络策略限制,比如SELinux/AppArmor等强制访问控制机制干扰了端口的正常使用[^5]。 --- #### 二、具体解决方法 1. **检查并调整防火墙设置** - Windows环境下可以通过PowerShell命令临时关闭防火墙测试连通性: ```powershell Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False ``` - Linux环境中可以查看当前防火墙状态,并允许特定端口通过以下命令实现: ```bash sudo firewall-cmd --zone=public --add-port=<port>/tcp --permanent sudo firewall-cmd --reload ``` 2. **配置云服务商安全组** 登录云服务平台管理界面,找到实例关联的安全组,新增一条入站规则允许所需端口的TCP流量。例如对于HTTP服务需开放80端口;而对于SSH登录,则要确保22端口可用。 3. **确认服务进程已启用** 使用工具检测是否有进程正在监听预期端口。以Kali为例可执行如下指令获取活动连接详情: ```bash netstat -tuln | grep <port> ``` 若无任何输出表明相关服务尚未激活,此时应该依据官方文档重启相应守护进程。 4. **核查高级权限管控组件** 当发现尽管完成了上述步骤仍存在障碍时,有必要深入探究是否存在更深层次的操作系统级约束因素影响着实际效果。针对CentOS系列发行版而言,可通过设定参数来放宽SELinux制约力度: ```bash setsebool -P httpd_can_network_connect on ``` --- ### 示例代码片段 以下是用于调试的一个Python脚本样例,它能够帮助判断远程主机某个端口是否处于可达状态。 ```python import socket def check_port(host, port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) try: result = sock.connect_ex((host, int(port))) if result == 0: print(f"Port {port} is open.") else: print(f"Port {port} seems closed or filtered.") except Exception as e: print(e) if __name__ == "__main__": host_ip = input("Enter the target IP address: ") test_port = input("Which port do you want to verify? ") check_port(host_ip, test_port) ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薅你两根毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值