CentOS Iptables详解

一、Iptables 简介

Iptables 是 Linux 自带的防火墙程序,可以对网络流量进行管理和过滤,来保障网络的安全。Iptables 可以被运用于 IPv4/IPv6 网络,支持网络地址转换(NAT)、端口转发、数据包过滤等功能。

二、安装与基本概念

1、安装Iptables

在 CentOS 上,Iptables 防火墙系统默认已安装。如果没有,可以通过 yum 命令进行安装。

yum install -y iptables-services

安装完成后,通过以下命令启动 Iptables 服务:

systemctl start iptables.service

2、Iptables 分类

Iptables 有三个分类,分别是表、链和规则。

表:一个表就是一个数据结构,可以提供不同的处理方式。Linux 操作系统默认提供了三个表:

  • filter 表: 是默认的表,用于过滤网络数据包。
  • nat 表:用于网络地址转换(NAT)。
  • mangle 表:这个表可以修改报文头,而不是过滤数据报。比如可以修改某个特定的IP地址,修改TTL值等。

链: 链是表的组成部分,它能够执行指定的动作。CentOS 默认选择了五个主要的链。

  • INPUT链:用于处理输入数据报。所有进入到本地计算机的网络数据包都要进入该链。
  • OUTPUT链:用于处理输出数据报。所有发出本地计算机的网络数据包都要通过该链。
  • FORWARD链:用于处理转发数据报。当本地计算机作为路由器或者网关,数据必须经过本机的时候,就走这个链。
  • PREROUTING链:用于在数据报到达本地计算机之前修改该数据报,能够修改报文头中的一些内容。
  • POSTROUTING链:用于在数据报将离开本地计算机之前修改该数据报,能够修改报文头中的一些内容。

规则: 规则是链的组成部分,每个规则定义了 Iptables 命令如何对数据包执行一个动作。 Iptables 命令用一些规则对链进行定义,设置这些规则可以限制、转发、修改、丢弃或允许流量通过这些链。

三、Iptables 常用命令与操作

1、查看规则

通过 iptables -L 命令可以查看规则,其中 -L 参数表示查看所有的规则,如果想查看针对某个表的规则,可以加上表的名称,如下:

# 查看 filter 表内规则
iptables -L -v --line-numbers -t filter 

2、添加规则

下列命令表示:通过实现 DROP 动作,从输入连接中丢弃所有的 ICMP ,因为所有的 ICMP 连接都来源于外部网络,我们不能让外部网络访问内部网络。

iptables -A INPUT -p icmp -j DROP

3、删除规则

删除规则可以通过 iptables -D 命令,规则的编号可以从iptables -L中找到。

iptables -D INPUT 2

4、修改规则

修改规则可以先利用 iptables -D 删除原有规则,再使用 iptables -A 添加新规则。

iptables -D INPUT -p tcp --dport ssh -j DROP
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

5、重置规则

重置规则可以通过下面的命令实现,默认的规则是允许所有的流量通过。

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

四、例子

1、允许 Ping

如何允许 Ping 呢?可以加入下面的规则:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

2、允许SSH

如何允许SSH?可以加入下面的规则:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables-save

上面的命令中,第一条规则代表只有在状态为 NEW,来源为 TCP,目标端口为22的时候才允许连接通过。

3、设置端口转发

下面是一些开源服务的 Iptables 配置示例:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

上面的命令是将所有端口 80 的请求转发到端口 8080 上,如果是本地访问,则需要在 OUTPUT 链进行配置。

4、DDoS 防御

下面的规则可以防御基于 SYN 的攻击:

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

上面的命令表示只有 SYN 请求的 TCP 数据包才被接受,其他的都需要被丢弃。

五、总结

以上就是 CentOS Iptables 的详解。作为系统安全的重要一环,Iptables 需要具备基本的配置和管理能力,才能保障整个系统网络的安全性。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/240784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:23
下一篇 2024-12-12 12:23

相关推荐

  • CentOS 6如何删除resolv.conf的DNS

    本文将介绍在CentOS 6操作系统下如何删除resolv.conf文件中的DNS配置信息。 一、备份resolv.conf文件 在修改resolv.conf文件之前,建议首先备份…

    编程 2025-04-29
  • 使用CentOS配置监控

    本文将介绍如何使用CentOS配置监控,包括如何安装监控工具、配置监控参数、监控其他服务器等方面。 一、安装监控工具 要想进行监控,首先需要安装监控工具。在CentOS系统中,常见…

    编程 2025-04-29
  • 在CentOS上安装Redis

    Redis是一款非关系型数据库,它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。Redis运行内存内并且支持数据持久化,它还可以应用于缓存、消息队列等场景。本文将介绍…

    编程 2025-04-28
  • CentOS 7在线安装MySQL 8

    在本文中,我们将介绍如何在CentOS 7操作系统中在线安装MySQL 8。我们会从安装环境的准备开始,到安装MySQL 8的过程进行详细的阐述。 一、环境准备 在进行MySQL …

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25

发表回复

登录后才能评论