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

相关推荐
xiaoshuaishuai81 分钟前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#
用户23678298016814 分钟前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng19 分钟前
Linux LCD驱动
linux·运维·服务器
思麟呀30 分钟前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
浮生若城36 分钟前
Linux库制作与原理(2):理解链接与加载
linux·运维·服务器
Cat_Rocky40 分钟前
Gitlab安装与配置
linux·运维·gitlab
志栋智能1 小时前
超自动化巡检:降低运维总成本(TCO)的有效路径
大数据·运维·网络·人工智能·自动化
爱讲故事的1 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#
荒--1 小时前
kali安装与下载、设置(2026)
linux·服务器
Yang96111 小时前
一站式网络检测 鼎讯信通网络综合测试仪科普
运维·服务器·网络·能源