iptables命令详解

这篇具有很好参考价值的文章主要介绍了iptables命令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

iptables 是 Linux 系统中用于配置 IPv4 数据包过滤规则的工具。它是 Linux 内核中 Netfilter 框架的一部分,通过设置规则,可以实现网络包的过滤、NAT 转发、端口映射等功能。

基本概念

表(Tables)
filter 表:负责过滤规则,是默认的表。
nat 表:负责网络地址转换规则。
mangle 表:用于修改数据包的特殊规则。
raw 表:用于配置豁免主机的数据包。
链(Chains)
INPUT:处理输入数据包。
FORWARD:处理转发数据包。
OUTPUT:处理输出数据包。
自定义链:用户可以创建自己的链,并将其添加到默认链中。
目标(Targets)
ACCEPT:接受数据包。
DROP:丢弃数据包。
REJECT:拒绝数据包并返回错误消息。
LOG:记录数据包到系统日志。
自定义目标:用户可以定义自己的目标,通常用于连接到用户定义的链。

常用命令

显示规则

sudo iptables -L

清空规则

sudo iptables -F

允许/拒绝特定 IP 的访问

# 允许特定 IP 访问
sudo iptables -A INPUT -s 192.168.1.2 -j ACCEPT

# 拒绝特定 IP 访问
sudo iptables -A INPUT -s 192.168.1.3 -j DROP

端口转发

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

允许/拒绝特定端口

# 允许特定端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 拒绝特定端口
sudo iptables -A INPUT -p tcp --dport 23 -j DROP

应用规则

sudo service iptables restart

配置示例

清空规则和设置默认策略

sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

这将清空所有规则,并将默认策略设置为拒绝输入和转发,允许输出。
允许本地回环

sudo iptables -A INPUT -i lo -j ACCEPT

允许已建立和相关连接

sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

允许 SSH 访问

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许 HTTP 和 HTTPS 访问

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

防止 SYN 攻击

sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP

限制每秒 SYN 数据包的数量,防止 SYN 攻击。
防止 ICMP 攻击

sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

限制每秒 ICMP Echo Request 数据包的数量。
限制连接频率(可选)

sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m limit --limit 20/s -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j DROP

限制每秒新建立的 HTTP 连接数量。
日志规则(可选)

sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES: "

范本示例

# 清空规则和设置默认策略
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许本地回环访问
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立和相关连接通过
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# 允许 SSH 访问 (只有特定 IP)
iptables -A INPUT -p tcp --dport 22 -s 203.0.113.1 -j ACCEPT

# 允许 HTTP 和 HTTPS 访问 (使用连接追踪)
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT

# 防止 SYN 攻击 (限制每秒 50 个,爆发 200 个)
iptables -A INPUT -p tcp --syn -m limit --limit 50/s --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 防止 ICMP 攻击 (限制每秒 1 个)
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# 限制连接频率 (每秒 20 个新连接)
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m limit --limit 20/s -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j DROP

# 防止端口扫描 (限制每秒 1 个新连接)
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP

# 拒绝无效数据包
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# 允许特定 IP 访问特定端口 (限制每秒 5 个连接)
iptables -A INPUT -p tcp -s 203.0.113.2 --dport 8080 -m conntrack --ctstate NEW -m limit --limit 5/s -j ACCEPT
iptables -A INPUT -p tcp -s 203.0.113.2 --dport 8080 -m conntrack --ctstate NEW -j DROP

# 日志未匹配的数据包
iptables -A INPUT -j LOG --log-prefix "IPTABLES: " --log-level 7

# 保存规则
service iptables save

# 应用规则
service iptables restart

这个例子包含了一系列规则,用于保护服务器免受各种攻击。需要根据实际环境进行适当调整。以下是配置中一些主要特性的解释:
SYN 攻击防护: 限制每秒只允许50个 SYN 数据包,并在短时间内允许爆发200个。这有助于防止 SYN 攻击。
ICMP 限制: 限制每秒只允许1个 ICMP Echo Request 数据包,以防止 ICMP 攻击。
连接频率限制: 对于HTTP(端口80),限制每秒新建立连接的数量为20个。
端口扫描防护: 通过限制每秒只允许1个 RST 数据包,防止端口扫描。
无效数据包拒绝: 拒绝无效的连接状态。
特定 IP 的连接频率限制: 对于特定IP(203.0.113.2)访问端口8080,限制每秒新连接的数量

UFW配置

ufw(Uncomplicated Firewall)是一个在 iptables 基础上的前端工具,用于简化防火墙配置。下面是上述 iptables 配置如何在 ufw 中实现的例子.

# 启用ufw
sudo ufw enable
# 设置默认规则
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许本地回环访问
sudo ufw allow in on lo

# 允许已建立和相关连接通过
sudo ufw allow in from any to any state RELATED,ESTABLISHED

# 允许 SSH 访问 (只有特定 IP)
sudo ufw allow from 203.0.113.1 to any port 22

# 允许 HTTP 和 HTTPS 访问
sudo ufw allow in on eth0 to any port 80 proto tcp
sudo ufw allow in on eth0 to any port 443 proto tcp

# 防止 SYN 攻击
sudo ufw limit in on eth0 to any port 80 proto tcp

# 防止 ICMP 攻击
sudo ufw limit in on eth0 to any icmp type echo-request

# 限制连接频率
sudo ufw limit in on eth0 to any port 80 proto tcp

# 防止端口扫描
sudo ufw deny in on eth0 to any tcp flags SYN,ACK,FIN,RST RST

# 拒绝无效数据包
sudo ufw deny in from any to any state INVALID

# 允许特定 IP 访问特定端口
sudo ufw limit in from 203.0.113.2 to any port 8080 proto tcp

# 启用日志
sudo ufw logging on

# 重启ufw
sudo ufw reload

上述 ufw 配置尝试模仿之前的 iptables 配置。ufw 默认情况下启用了 IPV6 的规则,如果只需考虑 IPV4,可以使用 --ipv6 off 选项。
在 ufw 中,规则的描述更直观,并且通过 allow、deny 和 limit 指令,可以轻松实现不同类型的规则。此外,ufw 还会自动配置规则以适应所选服务的需求。
iptables命令详解,服务器,linux,防火墙,iptables,ufw,运维文章来源地址https://www.toymoban.com/news/detail-820192.html

到了这里,关于iptables命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux 服务器进程、端口查找,nginx 配置日志查找,lsof 命令详解

    1.1 使用查看端口号对应的进程信息 方式一 : 使用netstat命令 -t:显示TCP连接 -u:显示UDP连接 -l:仅显示监听状态的连接 -n:以数字形式显示端口号,而不是以服务名称显示 通过管道符号|将netstat的输出结果传递给grep命令,用于过滤出包含指定端口号的行。 执行命令后,终端

    2024年02月04日
    浏览(60)
  • Linux防火墙限制访问服务器IP和端口

    笔记 逐行执行命令 查看

    2024年02月15日
    浏览(58)
  • 阿里云服务器linux部署nginx-(阿里云服务器端口打不开解决方法-防火墙和安全组设置)

    ( 1 ) nginx官网 下载最新版本安装包: nginx: download (2)或者直接wget命令下载 如果有报错:   验证nginx是否启动 # 查看端口号被哪个进程占用 netstat -ntlp | grep 80 # 查看防火墙开放端口 firewall-cmd --zone=public --list-ports # 若防火墙关闭,检查防火墙状态,开启防火墙 systemctl sta

    2024年04月09日
    浏览(53)
  • Linux网络服务之iptables防火墙工具

    Netfilter是一个Linux内核功能,用于在网络数据包从网络堆栈进入或离开时进行包过滤和操作。 Netfilter内称为防火墙的“内核态”。 Firewalld和Iptables 都不是防火墙,是 防火墙管理工具 ,被称为防火墙的“用户态”。 Centos 7中默认管理防火墙规则的工具是firewalld。 由软件包ip

    2024年02月12日
    浏览(38)
  • 【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)

    这篇文章给大家介绍下iptables防火墙,防火墙大致分三种,分别是硬件、软件和云防火墙。硬件的话部署在企业网络的入口,有三层路由的H3C、华为、Cisco(思科),还有深信服等等;软件的话一般是开源软件,写在网站内部,最常见的有iptables(写入Linux内核)和firewalld(C

    2024年02月09日
    浏览(40)
  • IPtables服务器配置与管理

    查看iptables服务 查看和删除iptables规则 设置iptables的策略及规则 iptables 包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的 Hook 点来区分的,表和链实际上是netilter的两个维度。4个表:flter,nat,mangle,raw,默认表是 filter(没有指定表的时候就是filter表)。表的

    2024年02月07日
    浏览(42)
  • linux服务器禁止ping命令,linux服务器禁ping如何解除

      我是艾西,在我们搭建网站或做某些程序时,不少人会问禁ping是什么意思,怎么操作的对于业务有哪些好处等,今天艾西一次给你们说清楚。 禁PING的意思是:不允许电脑、设备或服务器使用PING功能。一般情况下电脑、防火墙、服务器都是允许PING功能的,不需要特别设置

    2023年04月20日
    浏览(48)
  • Linux 命令|服务器相关

    【精选】在公共Linux服务器上创建自己的python虚拟环境_服务器创建自己的环境-CSDN博客 1. nvidia-smi命令详解-CSDN博客 2. 查看进程 top 和 ps 啥区别? ps 可以查看所有状态的进程? top 实时查看运行态的进程? 在本地 Mac 计算机的终端中,使用以下命令将文件上传到服务器 其中,

    2024年02月07日
    浏览(49)
  • Linux 配置常见服务器命令

    Linux常见配置服务器的命令整理,基于Centos 7 。 配置web nginx msyql 这里再附一份nginx详细配置文件(一般用于项目部署):

    2024年02月16日
    浏览(44)
  • Linux服务器移动文件命令

    mv(move) 命令可以将文件和目录从一个位置 移动 到另一个位置;         它也可以用来 重命名 文件和目录。 mv命令语法         source 可以是一个或多个文件或目录;         destination 总是一个文件或目录;         如果我们以单个文件为源,以一个目录为目标

    2023年04月25日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包