こんにちは!Hiroです。
この記事では、Ubuntuでのファイアウォール設定方法をお伝えしますね!
そもそも、Linuxのファイアウォールについての仕組みをよく理解していなかったので、そのへんの仕組みも少し勉強してみました。
🔻参考書籍はこちらです↓
お値段がかなり高めですが、分かりやすい解説が多くてよかったです。
Linuxのファイアウォール

そもそものファイアウォールの仕組みを調べたので、その説明から。
Linuxカーネルには、Netfilterというパケットフィルタリング機能が備わっていて、通信経路を流れるパケットを検査しています。
主な通信経路には、外部からLinuxへ入ってくる「入力」、Linuxから外部へ出ていく「出力」、別のホストへ転送する「転送」があり、これら3つの通信経路に対してパケットフィルタリングのルールを適用します。
例えば、外部から入ってくるパケット(Ubuntu Serverへ向かうパケット)は、「入力」に設定されたルールと照合され、ルールにマッチすれば許可、または拒否されます。
すべてのルールにマッチしなかったパケットは、デフォルトの設定(ポリシー)に従って処理されるため、ポリシーが「破棄」であれば、パケットが破棄されます。
イメージとしては、以下のようになります。

「ufw」コマンドの解説
パケットフィルタリングには iptables コマンドを使うのが一般的ですが、Ubuntu Serverではより簡単にファイアウォールを設定できる「ufw」コマンドが用意されています。
【書式】 $ sudo ufw コマンド
$ ufw enable/disable
ファイアウォールを有効にするには「ufw enable」、無効にするには「ufw disable」を実行します。
ファイアウォールを無効にしても、設定したルールは残されて次回有効時に再現されます。
# ファイアウォールを有効にする $ sudo ufw enable # ファイアウォールを無効にする $ sudo ufw disable
$ ufw status
設定と動作状況を表示します。ファイアウォールが動作中であれば「active」、動作していなければ「inactive」を表示します。
また、ルールが設定されている場合は適用中のルール一覧が表示されます。
# 設定と動作状況を表示する $ sudo ufw status
ルール番号を表示するには「numbered」をつけます。ルールを削除したり挿入したりする際にこの番号を使います。
# ルール番号を表示する $ sudo ufw numbered
ロギングモードやデフォルトのポリシーを表示するには「verbose」をつけます。
# 設定と動作状況を詳細に表示する $ sudo ufw status verbose
$ ufw default
ポリシーを設定します。「allow」はルールにマッチしなかった通信を許可します。「deny」は通信を破棄します。「reject」は通信を拒否してエラーを返します。
デフォルトでは「incoming」(外部からの接続)のポリシーを設定しますが、内部から外部方向(outgoing)や、転送(routed)のポリシーを設定したいときは、末尾にそれぞれ「outgoing」「routed」を指定します。
【書式】 $ sudo ufw default allow | deny | reject [incoming | outgoing | routed]
通常は、内部から外部(outgoing)のみ「allow」にするのが一般的です。
逆に、外部から内部(incoming)への通信は「deny」を設定します。
# ポリシーをdenyとする $ sudo ufw default deny
$ ufw logging
ログレベル(ログに記録する粒度)を設定します。デフォルトでは「medium」です。
ログは通常、[/var/log/syslog] に出力されます。
【書式】 $ sudo ufw logging off | low | medium | high | full
# ログレベルを「high」に設定する $ sudo ufw logging high # ログ内容を確認する $ sudo less /var/log/ufw.log
$ ufw allow
許可する通信を設定します。サービス名またはポート番号を指定して、特定のサービス・ポートを許可します。
また、IPアドレスによるアクセス許可とアプリケーション名を指定した通信の許可も設定できます。
【書式】 $ sudo ufw allow サービス名 | ポート番号 | プロトコル | IPアドレス
# Webサーバーの通信を許可する(ポート番号指定) $ sudo ufw allow 80 # Webサーバーの通信を許可する(サービス名指定) $ sudo ufw allow http # IPアドレスを指定して、特定のIPアドレスからの接続を許可する $ sudo ufw allow from 192.168.1.0/24 # アプリケーション名(HTTP/HTTPS)を指定して、通信を許可する $ sudo ufw allow "Apache Full"
指定可能なアプリケーション名は次のコマンドで表示できます。
# アプリケーション一覧を表示する $ sudo ufw app list
$ ufw delete
指定したルールを削除します。「ufw status numbered」コマンドで表示されるルール番号を指定する方法が簡単です。
【書式】 $ sudo ufw delete ルール | ルール番号
# ルール番号付きで設定を表示する $ sudo ufw status numbered # 1番のルールを削除する $ sudo ufw delete 1
こんな感じですね。自分用のメモとして残しておきたいと思います。