1.
- 提供商:韩国机房拨号VPS,带宽20M,公网IP示例 203.0.113.45/32。
- 系统:Ubuntu 20.04 LTS,内核常见;CPU 2 核,内存 2GB。
- 访问方式:SSH 远程登录(默认端口可变),并具备root权限。
- 目标:配置默认路由、NAT转发、以及基本安全策略和DDoS缓解。
- 工具:iptables/nftables、fail2ban、ufw、tcpdump、vnstat用于流量监控。
2.
- 查看当前网络:ip addr show; ip route show。
- 添加默认网关(示例):ip route add default via 203.0.113.1 dev eth0。
- 若为点对点拨号需配置ppp:pppoe-start或pppd + chap-secrets。
- 为内部子网做路由:ip route add 10.0.0.0/24 dev eth1。
- 永久化:编辑 /etc/netplan/*.yaml 或 /etc/network/interfaces 并重启网络服务。
3.
- 启用内核转发:sysctl -w net.ipv4.ip_forward=1 并写入 /etc/sysctl.conf。
- iptables NAT 示例:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE。
- 内网到公网转发规则:iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT。
- 针对单IP端口映射:iptables -t nat -A PREROUTING -p tcp --dport 8443 -j DNAT --to-destination 10.0.0.10:443。
- 示例路由表:使用 ip rule/ip route for multiple-src 多出口场景。
4.
- 最小暴露原则:只开放必须端口(SSH/HTTP/HTTPS/业务端口)。
- SSH建议更改端口并限制来源:iptables -A INPUT -p tcp --dport 2222 -s 203.0.113.0/24 -m conntrack --ctstate NEW -j ACCEPT。
- 常见表项(示例):拒绝所有输入后允许相关流量。iptables -P INPUT DROP; iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT。
- 启用Fail2ban监控SSH暴力:fail2ban-jail.local 设置 maxretry=3, bantime=3600。
- 日志与告警:rsyslog + logwatch,定期审计 /var/log/auth.log。
5.
- 带宽限制:20M带宽下,使用tc限速某些端口防止突发占满链路。示例:tc qdisc add dev eth0 root tbf rate 18mbit burst 32k latency 400ms。
- SYN Cookie:sysctl -w net.ipv4.tcp_syncookies=1。
- SYN速率限制:iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT。
- CDN与清洗服务:推荐前置CDN或使用云清洗,减轻VPS直接承受流量。
- 流量监控:使用iftop/vnstat并设置异常阈值告警(例如1分钟内流量>15M触发告警)。
6.
- 业务:面向国内少量客户的API代理,内网 10.0.0.5 提供服务。
- 路由命令:ip route add default via 203.0.113.1 dev eth0;ip route add 10.0.0.0/24 dev eth1。
- NAT/转发:iptables -t nat -A PREROUTING -p tcp --dport 8443 -j DNAT --to-destination 10.0.0.5:443;iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE。
- 防火墙:仅开放 2222/80/443,其他端口 DROP。Fail2ban 针对 SSH 封禁异常 IP。
- 监控阈值:单IP连接数>200 或 1分钟内流量>15M,自动告警并人工介入。
7.
| 端口 | 服务 | 状态 |
|---|---|---|
| 2222 | SSH(改端口) | 允许 |
| 80 | HTTP | 允许 |
| 443 | HTTPS | 允许 |
| 8443 | 外网映射到内网443 | 允许(NAT) |
| 3306 | MySQL(仅内网) | 拒绝公网访问 |