![仅为选定的应用程序限制网络](https://linux22.com/image/573179/%E4%BB%85%E4%B8%BA%E9%80%89%E5%AE%9A%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%99%90%E5%88%B6%E7%BD%91%E7%BB%9C.png)
在 Linux 环境中是否可以限制仅在选定的应用程序上使用网络?
可以这么说,我的移动调制解调器上的预付费数据限制非常有限,并且我只想使用该数据限制来连接到 SSH。同时限制其他每个应用程序访问网络。
有没有什么解决办法?如果能轻松恢复正常就更好了。
答案1
iptables,Linux 防火墙,可以做到这一点。
iptable -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
请记住不要通过远程 SSH 会话执行此操作。
第一条规则将刷新现有的防火墙规则,第二条和第三条分别阻止传入和传出流量。第四条规则阻止 FORWARD,但这可能与您无关。然后,您可以按如下方式添加要允许的流量条目。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
您尚未指定 Linux 版本,但您可以在命令行中执行这些命令,然后使用 iptables-save 保存配置。或者,您可以编辑/etc/sysconfig/iptables
(在基于 RHEL 的发行版上,可能在其他发行版上?)并保存这些命令(减去 iptables 前缀,即-A INPUT -p tcp --dport 22 -j ACCEPT
),然后使用 iptables-restore 加载它们。
答案2
您可以使用以下规则保护更多或限制 ssh 连接。以下规则仅允许来自 192.168.100.X 网络的传入 ssh 连接。
iptables -A 输入 -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j 接受 iptables -A 输出 -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j 接受