設定 - UFW

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

UFW (Uncomplicated Firewall) とは、Linuxのファイアウォール管理を簡単にするツールである。

※注意 1
ファイヤーウォールのルールは追加した順序で適用されるため、順序にも注意が必要となる。
新しいルールを追加する前に、既存のルールとの競合がないか確認すること。

※注意 2
本番環境での変更は、メンテナンス時間中に行うことが推奨される。
複雑なルールを設定する場合は、ドキュメント化を行うこと。


UFWのインストール

# RHEL
sudo dnf install ufw

# SUSE
sudo zypper install ufw

# Raspberry Pi OS / PinePhone
sudo apt install ufw



状態の確認

sudo ufw status


詳細な情報を表示する。

sudo ufw status verbose


ルールを番号付きで表示する。

sudo ufw status numbered



UFWの有効化 / 無効化

# UFWの有効化
sudo ufw enable

# UFWの無効化
sudo ufw disable



ポートの開放 (許可)

sudo ufw allow <ポート番号>/<プロトコル  例: tcpまたはudp>

# 実行例:
sudo ufw allow 80/tcp  # HTTPポート80を開放
sudo ufw allow 22      # SSHポート22を開放 (TCP / UDP両方)
sudo ufw allow 53/udp  # DNSのUDPポート53を開放


ポート範囲を制御することもできる。

# ポート範囲を指定して許可
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp



ポートの拒否 (クローズ)

sudo ufw deny <ポート番号>/<プロトコル  例: tcpまたはudp>

# 実行例:
sudo ufw deny 80/tcp  # ポート80への接続を拒否
sudo ufw deny 22      # ポート22への接続を拒否



特定のIPアドレスやサブネットの制御

特定のIPからの接続を許可する。

sudo ufw allow from 192.168.1.100


特定のサブネットからの接続を許可する。

sudo ufw allow from 192.168.1.0/24


特定のIPの特定のポートへの接続を許可する。

sudo ufw allow from 192.168.1.100 to any port <ポート番号>

# 実行例: 192.168.1.100から22番ポートのみを許可する場合
sudo ufw allow from 192.168.1.100 to any port 22


特定のIPアドレスからのポート範囲を許可する。

sudo ufw allow from 192.168.1.100 to any port 6000:6007



ファイヤーウォールのルールの削除

ルール (許可した設定) を削除する。

sudo ufw delete allow 80/tcp


ルール (拒否した設定) を削除する。

sudo ufw delete deny 22


ルールの番号を指定してルールを削除する。

sudo ufw delete 5



サービス名での制御

利用可能なサービスを確認する。

less /etc/services


サービス名で許可する。

sudo ufw allow http
sudo ufw allow ssh



インターフェースベースのルール

特定のネットワークインターフェースに対するルールを設定する。

sudo ufw allow in on <ネットワークインターフェース名  例: eth0> to any port <ポート番号  例: 80>
sudo ufw deny in on <ネットワークインターフェース名  例: eth1>


特定のインターフェースの特定のポートを許可する。

sudo ufw allow in on eth0 to any port 22



デフォルトポリシーの設定

デフォルトで全ての受信を拒否する。

sudo ufw default deny incoming


デフォルトで全ての送信を許可する。

sudo ufw default allow outgoing


送信も拒否する。

sudo ufw default deny outgoing



レート制限の設定

SSHへの接続を30秒間に6回までに制限する。

sudo ufw limit ssh


特定のポートにレート制限を設定する。

sudo ufw limit <ポート番号  例: 3306>



アプリケーションプロファイルの使用

利用可能なアプリケーションプロファイルを確認する。

sudo ufw app list


特定のアプリケーションプロファイルの詳細確認する。

sudo ufw app info '<プロファイル名  例: Apache Full>'


アプリケーションプロファイルを許可する。

sudo ufw allow '<プロファイル名  例: Apache Full>'



NAT設定

vi /etc/ufw/before.rules


# /etc/ufw/before.rulesファイル

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
COMMIT



フォワーディングの設定

フォワーディングを有効化する。

sudo vi /etc/default/ufw


# /etc/default/ufwファイル

DEFAULT_FORWARD_POLICY="ACCEPT"


IPフォワーディングを有効化する。

sudo vi /etc/ufw/sysctl.conf


# /etc/ufw/sysctl.confファイル

net/ipv4/ip_forward=1
net/ipv6/conf/default/forwarding=1



複雑なルール設定

特定のIPアドレスとポート番号を組み合わせる。

sudo ufw allow from 192.168.1.0/24 to any port 3306 proto tcp


特定のサブネットの特定ポートへのアクセスを拒否する。

sudo ufw deny from 10.0.0.0/8 to any port 25



カスタムチェーンの作成

sudo vi /etc/ufw/before.rules


# /etc/ufw/before.rulesファイル

*filter
:ufw-custom-chain - [0:0]
-A ufw-custom-chain -p tcp --dport 80 -j ACCEPT
COMMIT



ログの設定

UFWのログを有効化する。

sudo ufw logging on


UFWのログを無効化する。

sudo ufw logging off


また、ログレベルの設定を行うこともできる。

sudo ufw logging low     # 基本的なログ
sudo ufw logging medium  # より詳細なログ
sudo ufw logging high    # 最も詳細なログ


ログファイルは、/var/log/ufw.logファイルに存在する。


セキュリティ設定

TCPステルススキャン対策

sudo ufw deny proto <tcp または udp> from any to any port <ポート番号  例: 113>


pingの制限

sudo ufw deny proto icmp --icmp-type echo-request


シンフラッド攻撃対策

sudo vi /etc/ufw/before.rules


# /etc/ufw/before.rulesファイル

-A ufw-before-input -p tcp --syn -m limit --limit 1/s -j ACCEPT



ルールのリセット

全てのルールを削除する。

sudo ufw reset



自動起動の設定

システム起動時にUFWを自動的に起動する。

sudo systemctl enable ufw


自動起動を無効にする。

sudo systemctl disable ufw