Nil*_*ils 7 firewall iptables centos
我有一台(非生产)机器,外部支持者可以在其中访问 shell(非 root)。我想阻止他们使用 iptables 从那台机器进一步进入我们的网络。
“正常”防火墙 GUI 仅阻止传入流量。如何设置诸如“接受所有传入流量(加上响应),但仅允许特定目标的新传出流量(例如到监控服务器的 snmp-traps)”之类的规则?
操作系统是 CentOS 5
假设您只想接受传入 TCP 流量,您可以使用这些规则将传出流量限制为已建立的 TCP 连接(必须从外部发起)和 LAN 外部的 IP 地址:
iptables -A INPUT -p tcp -i lo -j ACCEPT
iptables -A INPUT -p tcp -p 22 -j ACCEPT # repeat for other ports you want to allow
iptables -P INPUT -j DENY
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -p tcp \! -d 10.0.0.0/8 -j ACCEPT # replace by your LAN's network(s)
iptables -A OUTPUT -p tcp \! --syn -j ACCEPT
iptables -P OUTPUT -j DENY
Run Code Online (Sandbox Code Playgroud)
根据您的要求,您可能更愿意将一些规则专门应用于支持者执行的流程。假设他们在supporters
组中,以下规则将拒绝支持者(并且仅支持者)在您的 LAN 内的所有连接(传入或传出):
iptables -I INPUT \! -i lo -s 10.0.0.0/8 -m owner --gid-owner supporters -j DENY
iptables -I OUTPUT \! -o lo -d 10.0.0.0/8 -m owner --gid-owner supporters -j DENY
Run Code Online (Sandbox Code Playgroud)
请注意,gid-owner
测试进程的fsgid,它几乎总是有效的 GID。除非进程运行setgid或将其有效 GID 切换到补充组,否则将应用用户的主要组(记录在用户数据库中,例如/etc/passwd
)。
除了您明确定义为 ACCEPT 的流量外,有两种方法可以丢弃所有传出流量。第一个是将 OUTPUT 链的默认策略设置为丢弃。
iptables -P OUTPUT DROP
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是当链被刷新(所有规则删除)时,所有出站流量都将被丢弃。另一种方法是在链的末尾放置一个“毯子”DROP 规则。
iptables -A OUTPUT -j DROP
Run Code Online (Sandbox Code Playgroud)
在不确切知道您需要什么的情况下,我无法就接受什么提供建议。我个人使用将默认 DROP 规则放在链的末尾的方法。您可能需要调查您的 GUI 如何设置规则,否则它可能与传统的 CLI 启动时恢复规则的方式(例如 /etc/sysconfig/iptables)相冲突。
归档时间: |
|
查看次数: |
16641 次 |
最近记录: |