如何关闭服务器的外网访问?

关闭服务器外网访问是一个比较常见的需求,通常是为了提升安全性或进行内部维护,具体操作方法取决于你的服务器环境,以下是几种最常用的方案:

方法一:通过云服务商控制台(最简单、最推荐)

如果你是使用阿里云、腾讯云、华为云、AWS等云服务器,这是最安全、最便捷的方法。

1、登录云服务商控制台:找到你的云服务器实例。

2、找到“安全组”或“防火墙”

阿里云:实例 -> 更多 -> 网络和安全组 -> 安全组配置

腾讯云:实例 -> 更多 -> 安全组

AWS:EC2 -> 安全组

3、修改安全组规则

方式A(推荐):删除或禁用所有入站规则,这是最彻底的方式,服务器将不再接受任何来自外网(0.0.0.0/0)的连接请求。

方式B(更安全):创建一个只允许内网IP访问的安全组,将入站规则中的“源”设置为192.168.0.0/16 或你公司/内网的特定网段。

4、保存并应用,修改会立即生效,无需重启服务器。

优点操作无痕,不修改服务器系统,即使误操作也可以通过控制台快速恢复。不需要SSH连接

缺点:依赖云控制台。

方法二:在服务器操作系统内操作(需有SSH连接)

如果你已经通过SSH连接到服务器,或无法访问云控制台,可以在系统层面操作。

1. 使用 iptables (Linux 通用)

临时关闭所有外网访问(出站和入站):

禁止所有入站连接(外部无法连入服务器)
sudo iptables -P INPUT DROP  
禁止所有出站连接(服务器无法访问外网)
sudo iptables -P OUTPUT DROP
允许回环接口(本地连接,否则系统可能异常)
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

只禁止外网访问,但允许服务器主动访问外网(例如用于更新)

允许已建立的连接继续(比如你当前的SSH连接)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
禁止所有新的外部入站连接
sudo iptables -P INPUT DROP

还原默认设置(允许所有流量):

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

注意:iptables 规则重启后会失效,如需永久保存,需执行sudo iptables-save > /etc/iptables/rules.v4 (不同系统路径可能不同)。

2. 使用 firewalld (CentOS/RHEL/Rocky Linux 常用)

查看当前默认区域
sudo firewall-cmd --get-default-zone
将默认区域设置为仅允许内网(假设内网网段为192.168.1.0/24)
sudo firewall-cmd --permanent --zone=trusted --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --zone=public --remove-interface=eth0  # 移除公网接口
sudo firewall-cmd --reload
更彻底:直接禁用防火墙阻塞所有外部流量(慎用,会断开SSH)
sudo systemctl stop firewalld
但通常设置为禁用更安全
sudo firewall-cmd --complete-reload  #保持配置

3. 使用 ufw (Ubuntu/Debian 常用)

禁止所有入站连接
sudo ufw default deny incoming
允许内网连接(例如192.168.1.0/24)
sudo ufw allow from 192.168.1.0/24
启用防火墙
sudo ufw enable

方法三:物理/逻辑断开网络(极端情况)

拔网线/关网络接口:如果你有物理访问权限,直接拔掉网线或关闭服务器的网络接口卡。

操作系统层禁用网卡

    # Linux (查找网卡名后禁用)
    ip link set dev eth0 down   # 或 ifconfig eth0 down
    # 恢复
    ip link set dev eth0 up    # 或 ifconfig eth0 up

重要警告和注意事项

1、彻底性对比

云控制台安全组:最彻底,连管理员都无法绕过。

操作系统防火墙:如果系统被入侵,攻击者可能也有root权限,可以简单地iptables -F 清空规则来恢复外网。云控制台是更底层的隔离

2、会断掉你的SSH连接:执行上述操作后,你当前的SSH会话将立即中断,如果服务器只有外网IP,你将无法再远程连接。

补救措施务必先通过其他方式登录(如云控制台的VNC/远程连接) 来修改规则,或者先确保你保留了内网连接或控制台访问能力。

3、影响服务:所有依赖外网的服务(如邮件发送、API调用、域名解析、软件源更新)都会立即停止工作。

4、永久生效与临时生效iptablesfirewalld 的操作重启后会失效,云控制台的安全组规则是永久有效的。

最佳实践:使用云服务商安全组,它能提供最底层的、操作系统无法绕过的隔离。

临时操作:使用操作系统内的防火墙(如iptablesufw)。

绝对保险:在操作前,务必通过云控制台的VNC/远程连接登录,确保你有一个“后门”恢复连接。

如果你不确定操作后果,强烈建议先在测试服务器上尝试,或者咨询有经验的系统管理员。

文章摘自:https://idc.huochengrm.cn/fwq/25105.html

评论