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

相关推荐
Android系统攻城狮18 分钟前
Linux Gstreamer深度解析之gst_audio_sink_get_type调用流程与实战(六十五)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
xiaoqiMikko31 分钟前
Linux 实战(一):CentOS 7、Rocky 9、Ubuntu 24.04 三台真机实测 —— 认清系统、换源、装包的版本坑
linux·centos
迷途之人不知返36 分钟前
【基础IO】-1-预备知识与准备工作
linux
xiaoqiMikko36 分钟前
Linux 实战(二):端口不通 —— CentOS 7、Rocky 9、Ubuntu 24.04 上防火墙和 SELinux 的实测差异
linux·centos
大鹏的NLP博客1 小时前
WSL Ubuntu 26.04 升级与环境整理记录
linux·ubuntu·wsl
GeW2 小时前
如何打造真正的数字化工厂?需从Red Hat到数据库底层打捞基石
linux
沫璃染墨2 小时前
从零入门计算机网络系列(一):计算机网络初识——从网络发展史到TCP/IP协议》
linux·网络·网络协议·tcp/ip·计算机网络
云贝贝贝2 小时前
PostgreSQL 分区表:从设计到运维,大表不再卡
运维·数据库·postgresql
zyseo82 小时前
谷歌SEO 站内搜索优化实战:把站内搜索词变成关键词金矿
java·服务器·数据库
王大傻09282 小时前
堆叠注入(Stacked Queries Injection)详解:原理、利用与防御
服务器·网络·数据库·web安全·网络安全