UFW¶
安装UFW¶
apt-get update && apt-get install ufw
# 查看UFW状态
ufw status
# 如果你发现状态是 inactive ,意思是没有被激活或不起作用。
启用 / 禁用¶
ufw enable #启用
ufw disable #禁用
使用¶
# 列出当前 UFW 规则
ufw status verbose
添加规则¶
允许入站( allow )¶
默认情况,没有允许就是拒绝(入站),使用 ufw allow <端口> 来添加允许访问的端口或协议。
# 添加22端口
ufw allow ssh
# 添加80端口
ufw allow http
# 添加443端口
ufw allow https
# 添加6379端口,仅TCP协议
ufw allow 6379/tcp
# 添加3306端口,仅UDP协议
ufw allow 3306/udp
# 添加7777到9999之间的端口
ufw allow 7777:9999
# 添加指定IP访问端口
ufw allow proto tcp from 192.168.1.5 to any port 22
拒绝访问( deny )¶
使用 ufw deny <端口> 来添加拒绝入站的端和协议
# 拒绝7777到9999之间的端口访问
ufw deny 7777:9999
删除规则¶
先使用 ufw status 查看规则,再使用 ufw delete [规则] <端口> 来删除规则。
ufw delete allow 6379/tcp
如果有多条规则,使用 numbered 参数,可以在每条规则上加个序号数字,然后使用 ufw delete <序号> 来删除规则。
# 列出规则,并加上序号
ufw status numbered
# 删除第1条规则
ufw delete 1
禁止Ping¶
# 打开 UFW 配置文件
nano /etc/ufw/before.rules
# 允许 ping
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
# 禁止 ping
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# 让配置生效
ufw reload
只允許Cloudflare的IP訪問443端口¶
备用地址:
CF_IPV4_URL="https://raw.githubusercontent.com/cloudflare/cloudflare-docs/main/products/cloudflare-one/static/ips-v4"
CF_IPV6_URL="https://raw.githubusercontent.com/cloudflare/cloudflare-docs/main/products/cloudflare-one/static/ips-v6"
#!/bin/bash
# IPv4 和 IPv6 地址列表的网址
URL_V4="https://www.cloudflare.com/ips-v4"
URL_V6="https://www.cloudflare.com/ips-v6"
# 配置文件路径
CONF_FILE="/data/ip.txt"
# 使用curl获取IPv4和IPv6地址列表,并追加到配置文件
curl -sS "$URL_V4" > "$CONF_FILE" # 获取IPv4地址列表
if [ $? -ne 0 ]; then
echo "获取IPv4地址列表失败,请检查网络连接或URL地址。"
exit 1
fi
# 手动添加一个换行符
echo "" >> "$CONF_FILE"
curl -sS "$URL_V6" >> "$CONF_FILE" # 获取IPv6地址列表
if [ $? -ne 0 ]; then
echo "获取IPv6地址列表失败,请检查网络连接或URL地址。"
exit 1
fi
# 获取443端口的规则编号
rule_number=$(ufw status numbered | grep 443 | awk -F'[][]' '{print $2}')
if [ -n "$rule_number" ]; then
# 删除443端口的规则
echo "y" | ufw delete $rule_number
fi
# 循环读取新的IP地址列表文件,并添加规则
while IFS= read -r ip; do
if [ -n "$ip" ]; then
ufw allow from "$ip" to any port 443
fi
done < "$CONF_FILE"
# 重新加载规则
ufw reload
删除指定IP的规则¶
创建并编辑 nano delete_ufw_rules.sh
具体内容
#!/bin/bash
# 目标 IP 地址
TARGET_IP="74.48.98.170"
# 获取包含目标 IP 的规则编号,并按数字逆序排序
RULE_NUMBERS=$(ufw status numbered | grep "$TARGET_IP" | awk -F"[][]" '{print $2}' | sort -rn)
# 逆序删除这些规则
for NUM in $RULE_NUMBERS; do
echo "Deleting rule $NUM for IP $TARGET_IP..."
yes | sudo ufw delete $NUM
done
echo "All rules for IP $TARGET_IP have been deleted."
確保腳本有執行權限:chmod +x delete_ufw_rules.sh