Linux系统安全之iptables防火墙

目录

一、iptables防火墙的基本介绍

二、iptables的四表五链

三、iptables的配置

四、添加,查看,删除规则


一、iptables防火墙的基本介绍

iptables是一个Linux系统上的防火墙工具,它用于配置和管理网络数据包的过滤规则。它可以通过定义规则集来控制进出系统的网络数据流,从而提供网络安全保护。

iptables基于包过滤技术,可以对数据包进行过滤、转发、伪装和修改等操作。它通过在内核中的netfilter子系统中的表(tables)和链(chains)来实现这些功能。表包含多个链,而链则包含多条规则。

iptables提供了一些基本的命令和选项,用于配置和管理防火墙规则。一般来说,使用iptables可以实现以下功能:

  1. 数据包过滤:可以根据源IP地址、目标IP地址、端口号、协议类型等条件来过滤进出系统的数据包,从而实现访问控制和安全策略的限制。

  2. 网络地址转换(NAT):可以将私有网络中的IP地址转换为公网IP地址,实现内网访问外网的功能。

  3. 端口转发:可以将某个端口的数据包转发到另一个指定的端口上,用于实现服务的映射和访问控制。

  4. 防止DoS攻击:可以通过配置规则来限制来自某个IP地址或IP地址段的连接数,从而减轻系统的负载和防止拒绝服务攻击。

  5. 日志记录:可以将符合规则的数据包记录到系统日志中,用于分析和审计系统的网络流量。

iptables是一个命令行工具,需要具备一定的网络和Linux系统知识才能正确配置和使用。此外,iptables的配置是临时的,重启系统后配置会丢失,如果需要永久生效,可以将配置写入启动脚本中。

二、iptables的四表五链

iptables使用四个表(tables)和五个链(chains)来组织和管理规则,它们是:

  1. Filter表(filter table):用于过滤和控制数据包的流动。它包含三个默认的链:INPUT链、OUTPUT链和FORWARD链。

    • INPUT链:过滤进入本地系统的数据包。
    • OUTPUT链:过滤从本地系统发出的数据包。
    • FORWARD链:过滤通过本地系统转发的数据包。
  2. NAT表(nat table):用于进行网络地址转换(Network Address Translation,NAT)。它包含三个默认的链:PREROUTING链、POSTROUTING链和OUTPUT链。

    • PREROUTING链:在数据包到达系统之前进行处理,可以修改目标IP地址。
    • POSTROUTING链:在数据包离开系统之前进行处理,可以修改源IP地址。
    • OUTPUT链:用于本地系统生成的数据包的NAT处理。
  3. Mangle表(mangle table):用于修改数据包的特征。它包含五个默认的链:PREROUTING链、INPUT链、FORWARD链、OUTPUT链和POSTROUTING链。

    • PREROUTING链:在数据包到达系统之前进行处理。
    • INPUT链:过滤进入本地系统的数据包。
    • FORWARD链:过滤通过本地系统转发的数据包。
    • OUTPUT链:过滤从本地系统发出的数据包。
    • POSTROUTING链:在数据包离开系统之前进行处理。
  4. Raw表(raw table):用于配置连接追踪系统。它包含两个默认的链:PREROUTING链和OUTPUT链。

    • PREROUTING链:在数据包到达系统之前进行处理。
    • OUTPUT链:过滤从本地系统发出的数据包。

这些表和链的组合可以实现不同类型的防火墙规则和网络功能。通过在相应的表和链中添加规则,可以控制数据包的流动、修改数据包的源地址和目标地址、实现端口转发和网络地址转换等功能。

三、iptables的配置

  1. 显示当前的iptables规则:

    java 复制代码
    iptables -L
  2. 清除当前所有的iptables规则:

    java 复制代码
    iptables -F
  3. 允许特定IP地址的数据包通过:

    java 复制代码
    iptables -A INPUT -s <IP地址> -j ACCEPT
  4. 拒绝特定IP地址的数据包通过:

    java 复制代码
    iptables -A INPUT -s <IP地址> -j DROP
  5. 允许特定端口的数据包通过:

    java 复制代码
    iptables -A INPUT -p <协议> --dport <端口号> -j ACCEPT
  6. 拒绝特定端口的数据包通过:

    java 复制代码
    iptables -A INPUT -p <协议> --dport <端口号> -j DROP
  7. 开启端口转发:

    java 复制代码
    echo 1 > /proc/sys/net/ipv4/ip_forward

四、添加,查看,删除规则

要删除iptables规则,可以使用iptables -D命令。以下是删除规则的示例:

删除INPUT链中的指定规则:

java 复制代码
iptables -D INPUT <规则号>

可以通过iptables -L --line-numbers命令查看规则号。

删除所有INPUT链中的规则

java 复制代码
iptables -F INPUT

iptables规则是按顺序执行的,所以删除规则时要确保删除的是正确的规则。另外,iptables的配置是临时的,重启系统后配置会丢失。

相关推荐
学代码的CJY10 小时前
Linux 库制作与原理:静态库、动态库、ELF 与动态链接完全指南
linux·运维·服务器
沸速存储11 小时前
CPU 和 GPU 核心差别在哪?为什么 AI 训练离不开 GPU
服务器·人工智能·科技·嵌入式硬件·电脑
呱呱巨基12 小时前
Linux 查找命令
linux·笔记·学习·查找命令
路由侠内网穿透12 小时前
本地部署企业级快速开发平台芋道管理后台并实现外部访问
运维·服务器·网络·网络协议
basketball61612 小时前
软考中级网络工程师 第4章 无线通信网 备考总结
linux·服务器·网络·网络工程师·软考
yunlaodacom12 小时前
阿里云国际站注册:性能损耗 < 1%!基于 eBPF 的服务器异常预测实战与调优指南
大数据·服务器·阿里云
好评12413 小时前
【Linux】进程信号
linux·运维·服务器
zhangrelay13 小时前
ROS 2 Lyrical 第4章 URDF机器人建模与Gazebo Garden仿真
linux·笔记·学习·ubuntu·机器人·ros2
wuminyu13 小时前
JVM利用io_uring优化堆外内存性能原理剖析
java·linux·c语言·jvm·c++
xianyuCcCcCCCcc13 小时前
Nginx 深度解析:从基础架构到反向代理与负载均衡实战全解
linux·运维·nginx·bash·负载均衡