![iptables 仅允许 ssh、VPN 和阻止扫描程序](https://linux22.com/image/1501511/iptables%20%E4%BB%85%E5%85%81%E8%AE%B8%20ssh%E3%80%81VPN%20%E5%92%8C%E9%98%BB%E6%AD%A2%E6%89%AB%E6%8F%8F%E7%A8%8B%E5%BA%8F.png)
我确实有一个需要保护的 Debian VPS。我希望服务器只能通过 ssh 和 openvpn 访问。一旦连接,就不会有任何限制。此外,阻止扫描仪并 ping 服务器。由于我被 iptables 命令集困住了,所以我希望得到一些帮助。目前 iptables 是:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -X
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
iptables -P INPUT DROP
iptables -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 1194 -j ACCEPT
iptables -P OUTPUT DROP
一旦连接,就可以浏览互联网。我还希望系统能够发送电子邮件、dns 请求。
答案1
您的大多数要求都很明确,例如:
- Debian VPS 必须能够发送电子邮件
- Debian VPS 必须能够查询 DNS 服务器
- Debian VPS 中的块扫描器
- 你的计算机必须能够与 VPS 建立 SSH 会话
- 你的计算机必须能够与 VPS 建立 openVPN 会话
我不清楚的是“一旦连接就可以浏览互联网”。但我有一个假设。;)
发电子邮件
根据您想要使用哪种协议来发送电子邮件,打开相应的端口(例如 TCP 端口 25 或 TCP 端口 587 ;在下面的示例中我将使用 25):
iptables -I OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
然后,您需要允许来自远程邮件服务器的传入返回流量:
iptables -I INPUT -p tcp -m tcp --sport 25 -j ACCEPT
或更好:
iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED --sport 25 -j ACCEPT
(允许 Debian VPS 建立的连接中所有来自端口 25 的 TCP 返回流量)。
DNS 查询
这与发送电子邮件非常相似:
iptables -I OUTPUT -p udp --dport 53 -j ACCEPT
iptables -I INPUT -p udp -m state --state ESTABLISHED,RELATED --sport 53 -j ACCEPT
SSH 和 openVPN
这是您自己已经配置的
浏览网络
我想你想
- 通过 openVPN 连接到 Debian VPS
- 通过 Debian VPS 浏览互联网
- 这样你家里的电脑就会看起来像是 Debian VPS(就公共 IP 地址而言)
所以你想
在 Debian VPS 上启用内核转发:
$ sudo sysctl -w net.ipv4.ip_forward=1
另外
$ sudo nano /etc/sysctl.conf
并确保有一个未注释的#
行(前面没有),内容为
net.ipv4.ip_forward=1
启用 iptables 转发
此外,您想在 iptables 中启用转发:我假设您使用tun
设备在路由模式下使用 openVPN(而不是使用tap
设备的桥接模式,并且您使用 10.8.0.0/24(openVPN 的默认值)作为 IP 地址范围。
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A FORWARD -o eth0 -i tun+ -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
阻止扫描仪
嗯,扫描仪通常会查看常用端口,如 80、22、1194。所以我个人喜欢使用不同的端口。我写了关于使用不同方法的文章在此超级用户帖子中,使用atd
来帮助您不把自己锁定在远程 Debian VPS 之外。简而言之,您可以
- 在不同的端口上使用 SSH 和 openVPN
- 根据请求使用端口敲击打开端口