在 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 接受