如何在 Linux 中通过命令行查找防火墙规则和设置

如何在 Linux 中通过命令行查找防火墙规则和设置

我正在编写一个脚本,通过命令行查找所有防火墙详细信息、路由信息和重要的网络相关信息。我可以使用 获取防火墙配置iptables -nvL,但不确定其余配置。我应该使用哪些命令来收集其他所有信息?

答案1

您可以通过以下方式获取接口状态:

ifconfig

或者更好的是,使用“ip”命令,例如:

ip addr

要获取路线信息,请使用下列方法之一:

route
route -n #no ptr resolving
ip route

对于防火墙规则,使用:

iptables -L # you can add -n to prevent name resolving

对于 IPv6,您可以将“-6”添加到“ip”命令:

ip -6 addr
ip -6 route
...

您还可以检查“ethtool”来获取链接状态和速度/双工:

ethtool eth0 

答案2

routel

列出大量信息,尽管形式不太可读,但它是主机所有路由表的完整转储,并提供足够的信息来重建主机上的 IP 配置。此信息不够完整,无法重建策略路由。如果您碰巧使用它,您还需要ip rule。无论如何,作为 IPv4 的示例(即使也列出了 IPv6):

# list all interfaces addresses (unicast/broadcast/anycast)
routel | grep "local"
# list all (except ipv6 link-local) addresses of interfaces
routel | grep "local" | grep "host"
# list all broadcast addresses of interfaces
routel | grep "local" | grep "link"
# list all routing entries
routel | grep -v "local" | grep -v "unspec"
# list all on-link routing entries
routel | grep -v "local" | grep -v "unspec" | grep "link"
# list all on-link routing entries that are added by the kernel, 
# (which also matches the netmask of the IP addresses).
routel | grep -v "local" | grep -v "unspec" | grep "link" | grep "kernel"
# list non-on-link routes (aka gatewayed or routed)
routel | grep -v "local" | grep -v "unspec" | grep -v "link" 

ip route与1999 年的不同route,routel 会列出所有路由表,而另一个只列出路由main表。如果有人使用策略路由,使用 时您将得不到任何线索ip route,而 routel 会拼写出路由表的名称。

此外,您可能希望转储 sysctl 旋钮,以了解是否有人启用了转发、ARP 代理或其他一些奇怪的功能。只需转储sysctl -a

如果你想要更完整的标志或接口信息,也可以 dump ip addr。真正特殊的配置可能需要更多,例如ip linkip tunnel

至于防火墙配置,有iptables-saveiptables-save -c如果您还需要计数器。这将列出所有表(而不仅仅是filter像 iptables -L 或 iptables -S)您甚至可以使用iptables-restore它来获取 iptables-save 的输出并恢复其配置。

答案3

打印现有 iptables 规则的命令如下:

iptables -L

答案4

您可以查看是否安装了 CSF 防火墙。

/etc/csf/csf.conf

相关内容