1.
准备与前置条件
- VPS 系统选择:建议 Debian/Ubuntu 或 CentOS 7/8。
- 必备权限:root 或 sudo 权限。
- 网络要求:确认运营商允许 1723/TCP 与 GRE(47) 协议通过(部分数据中心会限制)。
2.
安装 PPTP 服务(以 Debian/Ubuntu 为例)
- 更新系统:sudo apt update && sudo apt upgrade -y。
- 安装 pptpd:sudo apt install pptpd -y。
- 启动并设置开机自启:sudo systemctl enable --now pptpd。
3.
配置 PPTP(/etc/pptpd.conf 与 /etc/ppp/chap-secrets)
- 编辑 /etc/pptpd.conf,至少添加本端与分配池,例如:localip 10.0.0.1 remoteip 10.0.0.100-10.0.0.200。
- 编辑 /etc/ppp/chap-secrets,格式:用户名 PPTPD 密码 客户端IP,例如:vpnuser pptpd password *。
- 为安全设置:使用强密码,且不要使用常见用户名(如 admin)。
4.
启用 IP 转发与 NAT
- 临时启用:sudo sysctl -w net.ipv4.ip_forward=1。
- 永久启用:编辑 /etc/sysctl.conf,添加或修改 net.ipv4.ip_forward=1,然后 sudo sysctl -p。
- NAT(假设外网接口为 eth0):sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE。
5.
用 iptables 强化端口与访问控制(最关键的规则)
- 允许已建立连接:sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT。
- 允许本地回环与必要端口(如 DNS/HTTP 根据需要):sudo iptables -A INPUT -i lo -j ACCEPT。
- 允许 PPTP:sudo iptables -A INPUT -p tcp --dport 1723 -m conntrack --ctstate NEW -j ACCEPT;sudo iptables -A INPUT -p 47 -j ACCEPT(GRE 为协议号 47)。
- 限制 SSH(示例改端口 2222 并只允许管理 IP 1.2.3.4):sudo iptables -A INPUT -p tcp --dport 2222 -s 1.2.3.4 -m conntrack --ctstate NEW -j ACCEPT。
- 默认策略:sudo iptables -P INPUT DROP;sudo iptables -P FORWARD DROP;注意先添加允许规则再设置 DROP。
6.
持久化规则与 UFW 备选
- 保存 iptables(Debian):sudo apt install iptables-persistent -y,然后 sudo netfilter-persistent save。
- CentOS 使用 service iptables save 或安装 iptables-services。
- 若习惯 UFW(Ubuntu):sudo ufw allow proto tcp from 0.0.0.0/0 to any port 1723;sudo ufw allow proto gre;sudo ufw limit 2222/tcp;sudo ufw enable。
- 说明:UFW 中直接指定 GRE 可能不直观,可在 /etc/ufw/before.rules 中添加相应 iptables 条目。
7.
更细粒度访问控制与端口安全策略
- 白名单:尽量把管理端口、PPTP 访问限制到固定 IP 或 IP 段,例如只允许公司出口 IP。
- 速率限制:对登录端口使用 conntrack/iplimit 或 iptables --limit 来防爆破(如 --limit 3/min)。
- 日志与告警:对 DROP 或 NEW 事件打 log(iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPT DROP: "),并结合 fail2ban 处理异常登录。
8.
测试与故障排查
- 检查服务:sudo systemctl status pptpd。
- 检查端口:ss -ltnp | grep 1723 或 netstat -anp | grep 1723。
- 抓包观察 GRE:sudo tcpdump -n -i eth0 host <客户端IP> and \(tcp port 1723 or proto 47\)。
- 日志:/var/log/syslog 或 /var/log/messages 检查 pppd/pptpd 相关信息,常见问题为认证失败、GRE 被阻断、IP 转发未启用。
9.
安全建议与运维注意事项
- PPTP 本身加密较弱,尽量只用于兼容场景;生产环境推荐 OpenVPN 或 WireGuard。
- 定期更新系统与 pptpd;限制登录尝试并更换弱口令。
- 监控带宽与连接数量,防止被滥用导致高费用或封禁。
10.
问:香港 VPS 上部署 PPTP 最容易被忽视的安全点是什么?
问:香港 VPS 上部署 PPTP 最容易被忽视的安全点是什么?
答:最容易被忽视的是 GRE 协议被数据中心或上游防火墙透明阻断,以及默认允许过多来源访问 1723,建议验证 GRE 通道通畅并把 1723 白名单化,仅允许可信 IP。
11.
问:如何在不影响 VPN 客户端的前提下限制管理端口访问?
问:如何在不影响 VPN 客户端的前提下限制管理端口访问?
答:把管理端口(如 SSH)改为非标准端口并配合 iptables 白名单,只允许你的办公公网 IP,并启用 fail2ban 及速率限制,保证 VPN 客户端使用的 1723/GRE 不受影响。
12.
问:如果运营商封堵 1723 或 GRE,有没有应急方案?
问:如果运营商封堵 1723 或 GRE,有没有应急方案?
答:可考虑改用更难区分的端口和协议(如 OpenVPN TCP 443 或 WireGuard UDP),或通过 SSH 隧道/SSL 隧道转发,但这些方案需要客户端与服务器同时调整,长期建议迁移到更现代的 VPN 协议。
来源:使用防火墙策略在香港vps搭建pptp时保障访问控制与端口安全