iptables:
在 Linux 系统中,iptables 不仅仅是一个服务或守护进程,它实际上是内核空间的一部分,用于处理网络包过滤和网络地址转换。这意味着,即使 iptables 服务没有运行,内核模块仍然会按照当前的 iptables 规则来处理网络数据包。
iptables.service 或者 iptables-services 通常用于在系统启动时加载一组预定义的 iptables 规则,以及在系统关闭时(或者需要时)保存当前的 iptables 规则。然而,这并不意味着 iptables 作为一个系统服务需要一直运行。一旦规则被加载到内核,即使 iptables 服务停止了,这些规则仍会继续工作。
简而言之,iptables 规则是直接由内核处理的,不依赖于任何用户空间的服务或进程。因此,即使 iptables 服务状态显示为 "inactive" 或 "dead",仍然可能有一组活动的 iptables 规则在系统上生效。
如果你对当前系统的 iptables 规则有疑问,你可以使用 iptables -L -v 命令来查看所有当前活动的规则。这将显示所有配置的规则,不论 iptables 服务是否运行。
永久禁止外部访问tcp端口10008:
echo "iptables -A INPUT -p tcp -s 127.0.0.1 --dport 10008 -j ACCEPT ; iptables -A INPUT -p tcp --dport 10008 -j DROP" >> /etc/rc.d/rc.local;source /etc/rc.d/rc.local
iptables
是一个强大的工具,用于配置 Linux 内核防火墙。下面是一些常见的 iptables
命令用例:
查看现有规则
要查看所有的 iptables
规则,你可以运行:
sudo iptables -L
要查看更详细的信息,包括数据包和字节的计数器,你可以添加 -v
选项:
sudo iptables -L -v
清空现有规则
清空所有规则:
sudo iptables -F
禁止特定IP地址访问
要禁止特定 IP 地址访问服务器,你可以使用以下命令:
sudo iptables -A INPUT -s [IP_ADDRESS] -j DROP
替换 [IP_ADDRESS]
为你想要禁止的 IP 地址。
允许特定端口访问
要允许特定端口(例如 SSH 端口 22)的流量:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
禁止特定端口访问
要禁止特定端口的流量,你可以使用以下命令:
sudo iptables -A INPUT -p tcp --dport [PORT] -j DROP
替换 [PORT]
为你想要禁止的端口号。
限制每个 IP 的连接数
为了防止单个 IP 地址的过多连接,你可以使用以下规则:
sudo iptables -A INPUT -p tcp --syn --dport [PORT] -m connlimit --connlimit-above [NUMBER] -j DROP
这里,[PORT]
是你想要限制的端口号,[NUMBER]
是允许的最大连接数。
保存规则
在某些系统中,你需要保存 iptables
规则以便在重启后还能生效。
在 Debian/Ubuntu:
sudo iptables-save > /etc/iptables/rules.v4
在 CentOS/RHEL:
sudo service iptables save
或者
sudo iptables-save > /etc/sysconfig/iptables