温馨提示×

iptables如何限制Debian访问

小樊
34
2026-07-01 22:39:09
栏目: 智能运维

在 Debian 上,iptables 可以很灵活地限制“访问”的含义,常见需求一般分为几类。下面按最常见场景给你示例配置(iptables 不是持久化的,重启会失效,下文也会讲如何保存)。


一、基础说明(先看这个)

  • INPUT:控制访问本机的流量
  • OUTPUT:控制本机访问外部的流量
  • FORWARD:控制转发流量(如做网关、Docker)

二、限制“谁可以访问 Debian 本机”

1️⃣ 只允许指定 IP 访问本机

iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -j DROP

意思是:

  • 只允许 192.168.1.100 访问
  • 其他全部拒绝

⚠️ 注意:这样会导致 SSH 也断掉,务必小心!


2️⃣ 只限制某个端口(如 SSH)

只允许指定 IP 登录 SSH(22):

iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

3️⃣ 限制某个 IP 访问 Debian

封禁某个 IP:

iptables -A INPUT -s 203.0.113.50 -j DROP

三、限制“Debian 访问外部网络”

1️⃣ 禁止 Debian 访问某个 IP

iptables -A OUTPUT -d 8.8.8.8 -j DROP

2️⃣ 禁止 Debian 访问某个端口(如 80/443)

iptables -A OUTPUT -p tcp --dport 80 -j DROP

3️⃣ 只允许 Debian 访问指定端口

iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -j DROP

四、限制访问频率(防暴力破解)

限制 SSH 连接频率(推荐)

iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m recent --update --seconds 60 --hitcount 5 -j DROP

效果:

  • 60 秒内同一个 IP 超过 5 次 SSH 连接 → 封禁

五、常用安全策略(推荐模板)

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

# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许 SSH(按需改端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 拒绝其余
iptables -A INPUT -j DROP

六、保存 iptables(Debian 重要)

iptables 重启会消失,需要保存:

方法 1(推荐)

apt install iptables-persistent

保存:

iptables-save > /etc/iptables/rules.v4

七、查看与清理

查看规则

iptables -L -n -v

清空所有规则(危险)

iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

八、我可以进一步帮你

如果你能说明以下任意一点,我可以给你精确规则

  1. 限制的是 谁访问 Debian 还是 Debian 访问谁
  2. 端口/协议/IP/时间段
  3. 是否是 SSH / Web / Docker / 内网
  4. Debian 是 服务器还是桌面

直接说你的具体需求即可。

0