Ubuntuのファイアウォール設定を確認する完全ガイド!UFW・iptablesの状態チェック

Linux

Ubuntuのファイアウォールが正しく動いているのか不安。セキュリティは大丈夫なのか。特定のポートが開いているか確認したい。

サーバーを運用していると、ファイアウォールの設定は非常に重要です。でも、今どんな状態になっているのか、どのポートが許可されているのか、きちんと確認できていますか?

実は、Ubuntuのファイアウォール設定を確認する方法は、とてもシンプルです。主にUFW(Uncomplicated Firewall)というツールを使えば、初心者でも簡単に状態をチェックできます。

この記事では、Ubuntuのファイアウォール設定を確認する方法を、初心者の方にも分かりやすく解説します。基本的な状態確認から、詳細なルールの調査、トラブルシューティングまで、すべてカバーします。

あなたのシステムのセキュリティ状態を確認して、安心してUbuntuを使いましょう!

スポンサーリンク
  1. Ubuntuのファイアウォールの基礎知識
    1. Ubuntuで使われるファイアウォール
    2. ファイアウォールの役割
  2. 【最も基本】UFWの状態を確認する
    1. UFWが有効か無効か確認
    2. 詳細な状態を確認
    3. 番号付きでルールを表示
  3. 【ポート別】開いているポートを確認する
    1. UFWで許可されているポート一覧
    2. 実際にポートが開いているか確認
    3. 外部から見てポートが開いているか確認
  4. 【詳細確認】iptablesで直接確認する
    1. iptablesのルールを表示
    2. 特定のチェーンだけを表示
    3. 行番号付きで表示
  5. 【GUIツール】グラフィカルに確認する
    1. GUFW(Graphical UFW)
  6. ログを確認する
    1. UFWのログを有効にする
    2. ログファイルの場所
    3. ログの見方
  7. デフォルトポリシーを確認
    1. 現在のデフォルトポリシー
    2. デフォルトポリシーの変更(参考)
  8. アプリケーションプロファイルを確認
    1. 利用可能なプロファイル一覧
    2. プロファイルの詳細
    3. 現在有効なプロファイル
  9. 特定のIPアドレスからのアクセスを確認
    1. 全ルールを確認
    2. 特定のIPが許可されているか検索
  10. UFWが正しく動作しているか確認
    1. UFWのサービス状態
    2. iptablesが適用されているか
  11. よくあるトラブルシューティング
    1. 問題1:「Permission denied」エラー
    2. 問題2:UFWがインストールされていない
    3. 問題3:ルールを設定したのに反映されない
    4. 問題4:設定が複雑で分からなくなった
    5. 問題5:ログが大きくなりすぎた
  12. セキュリティチェックリスト
    1. 基本チェック
    2. 定期的な確認
  13. 実践的な確認例
    1. シナリオ1:Webサーバーのファイアウォール確認
    2. シナリオ2:SSHサーバーの確認
    3. シナリオ3:データベースサーバーの確認
  14. まとめ:定期的な確認でセキュリティを保とう

Ubuntuのファイアウォールの基礎知識

確認方法の前に、基本を理解しておきましょう。

Ubuntuで使われるファイアウォール

UFW(Uncomplicated Firewall):

Ubuntu標準のファイアウォール管理ツールです。

特徴:

  • 名前の通り「複雑でない(Uncomplicated)」
  • コマンドがシンプル
  • 初心者でも扱いやすい
  • iptablesのフロントエンド

iptables:

Linuxカーネルに組み込まれたパケットフィルタリング機能です。

特徴:

  • より低レベルで強力
  • 設定が複雑
  • 上級者向け
  • UFWの裏側で動いている

関係性:

UFWは、iptablesを簡単に操作するための「フロントエンド」です。
UFWでルールを設定すると、内部的にiptablesのルールが生成されます。

ファイアウォールの役割

説明:

ネットワークトラフィック(データの流れ)を監視し、許可されていない通信をブロックします。

イメージ:

家の玄関の鍵のようなもの。許可された人(通信)だけを通して、不審者(不正アクセス)をブロックします。

重要性:

  • 不正アクセスの防止
  • 悪意のあるプログラムの侵入阻止
  • サーバーのセキュリティ向上

【最も基本】UFWの状態を確認する

最も簡単で重要な確認方法です。

UFWが有効か無効か確認

コマンド:

sudo ufw status

結果の見方:

有効な場合:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

無効な場合:

Status: inactive

意味:

  • Status: active → ファイアウォールが動作中
  • Status: inactive → ファイアウォールが停止中(すべての通信が許可)

重要:

inactive の場合、ファイアウォールによる保護がありません。セキュリティリスクが高い状態です。

詳細な状態を確認

コマンド:

sudo ufw status verbose

表示例:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere

表示される情報:

  • Status:有効/無効
  • Logging:ログ記録の設定
  • Default:デフォルトポリシー(基本動作)
  • incoming(受信):deny(拒否)
  • outgoing(送信):allow(許可)
  • routed(ルーティング):disabled(無効)

番号付きでルールを表示

コマンド:

sudo ufw status numbered

表示例:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
[ 4] 3306/tcp                   ALLOW IN    192.168.1.0/24

メリット:

ルールに番号が振られているので、特定のルールを削除する時に便利です。

実例:

「ルール2番を削除したい」→ sudo ufw delete 2

【ポート別】開いているポートを確認する

特定のポートが開いているか確認する方法です。

UFWで許可されているポート一覧

コマンド:

sudo ufw status

出力の「To」列に、許可されているポート番号が表示されます。

よく使われるポート:

  • 22 → SSH(リモート接続)
  • 80 → HTTP(Webサーバー)
  • 443 → HTTPS(暗号化されたWeb)
  • 3306 → MySQL(データベース)
  • 5432 → PostgreSQL(データベース)
  • 25 → SMTP(メール送信)

実際にポートが開いているか確認

UFWで許可していても、サービスが起動していなければポートは開きません。

コマンド:

sudo ss -tulpn

または

sudo netstat -tulpn

説明:

  • -t:TCPポート
  • -u:UDPポート
  • -l:待ち受け(LISTEN)状態
  • -p:プロセス名を表示
  • -n:数値で表示(名前解決しない)

表示例:

State   Recv-Q Send-Q Local Address:Port   Peer Address:Port
LISTEN  0      128    0.0.0.0:22            0.0.0.0:*       
LISTEN  0      128    0.0.0.0:80            0.0.0.0:*       
LISTEN  0      128    0.0.0.0:443           0.0.0.0:*       

見方:

  • 0.0.0.0:22 → すべてのIPアドレスからポート22への接続を待ち受け
  • LISTEN → ポートが開いている

netstatがない場合:

sudo apt install net-tools

外部から見てポートが開いているか確認

注意:

これは自分のマシンから外部サイトに接続して確認する方法です。

オンラインツール:

ブラウザで「port checker」などで検索し、確認したいポートを入力します。

ncatコマンドを使う:

nc -zv IPアドレス ポート番号

例:

nc -zv 192.168.1.100 22

成功すれば「succeeded」、失敗すれば「failed」と表示されます。

【詳細確認】iptablesで直接確認する

より低レベルの設定を確認できます。

iptablesのルールを表示

コマンド:

sudo iptables -L -v -n

説明:

  • -L:ルールをリスト表示
  • -v:詳細情報を表示
  • -n:IPアドレスを数値で表示(名前解決しない)

表示例:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ufw-before-logging-input  all  --  0.0.0.0/0            0.0.0.0/0           
ufw-before-input  all  --  0.0.0.0/0            0.0.0.0/0           
ufw-after-input  all  --  0.0.0.0/0            0.0.0.0/0           

注意:

UFWを使っている場合、iptablesの出力は非常に複雑になります。UFWが自動的に多くのルールを生成するためです。

特定のチェーンだけを表示

INPUTチェーン(受信)のみ:

sudo iptables -L INPUT -v -n

OUTPUTチェーン(送信)のみ:

sudo iptables -L OUTPUT -v -n

FORWARDチェーン(転送)のみ:

sudo iptables -L FORWARD -v -n

行番号付きで表示

コマンド:

sudo iptables -L -v -n --line-numbers

ルールの順番が分かりやすくなります。

【GUIツール】グラフィカルに確認する

コマンドが苦手な方向けのGUIツールです。

GUFW(Graphical UFW)

説明:

UFWのグラフィカルフロントエンドです。

インストール:

sudo apt update
sudo apt install gufw

起動方法:

  1. アプリケーションメニューから「ファイアウォール設定」を検索
  2. アイコンをクリック
  3. 管理者パスワードを入力

確認できる情報:

  • ファイアウォールの状態(有効/無効)
  • 設定されているルール一覧
  • デフォルトポリシー

操作:

  • スイッチでオン/オフ切り替え
  • 「ルール」タブでルール一覧を確認
  • 「+」ボタンで新しいルールを追加

メリット:

  • マウス操作だけで確認・設定可能
  • 視覚的に分かりやすい
  • 初心者にやさしい

ログを確認する

ファイアウォールがブロックした通信を確認できます。

UFWのログを有効にする

デフォルトでは無効:

ログ機能がオフになっていることがあります。

有効化:

sudo ufw logging on

レベル指定:

sudo ufw logging low

ログレベル:

  • off:ログなし
  • low:通常(ブロックされたパケットのみ)
  • medium:中程度
  • high:詳細
  • full:すべて

ログファイルの場所

ログの保存先:

/var/log/ufw.log

確認方法:

sudo tail -f /var/log/ufw.log

リアルタイムでログを監視できます。終了は Ctrl + C

最近のブロック記録を見る:

sudo grep 'BLOCK' /var/log/ufw.log | tail -20

ログの見方

ログの例:

Dec 1 10:30:45 ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=... SRC=192.168.1.50 DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=12345 PROTO=TCP SPT=54321 DPT=22 WINDOW=29200 SYN

重要な情報:

  • [UFW BLOCK]:ブロックされた
  • SRC=192.168.1.50:送信元IPアドレス
  • DST=192.168.1.100:宛先IPアドレス
  • PROTO=TCP:プロトコル(TCP)
  • SPT=54321:送信元ポート
  • DPT=22:宛先ポート(この場合SSH)

解釈:

192.168.1.50から、ポート22(SSH)への接続がブロックされました。

デフォルトポリシーを確認

何も設定されていない場合の動作を確認します。

現在のデフォルトポリシー

コマンド:

sudo ufw status verbose

表示例:

Default: deny (incoming), allow (outgoing), disabled (routed)

意味:

  • incoming(受信):deny
  • 明示的に許可していない受信通信は拒否
  • outgoing(送信):allow
  • すべての送信通信は許可
  • routed(転送):disabled
  • ルーティング(転送)は無効

推奨設定:

セキュリティのため、incomingはdeny(拒否)が基本です。

デフォルトポリシーの変更(参考)

受信を拒否:

sudo ufw default deny incoming

送信を許可:

sudo ufw default allow outgoing

注意:

デフォルトポリシーを変更する前に、必要なサービス(SSHなど)を明示的に許可しておきましょう。でないと、リモート接続が切れてしまいます。

アプリケーションプロファイルを確認

よく使うアプリケーション用の設定プロファイルです。

利用可能なプロファイル一覧

コマンド:

sudo ufw app list

表示例:

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH
  Nginx Full
  Nginx HTTP
  Nginx HTTPS

プロファイルの詳細

コマンド:

sudo ufw app info OpenSSH

表示例:

Profile: OpenSSH
Title: Secure shell server, an rlogin/rsh replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.

Port:
  22/tcp

説明:

このプロファイルを使えば、個別にポート番号を指定しなくても、アプリケーション名で許可できます。

例:

sudo ufw allow OpenSSH

これで、ポート22(SSH)が許可されます。

現在有効なプロファイル

コマンド:

sudo ufw status

プロファイル名でルールが表示されていれば、そのプロファイルが有効です。

表示例:

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Apache Full                ALLOW       Anywhere

特定のIPアドレスからのアクセスを確認

どのIPアドレスからの接続が許可されているか確認します。

全ルールを確認

コマンド:

sudo ufw status numbered

表示例:

[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 3306/tcp                   ALLOW IN    192.168.1.0/24
[ 4] 22/tcp                     ALLOW IN    203.0.113.10

意味:

  • ルール1、2:すべてのIPアドレスから許可
  • ルール3:192.168.1.0/24(192.168.1.1~192.168.1.254)から許可
  • ルール4:203.0.113.10のみから許可

特定のIPが許可されているか検索

方法:

sudo ufw status | grep "203.0.113.10"

該当するルールがあれば表示されます。

UFWが正しく動作しているか確認

ファイアウォール自体の動作を確認します。

UFWのサービス状態

コマンド:

sudo systemctl status ufw

正常な場合:

● ufw.service - Uncomplicated firewall
     Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2024-10-17 10:00:00 JST; 2h 30min ago

確認ポイント:

  • Active: active → 起動中
  • enabled → システム起動時に自動起動

起動していない場合:

sudo systemctl start ufw

自動起動を有効化:

sudo systemctl enable ufw

iptablesが適用されているか

コマンド:

sudo iptables -S | head -20

UFWが動作していれば、多くのルールが表示されます。

何も表示されない場合:

iptablesのルールが適用されていません。UFWの設定を見直しましょう。

よくあるトラブルシューティング

ファイアウォール確認時の問題と解決方法です。

問題1:「Permission denied」エラー

原因:

管理者権限が必要なコマンドを、sudo なしで実行しています。

解決法:

コマンドの前に sudo を付けます。

sudo ufw status

問題2:UFWがインストールされていない

確認:

which ufw

何も表示されなければ、インストールされていません。

インストール:

sudo apt update
sudo apt install ufw

問題3:ルールを設定したのに反映されない

原因:

UFWが有効になっていません。

確認:

sudo ufw status

Status: inactive なら無効です。

有効化:

sudo ufw enable

注意:

リモート接続(SSH)している場合、SSHポートを許可してからenableしましょう。

sudo ufw allow 22/tcp
sudo ufw enable

問題4:設定が複雑で分からなくなった

リセット方法:

sudo ufw reset

すべてのルールが削除され、初期状態に戻ります。

警告:

リモート接続中に実行すると、接続が切れる可能性があります。

問題5:ログが大きくなりすぎた

ログファイルのサイズ確認:

ls -lh /var/log/ufw.log

ログローテーション:

Ubuntuは自動的にログをローテーションしますが、手動で削除することもできます。

sudo truncate -s 0 /var/log/ufw.log

または

sudo rm /var/log/ufw.log

次回ログが発生すると、新しいファイルが作成されます。

セキュリティチェックリスト

ファイアウォール設定で確認すべき項目です。

基本チェック

1. ファイアウォールは有効か?

sudo ufw status

Status: active になっているか確認。

2. デフォルトポリシーは適切か?

sudo ufw status verbose

Default: deny (incoming) になっているか確認。

3. 必要なポートだけが開いているか?

sudo ufw status numbered

不要なポートが開いていないか確認。

4. SSHポートは制限されているか?

外部に公開する場合、特定のIPアドレスからのみ許可するのが安全です。

sudo ufw status | grep 22

5. 不要なサービスは停止しているか?

sudo ss -tulpn

開いているポートに対応するサービスが必要かどうか確認。

定期的な確認

月に一度:

  • ルール一覧の見直し
  • ログの確認(不審なアクセスがないか)
  • 不要なルールの削除

新しいサービス追加時:

  • 必要最小限のポートのみ開く
  • 可能であればIPアドレス制限を追加
  • ログで動作確認

実践的な確認例

具体的なシナリオでの確認方法です。

シナリオ1:Webサーバーのファイアウォール確認

必要なポート:

  • 80(HTTP)
  • 443(HTTPS)

確認コマンド:

sudo ufw status | grep -E '80|443'

正しい設定例:

80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

シナリオ2:SSHサーバーの確認

確認:

sudo ufw status | grep 22

望ましい設定例(特定IPから):

22/tcp                     ALLOW       203.0.113.10

または:

OpenSSH                    ALLOW       203.0.113.10

シナリオ3:データベースサーバーの確認

MySQLの場合:

sudo ufw status | grep 3306

正しい設定例(ローカルネットワークのみ):

3306/tcp                   ALLOW       192.168.1.0/24

外部から直接アクセスできないようにします。

まとめ:定期的な確認でセキュリティを保とう

Ubuntuのファイアウォール確認方法をまとめます。

最も基本的な確認:

sudo ufw status

これだけで、有効/無効と基本的なルールが分かります。

詳しく確認したい時:

sudo ufw status verbose
sudo ufw status numbered

実際に開いているポートを確認:

sudo ss -tulpn

ログを確認:

sudo tail -f /var/log/ufw.log

GUIで確認したい場合:

sudo apt install gufw

インストール後、アプリケーションメニューから起動。

重要なコマンド一覧:

目的コマンド
状態確認sudo ufw status
詳細表示sudo ufw status verbose
番号付き表示sudo ufw status numbered
ログ確認sudo tail /var/log/ufw.log
開いているポートsudo ss -tulpn
iptables確認sudo iptables -L -v -n
アプリ一覧sudo ufw app list
サービス状態sudo systemctl status ufw

セキュリティチェックポイント:

  1. ファイアウォールは有効か(active)
  2. デフォルトは受信拒否(deny incoming)
  3. 必要なポートだけが開いている
  4. 不要なサービスは停止している
  5. ログで不審なアクセスがないか

トラブル時の対処:

  • Permission deniedsudo を付ける
  • UFWがない → sudo apt install ufw
  • 反映されない → sudo ufw enable で有効化
  • 分からなくなった → sudo ufw reset でリセット

ベストプラクティス:

  1. 月に一度はルールを見直す
  2. ログを定期的に確認
  3. 不要なルールは削除
  4. SSHは特定IPに制限
  5. データベースは内部ネットワークのみ許可

この3ステップで、基本的なセキュリティチェックができます。

こんな時に確認が必要:

  • 新しいサービスをインストールした後
  • ポートが開かない/つながらない時
  • セキュリティ監査の時
  • サーバーを公開する前
  • 定期的なメンテナンス

コメント

タイトルとURLをコピーしました