跳到主要内容

写一个防火墙配置脚本,只允许远程主机访问本机的 80 端口?

参考答案:

在Linux系统中,我们可以使用iptables来配置防火墙规则。以下是一个简单的脚本,该脚本只允许远程主机访问本机的80端口:

#!/bin/bash

# 清空所有的iptables规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# 允许远程主机访问本机的80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 允许所有已建立的连接和相关的数据包通过
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许本地回环接口的数据包通过
iptables -A INPUT -i lo -j ACCEPT

# 允许ICMP协议的数据包通过,比如ping请求
iptables -A INPUT -p icmp -j ACCEPT

# 保存iptables规则
service iptables save

echo "Firewall rules have been updated."

这个脚本首先清空了所有的iptables规则,然后设置了默认的链策略。接着,它允许远程主机访问本机的80端口,允许所有已建立的连接和相关的数据包通过,允许本地回环接口的数据包通过,以及允许ICMP协议的数据包通过。最后,它保存了iptables规则。

注意:这个脚本假设你正在使用的系统服务管理器是service,并且iptables服务名为iptables。这可能在某些Linux发行版中有所不同,例如在某些系统上你可能需要使用systemctl来管理服务,或者iptables服务的名称可能有所不同。你需要根据你的系统环境进行相应的调整。

另外,这个脚本没有包含任何错误处理或日志记录,这在实际生产环境中可能是一个问题。在生产环境中使用这样的脚本时,你可能需要添加一些错误处理和日志记录功能。