《每日一命令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------更友好的防火墙管理》

相关推荐
qq_316411031 小时前
商用冷柜售后报修运维管理系统开发案例
运维
huainingning1 小时前
R4930-G7服务器(RAID-LSI-9560-LP-8i-4GB)网页方式做Raid方法
服务器
智码看视界2 小时前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
ltl3 小时前
QUIC 握手实现:Initial 到 1-RTT 的最小路径
linux
码视野3 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
qq_426003964 小时前
【UI自动化测试】UI自动化报错解决方案
运维·ui·自动化
网安蟹佬霸4 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
小杨不想秃头4 小时前
信息安全工程师教程第二章密码学
运维·服务器·密码学
I'mChloe4 小时前
WGCLOUD怎么监控多台服务器?从Server、Agent 部署到监控面板实战
运维·服务器
Android系统攻城狮4 小时前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶