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

linux-网络管理-防火墙配置

Linux 网络管理:防火墙配置

1. 防火墙概述

防火墙是保护计算机系统和网络免受未经授权访问和网络攻击的安全机制。Linux 系统中,防火墙通过控制进入和离开网络的数据包,实现网络流量的过滤和管理。

Linux 上的防火墙配置工具有多种,其中最为常用的是 iptables 和现代 firewalld,以及一些其他如 ufw 这样的简化管理工具。

2. Linux 防火墙的基本原理

防火墙的基本工作原理是根据设定的规则对网络数据包进行过滤和处理,规则通常包括以下几部分:

  • 源地址:数据包的来源地址,可以是 IP 或网络段。
  • 目标地址:数据包的目的地址。
  • 协议类型:如 TCP、UDP、ICMP 等。
  • 源端口和目标端口:与传输协议相关联的端口号,如 HTTP 服务的 80 端口。

防火墙通过(Chains)和规则(Rules)来定义如何处理数据包:

  • 链(Chains):防火墙规则的处理路径,通常分为三类:
      - INPUT:进入系统的数据包(例如从外部网络到本地主机)。
      - FORWARD:转发通过本地系统的数据包(例如路由设备的功能)。
      - OUTPUT:从本地系统发送出去的数据包。
  • 规则(Rules):每个链上可以设置多条规则,定义了如何处理特定的数据包。常见的动作包括:
      - ACCEPT:允许数据包通过。
      - DROP:丢弃数据包,不给出响应。
      - REJECT:拒绝数据包并返回错误信息。
3. iptables:经典的防火墙工具

iptables 是 Linux 内核中的网络数据包过滤框架,提供了强大的防火墙功能,主要管理 IPv4 的防火墙规则。

3.1 iptables 基本语法

iptables 命令的基本格式如下:

iptables [选项] 链名 [条件匹配] -j 动作
  • 链名:指定在哪个链上操作(如 INPUT、FORWARD、OUTPUT)。
  • 条件匹配:指定数据包匹配条件,如源地址、目标地址、协议等。
  • 动作:定义匹配规则后的处理动作,如 ACCEPT、DROP、REJECT。
3.2 常用 iptables 命令
  • 查看当前规则
iptables -L
  • 允许某个端口的流量

允许 80 端口的 HTTP 流量:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  • 拒绝特定 IP 地址

阻止来自 192.168.1.100 的所有流量:

iptables -A INPUT -s 192.168.1.100 -j DROP
  • 删除特定规则

假设想删除特定的规则,可以使用 -D 参数:

iptables -D INPUT -p tcp --dport 80 -j ACCEPT
  • 保存规则

iptables 的规则默认在系统重启后会丢失,因此需要手动保存。根据不同的发行版,保存命令可能不同:
  
在基于 Debian 系列的系统中,可以通过 iptables-save 命令保存规则:

iptables-save > /etc/iptables/rules.v4

然后,通过 iptables-restore 恢复:

iptables-restore < /etc/iptables/rules.v4

在基于 CentOS 或 RHEL 的系统中,保存规则可以使用以下命令:

service iptables save
3.3 iptables 的表和链

iptables 使用不同的表来管理不同类型的防火墙规则,每个表包含多个链:

  • filter 表:默认表,管理最常见的输入、输出和转发规则。常用链包括:
      - INPUT:处理进入本机的数据包。
      - FORWARD:处理通过本机转发的数据包。
      - OUTPUT:处理本机发送的数据包。

  • nat 表:处理与网络地址转换相关的规则。常用链包括:
      - PREROUTING:在数据包进入路由前处理。
      - POSTROUTING:在数据包路由后处理。
      - OUTPUT:处理本地生成的需要 NAT 的数据包。

  • mangle 表:用于修改数据包的服务类型、TTL 等特性。

例如,配置 NAT 地址转换时:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
4. firewalld:现代防火墙管理工具

firewalldiptables 的一个更高级的替代品,提供了动态防火墙管理。它简化了防火墙规则的管理,并支持区域概念,允许根据网络接口或源地址设置不同的防火墙策略。

4.1 firewalld 的基本概念
  • 区域(Zones):每个网络接口或源地址可以分配到一个区域,区域定义了不同的信任级别。例如,public 区域默认会拒绝大部分的入站流量,而 trusted 区域则允许所有流量。
  • 服务(Services)firewalld 通过预定义的服务(如 HTTP、SSH)来简化规则管理。服务包含了默认端口、协议的定义,用户可以通过启用或禁用服务来管理网络访问。
  • 即时与永久规则firewalld 允许即时应用规则(不重启生效),并区分永久规则和即时规则。永久规则在重启系统后依然有效。
4.2 firewalld 基本操作
  • 查看防火墙状态
sudo firewall-cmd --state
  • 查看当前区域和规则
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
  • 启用或禁用服务

例如,启用 HTTP 服务:

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

这里 --permanent 使规则永久生效,--reload 用于重新加载配置。

  • 添加端口规则

除了预定义的服务,用户也可以通过端口号直接添加规则。例如,允许 8080 端口的流量:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
  • 删除规则

删除某个服务或端口规则:

sudo firewall-cmd --remove-service=http --permanent
sudo firewall-cmd --reload
4.3 区域配置

每个网络接口可以分配到不同的区域,默认情况下,所有接口分配到 public 区域。可以使用以下命令查看接口所属区域:

sudo firewall-cmd --get-active-zones

更改接口所属区域:

sudo firewall-cmd --zone=trusted --change-interface=eth0 --permanent
sudo firewall-cmd --reload
5. ufw:简化的防火墙管理工具

ufw(Uncomplicated Firewall)是 Ubuntu 系统上简化防火墙管理的工具,它是 iptables 的前端工具,旨在提供更加用户友好的命令来管理防火墙。

5.1 ufw 基本命令
  • 启用防火墙
sudo ufw enable
  • 查看防火墙状态
sudo ufw status
  • 允许某个服务或端口

允许 HTTP 服务:

sudo ufw allow http

允许 22 端口的 SSH 流量:

sudo ufw allow 22/tcp
  • 拒绝特定 IP 地址的连接
sudo ufw deny from 192.168.1.100
  • 禁用防火墙
sudo ufw disable
5.2 配置文件管理

ufw 的配置文件位于 /etc/ufw/ufw.conf,可以在这里启用或禁用防火墙启动时自动加载。

6. 防火墙策略配置示例

假设我们要为一台 Web 服务器配置防火墙,目标是允许 HTTP(80)和 HTTPS(443)流量,同时阻止其他所有入站流量。我们可以使用 iptablesfirewalld 配置如下:

使用 iptables 配置:
iptables -P INPUT DROP            # 默认丢弃所有入站流量
iptables -P FOR

WARD DROP
iptables -P OUTPUT ACCEPT         # 允许所有出站流量
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 允许现有连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # 允许 HTTP 流量
iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # 允许 HTTPS 流量
使用 firewalld 配置:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
7. 总结

Linux 的防火墙工具如 iptablesfirewalldufw 提供了灵活强大的网络安全管理手段。通过配置和管理防火墙规则,可以有效控制网络流量,防止不必要的外部访问,同时保护系统免受潜在的网络攻击。不同工具适合不同场景,iptables 提供了细粒度的控制,firewalld 提供了动态防火墙管理,而 ufw 则简化了配置过程。


http://www.kler.cn/a/309010.html

相关文章:

  • RHCE web解析、dns配置、firewalld配置实验
  • JUC-locks锁
  • Java-Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求扩展
  • [SWPUCTF 2022 新生赛]Power! 反序列化详细题解
  • Elasticsearch中什么是倒排索引?
  • vscode Markdown
  • 面试真题-TCP的三次握手
  • STM32外设-0.96寸OLED显示屏
  • [数据集][目标检测]男女性别检测数据集VOC+YOLO格式9769张2类别
  • AI重塑视觉体验:将图像与视频转化为逼真可编辑的3D虚拟场景
  • 使用jackson将xml和对象、List相互转换
  • 碰撞检测 | 图解线段几何与线段相交检测原理(附ROS C++可视化)
  • pandas读取Excel保留空格与数字前置0
  • UNI-APP 富文本编辑器,可以对图片、文字格式进行编辑和混排。
  • python之openpyxl模块——实现Excel表格的处理(万字教学,全网最全,超详细!)
  • 深度解析代理IP地址与端口:定义及高效获取方法
  • 硬件工程师笔试面试——保险丝
  • 运维面试题1
  • 微信小程序中实现类似于 ECharts 的图表渲染及优化
  • Java项目实战II基于Java+Spring Boot+MySQL的作业管理系统设计与实现(源码+数据库+文档)
  • OpenAI o1——人工智能推理能力的飞跃,助力高级问题解决
  • Spark处理结构化数据:DataFrame、DataSet、SparkSQL
  • Linux5-echo,>,tail
  • 关于前后端跨域访问的问题
  • C语言16--宏定义和关键字
  • 【FFmpeg应用场景概述】