← 戻る

ファイアウォールを設定

受信は既定で拒否、送信は許可し、SSH と 80/443 だけ開けます。有効化の前に SSH を許可するので、締め出されません。

root が必要

ワンライン実行

curl -fsSL https://www.moiu.cn/scripts/ufw-firewall.sh | bash

ソース

#!/usr/bin/env bash
# 防火墙基础配置(UFW)
#
# 默认策略拒绝入站、放行出站,只开 SSH 与 80/443。
# ❗ 先放行 SSH 再启用 —— 顺序反了会把自己关在外面。
# 用法:bash ufw-firewall.sh [SSH端口]      例:bash ufw-firewall.sh 2222

set -e

# 需要 root:下面的系统级改动都直接执行,不再逐条 sudo
if [ "$(id -u)" -ne 0 ]; then
    echo '[!] 这个脚本需要 root 权限,请用 sudo 重新运行:'
    echo '    curl -fsSL 脚本地址 | sudo bash'
    echo '    或已经下载到本地:sudo bash 本文件'
    exit 1
fi

SSH_PORT=22
if [ "$#" -ge 1 ]; then
    SSH_PORT="$1"
fi

echo '====== 配置 UFW ======'

if ! command -v ufw >/dev/null 2>&1; then
    echo '[*] 安装 ufw...'
    if command -v apt-get >/dev/null 2>&1; then
        apt-get update -qq
        apt-get install -y ufw
    elif command -v dnf >/dev/null 2>&1; then
        dnf install -y ufw
    else
        echo '[!] 认不出包管理器,装不了 ufw'
        exit 1
    fi
fi

echo "[1/3] 先放行 SSH($SSH_PORT/tcp)—— 必须在 enable 之前"
ufw allow "$SSH_PORT"/tcp

echo '[2/3] 放行 Web 端口 80 / 443'
ufw allow 80/tcp
ufw allow 443/tcp

echo '[3/3] 设默认策略并启用'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable

echo ''
echo '====== 当前规则 ======'
ufw status verbose

元ファイルをダウンロード