当前位置: 首页 > news >正文

Linux中的防火墙

  • 什么是防火墙

  • windows防火墙的设置

  • linux防火墙设置命令

什么是防火墙?

防火墙是一种网络安全设备,它能够:

  • 监控和过滤进出网络的流量

  • 阻止不安全的连接

  • 保护计算机和网络免受未授权访问

  • 创建一个安全边界

简单来说,防火墙就像是电脑的"安全门卫",决定谁能进、谁能出。

为什么需要防火墙?

防火墙的重要性:

没有防火墙的系统就像没有锁的房门,任何人都可以随意进出:

  • 黑客可以轻易入侵系统

  • 恶意程序可以自由访问网络

  • 个人数据容易被窃取

  • 系统资源可能被滥用

Windows中的防火墙

大多数学生可能更熟悉Windows防火墙:

Windows防火墙的基本操作:

什么是Nginx?

Nginx(发音为"engine-x")是一个高性能的开源Web服务器和反向代理服务器。相比传统的Apache服务器,Nginx具有以下特点:

  • 轻量级:占用资源少,内存消耗低

  • 高并发:能够同时处理数万个连接

  • 高性能:处理静态文件的速度非常快

  • 可扩展性:丰富的模块系统

  • 反向代理:可以作为前端服务器分发请求

在Windows系统中,Nginx也可以安装使用,同样需要在防火墙中开放相应端口才能正常访问。

Linux中的防火墙

Linux防火墙的发展

Linux系统中的防火墙经历了几次演变:

  • CentOS 5/6 使用的是 iptables 防火墙

  • CentOS 7 开始使用 firewalld 防火墙

==httpd 最后字母d一般都是守护进程,后台进程==

# firewalld名称的由来
firewalld = fire(火) + wall(墙) + d(守护进程)

# 守护进程就是在后台持续运行的程序

iptables和firewalld的主要区别:

  1. iptables是静态的,修改规则需要重新加载整个规则集

  2. firewalld是动态的,可以在运行时修改规则

  3. firewalld引入了"区域"的概念,使管理更简单

  4. firewalld提供了更友好的命令行工具

防火墙区域(Zone)

firewalld引入了"区域"的概念,类似于不同的安全级别:

常见区域简介:

区域名称信任级别适用场景
trusted全信任完全信任的网络,允许所有连接
home高度信任家庭网络,信任大多数计算机
internal高度信任内部网络,类似home区域
work中度信任工作环境,信任部分计算机
public低信任公共场所,仅信任选择的连接(默认区域
external低信任外部网络,用于启用伪装模式
dmz低信任隔离区,有限度地允许外部访问
block拒绝拒绝所有连接,没有回应
drop拒绝丢弃所有连接,无任何回应

基本命令

查看防火墙状态
# 查看firewalld是否运行
systemctl status firewalld
​
# 查看firewalld服务状态
firewall-cmd --state

启动和停止防火墙

# 启动防火墙 systemctl start firewalld ​

# 停止防火墙(不推荐) systemctl stop firewalld ​

# 设置开机自启动 systemctl enable firewalld ​

# 禁止开机自启动(不推荐) systemctl disable firewalld

查看防火墙配置

# 查看默认区域(default)
firewall-cmd --get-default-zone

# 查看活动区域
firewall-cmd --get-active-zones

防火墙规则管理

服务管理

在Linux防火墙中,"服务"是预定义的常用端口和协议组合。

# 查看所有可用服务
firewall-cmd --get-services

# 查看当前区域启用的服务
firewall-cmd --zone=public --list-services

# 临时添加服务
firewall-cmd --zone=public --add-service=http

# 永久添加服务
firewall-cmd --zone=public --add-service=http --permanent

# 移除服务
firewall-cmd --zone=public --remove-service=http --permanent

常用服务示例:

  • http (80端口):网站服务

  • https (443端口):安全网站服务

  • ssh (22端口):远程连接

  • ftp (21端口):文件传输

端口管理

除了服务,还可以直接管理具体端口:

# 查看开放的端口
firewall-cmd --zone=public --list-ports

# 临时开放单个端口
firewall-cmd --zone=public --add-port=8080/tcp

# 永久开放端口范围
firewall-cmd --zone=public --add-port=5000-6000/tcp --permanent

# 关闭端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent

防火墙规则模式

防火墙规则有两种模式:

  1. 临时模式

    • 立即生效

    • 重启后失效

    • 命令不包含 --permanent 参数

  2. 永久模式

    • 写入配置文件

    • 重启后仍有效

    • 命令包含 --permanent 参数

    • 需要执行 firewall-cmd --reload 使规则立即生效

# 添加永久规则后重新加载
firewall-cmd --zone=public --add-service=https --permanent

firewall-cmd --reload

简单应用案例

什么是Apache HTTP Server(httpd)?

Apache HTTP Server(通常简称为httpd)是世界上最流行的Web服务器软件之一。它具有以下特点:

  • 稳定可靠:经过多年验证的稳定性和可靠性

  • 模块化设计:丰富的模块可以扩展功能

  • 跨平台:支持几乎所有主流操作系统

  • 活跃的社区:大型开发者社区提供支持

  • 多功能:支持CGI、PHP、Perl等多种技术

Apache在Linux系统中被广泛使用,特别适合:

  • 网站托管

  • 动态内容处理

  • 虚拟主机

  • 身份验证和授权

换源

步骤 1:备份原有的 YUM 源文件 在更换 YUM 源之前,建议先备份系统自带的 YUM 源配置文件,以防需要恢复原配置。

sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

步骤 2:下载国内源的 YUM 配置文件 以下是一些常用的国内镜像源,你可以选择其中一个替换。

  1. 阿里云源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  2. 清华大学源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo

  3. 网易源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

  4. 中科大源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ustc.edu.cn/centos/7/os/x86_64/

步骤 3:清理 YUM 缓存 更换源之后需要清理原有的缓存,以便使用新的源进行软件包更新。

sudo yum clean all
sudo yum makecache

配置Apache Web服务器防火墙

以下是一个简单的Web服务器防火墙配置案例:

# 1. 安装Apache Web服务器
yum install httpd -y

# 2. 启动Apache服务
systemctl start httpd
systemctl enable httpd

# 3. 配置防火墙允许HTTP访问
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

# 4. 验证防火墙规则
firewall-cmd --list-all | grep http

# 5. 测试访问Web服务器
curl http://localhost
# 也可以从浏览器访问服务器IP地址

默认情况下,Apache使用80端口提供HTTP服务。如果需要配置HTTPS服务,还需要开放443端口:

sudo yum clean all
sudo yum makecache

配置SSH远程连接

保护SSH服务的案例:

# 1. 确认SSH服务状态
systemctl status sshd

# 2. 查看SSH是否已在防火墙中开放
firewall-cmd --list-services | grep ssh

# 3. 如果没有开放,添加SSH服务
firewall-cmd --zone=public --add-service=ssh --permanent
firewall-cmd --reload

常见问题排查

服务无法访问

如果配置了防火墙规则但服务仍然无法访问:

# 1. 检查服务是否正在运行
systemctl status httpd  # 以Apache为例

# 2. 确认防火墙是否启用了相应服务或端口
firewall-cmd --list-all

# 3. 暂时关闭防火墙测试
systemctl stop firewalld
# 尝试访问服务,如果现在可以访问,说明是防火墙规则问题

# 4. 检查SELinux状态(可能也会阻止服务)
getenforce
# 如果显示Enforcing,可以尝试临时关闭SELinux
setenforce 0

规则不生效

如果添加的规则没有生效:

# 1. 确认是否添加了--permanent参数但忘记reload
firewall-cmd --reload

# 2. 检查是否在正确的区域添加了规则
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones

# 3. 检查防火墙服务是否运行
systemctl status firewalld

安全建议

  1. 最小权限原则

    • 只开放必要的服务和端口

    • 定期检查已开放的端口列表

    • 关闭不需要的服务

  2. 记录和审计

    • 启用防火墙日志记录可疑活动

    • 定期审查防火墙规则

  3. 防火墙不是唯一防线

    • 结合其他安全措施(强密码、更新补丁等)

    • 定期备份重要数据

相关文章:

  • 【Linux学习笔记】基础IO之理解文件
  • 学成在线之缓存
  • 【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
  • 服务器数据恢复—Linux操作系统服务器意外断电导致部分文件丢失的数据恢复
  • 《运维那些事儿》专栏总目录(持续更新)
  • 如何解决 Linux 系统文件描述符耗尽的问题
  • vue2 结合后端预览pdf 跨域的话就得需要后端来返回 然后前端呈现
  • vue中scss使用js的变量
  • uniapp上架苹果APP Store踩雷和部分流程注意事项(非完整流程)
  • uniapp|实现多终端聊天对话组件、表情选择、消息发送
  • CSS3 过渡与动画
  • XML简单介绍
  • 2.2 点云数据存储格式——通用型点云存储格式
  • DUNE 开源项目介绍与使用指南
  • 2025年Java基础知识总结难点亮点(超详细整理)
  • 希音Shein测评补单:跨境电商运营的新利器与实操指南
  • 微信小程序使用腾讯云COS SDK实现用户头像上传
  • 学习设计模式《八》——原型模式
  • 手撕基于AMQP协议的简易消息队列-3(项目所用到的工具类的编写)
  • 从零打造个人博客静态页面与TodoList应用:前端开发实战指南
  • 北上广深均宣布下调个人住房公积金贷款利率
  • 谜语的强制力:弗洛伊德与俄狄浦斯
  • 扶桑谈|素称清廉的石破茂被曝受贿,日本政坛或掀起倒阁浪潮
  • 又一日军“慰安妇”制度受害者去世,大陆在世幸存者仅7人
  • 印巴战火LIVE|巴基斯坦多地遭印度导弹袭击,巴总理称“有权作出适当回应”
  • 是谁提议特朗普向好莱坞征税?