CODE

Ubuntuのファイアウォール設定について詳しく調べてみた

こんにちは!Hiroです。

この記事では、Ubuntuでのファイアウォール設定方法をお伝えしますね!

そもそも、Linuxのファイアウォールについての仕組みをよく理解していなかったので、そのへんの仕組みも少し勉強してみました。

🔻参考書籍はこちらです↓

お値段がかなり高めですが、分かりやすい解説が多くてよかったです。

Linuxのファイアウォール

壁

そもそものファイアウォールの仕組みを調べたので、その説明から。

Linuxカーネルには、Netfilterというパケットフィルタリング機能が備わっていて、通信経路を流れるパケットを検査しています。

主な通信経路には、外部からLinuxへ入ってくる「入力」、Linuxから外部へ出ていく「出力」、別のホストへ転送する「転送」があり、これら3つの通信経路に対してパケットフィルタリングのルールを適用します。

例えば、外部から入ってくるパケット(Ubuntu Serverへ向かうパケット)は、「入力」に設定されたルールと照合され、ルールにマッチすれば許可、または拒否されます。

すべてのルールにマッチしなかったパケットは、デフォルトの設定(ポリシー)に従って処理されるため、ポリシーが「破棄」であれば、パケットが破棄されます。

イメージとしては、以下のようになります。

Linuxファイアウォール

 

「ufw」コマンドの解説

パケットフィルタリングには iptables コマンドを使うのが一般的ですが、Ubuntu Serverではより簡単にファイアウォールを設定できる「ufw」コマンドが用意されています。

 

$ ufw enable/disable

ファイアウォールを有効にするには「ufw enable」、無効にするには「ufw disable」を実行します。

ファイアウォールを無効にしても、設定したルールは残されて次回有効時に再現されます。

 

$ ufw status

設定と動作状況を表示します。ファイアウォールが動作中であれば「active」、動作していなければ「inactive」を表示します。

また、ルールが設定されている場合は適用中のルール一覧が表示されます。

 

ルール番号を表示するには「numbered」をつけます。ルールを削除したり挿入したりする際にこの番号を使います。

 

ロギングモードやデフォルトのポリシーを表示するには「verbose」をつけます。

 

$ ufw default

ポリシーを設定します。「allow」はルールにマッチしなかった通信を許可します。「deny」は通信を破棄します。「reject」は通信を拒否してエラーを返します。

デフォルトでは「incoming」(外部からの接続)のポリシーを設定しますが、内部から外部方向(outgoing)や、転送(routed)のポリシーを設定したいときは、末尾にそれぞれ「outgoing」「routed」を指定します。

 

通常は、内部から外部(outgoing)のみ「allow」にするのが一般的です。

逆に、外部から内部(incoming)への通信は「deny」を設定します。

 

$ ufw logging

ログレベル(ログに記録する粒度)を設定します。デフォルトでは「medium」です。

ログは通常、[/var/log/syslog] に出力されます。

 

$ ufw allow

許可する通信を設定します。サービス名またはポート番号を指定して、特定のサービス・ポートを許可します。

また、IPアドレスによるアクセス許可とアプリケーション名を指定した通信の許可も設定できます。

 

指定可能なアプリケーション名は次のコマンドで表示できます。

 

$ ufw delete

指定したルールを削除します。「ufw status numbered」コマンドで表示されるルール番号を指定する方法が簡単です。

 

こんな感じですね。自分用のメモとして残しておきたいと思います。