《每日一命令18:iptables——Linux防火墙入门》

本期摘要

iptables 是 Linux 内核集成的防火墙工具,但很多人对它敬而远之------规则看起来像天书。本文从实战出发,不讲复杂的表和链理论,只教你三件事:怎么查看当前规则、怎么开放/关闭端口、怎么封禁单个IP。附带最常用的规则示例、保存规则的方法,以及如何避免把自己锁在服务器外的"后悔药"。读完你就能在服务器上建起第一道防线。

iptables是什么?

iptables 是 Linux 内核 netfilter 框架的用户态管理工具。用于配置包过滤规则、网络地址转换(NAT)等。

大多数云服务器默认没有开启防火墙,或者用的是 firewalld,但 iptables 的命令思路是通用的。

最常用的5种姿势

1. 查看当前规则

bash

复制代码
# 查看 filter 表(默认)的规则
iptables -L -n -v

# 查看更详细的规则编号(方便删除)
iptables -L -n --line-numbers

-L 列出,-n 不解析名字,-v 显示详细信息。

2. 开放端口

bash

复制代码
# 开放 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 开放 22 端口(SSH)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

-A append 追加规则到链尾,-p 协议,--dport 目标端口,-j 动作(ACCEPT/DROP/REJECT)。

3. 拒绝特定IP

bash

复制代码
# 封禁单个IP
iptables -A INPUT -s 192.168.1.100 -j DROP

# 封禁整个C段
iptables -A INPUT -s 192.168.1.0/24 -j DROP

-s 源地址。

4. 删除规则

bash

复制代码
# 根据规则内容删除
iptables -D INPUT -s 192.168.1.100 -j DROP

# 根据编号删除(先查看编号)
iptables -L -n --line-numbers
iptables -D INPUT 3

-D 删除。

5. 保存与恢复规则

Debian/Ubuntu:

bash

复制代码
# 安装持久化工具
apt install iptables-persistent
# 保存
netfilter-persistent save

CentOS/RHEL:

bash

复制代码
# 保存规则(覆盖)
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

真实场景

场景1:服务器新上业务,开放8080端口

bash

复制代码
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

-I 插入到链首,优先级更高。

场景2:禁止某个IP访问本机所有端口

bash

复制代码
iptables -A INPUT -s 恶意IP -j DROP

场景3:只允许特定IP访问SSH

bash

复制代码
iptables -A INPUT -p tcp --dport 22 -s 允许的IP -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

注意顺序:先允许,再拒绝其他。

场景4:防止简单的DDoS(限制连接数)

bash

复制代码
# 限制单个IP对80端口的并发连接数不超过10
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

避免把自己锁在外面

远程操作服务器配置防火墙时,最怕的是把自己封掉了。

安全操作步骤:

bash

复制代码
# 1. 先开放SSH端口(如果不确定是否已存在)
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

# 2. 保存规则(如果已经可以)

# 3. 测试新规则(另开一个SSH窗口连一下,能通再继续)

# 4. 最后设置默认策略(小心!)
iptables -P INPUT DROP   # 默认拒绝所有入站

后悔药方案: 设置一个定时任务,10分钟后清空规则。万一锁住了,等10分钟自动恢复。

bash

复制代码
# 10分钟后清空所有规则
echo "iptables -F" | at now + 10 minutes

常用参数速查

参数 含义
-A 追加规则(链尾)
-I 插入规则(链首,可指定位置)
-D 删除规则
-L 列出规则
-F 清空所有规则(小心!)
-P 设置默认策略
-p 协议(tcp/udp/icmp)
--dport 目标端口
--sport 源端口
-s 源地址
-d 目标地址
-j 动作(ACCEPT/DROP/REJECT/LOG)
-m 匹配模块(connlimit、state等)
-v 详细信息

下期预告

《每日一命令19:firewalld------更友好的防火墙管理》

相关推荐
运维大师1 分钟前
【K8S 运维实战】37-金融企业多集群落地
运维·金融·kubernetes
米修米修ne3 分钟前
Home Assistant连接米家MIoT和苹果HomeKit折腾笔记
服务器·智能家居
行者-全栈开发41 分钟前
【Linux内核】CVE-2026-46242:Bad Epoll Linux 内核 epoll UAF 漏洞修复指南(99%可靠root的云安全噩梦)
linux·运维·服务器·cve-2026-46242·linux内核漏洞·use-after-free·云多租户安全
平安的平安42 分钟前
人在外地,怎样访问办公室里的电脑和内部资源?
运维·服务器·电脑
智体工坊1 小时前
从零搭建 AI 模型中转网关:部署、渠道、定价、装修全记录
运维·服务器·人工智能·搜索引擎·自动化
我命由我123451 小时前
Kotlin 面向对象 - Kotlin 类变量与类方法
java·服务器·后端·java-ee·kotlin·android jetpack·android runtime
信鸽爱好者1 小时前
一人多台电脑办公模式:windows 电脑A远程桌面操作ubuntu电脑B
linux·运维·ubuntu
木由里予1 小时前
TEE(Trusted Execution Environment)技术详解
java·linux·开发语言·网络·嵌入式硬件·android-studio
元岳数字人小元1 小时前
易部署易运维!AI数字人一体机实现场景长效运营
运维·人工智能·人机交互·交互·源代码管理
小比特-combat1 小时前
FreeRTOS任务通知
java·服务器·前端