Linux
 Computer >> コンピューター >  >> トラブルシューティング >> Linux

UFWをマスターする:Linuxファイアウォールセキュリティのステップバイステップガイド

UFWは「Uncomplicated Firewall(シンプルなファイアウォール)」の略であり、多くの人が思い込みがちな「Ubuntu Firewall」ではありません。この名前が示す通り、その設定は驚くほど簡単です。ほとんどのユーザーは、文字通り3つの設定を行うだけで、ある程度安全な状態にできます。さらに高度な設定を望む場合でも、テキストファイルを編集する程度の手間で済みます。UFWはUbuntuプロジェクトの開発者によって設計されましたが、Debian、Arch Linux、Linux Mint、Lubuntu、Xubuntuなど、他の多くのディストリビューションでも利用可能で、すでにインストール済みというケースも少なくありません。

しかし問題は、実際に有効化しているユーザーが比較的少ないことです。ユーザーはiptablesを直接操作しなくてよくなりましたが、Ubuntuではufwはデフォルトで無効になっています。また、多くのDebian環境ではパッケージ自体が初期状態でインストールされていません。幸い、ターミナルに少しでも触れた経験があれば、誰でも簡単にシステムを強化できます。

方法1:コマンドラインからUFWを有効化する

まず、ufwパッケージがすでにインストールされていることを前提に進めます。途中でエラーが発生した場合でも、後からufwをインストールし直せば問題ありません。

一般ユーザーアカウントで作業している場合は、sudo ufw enableを実行し、求められたら管理者パスワードを入力します。「ufwが有効になり、起動時に自動的に実行される」というメッセージが表示されるはずです。念のためsudo ufw statusも実行してみましょう。「Status: active」という1行だけの出力が返ってくれば成功です。

一方、「ufwがインストールされていない」と表示された場合は、Debianなどapt系ディストリビューションであればsudo apt-get install ufwを実行します。事前にsudo apt-get updatesudo apt-get upgradeを実行して、他のパッケージを整えておくと安心です。Arch Linuxの場合は、まずsudo pacman -Syuでパッケージを更新し、その後sudo pacman -S ufwでインストールします。その後は上記の手順に従い、sudo ufw enableが「Status: active」を返すことを確認してください。

方法2:基本的なルールを設定する

ファイアウォールは、ネットワーク経由でコンピュータに送られてくるパケットを受け入れるかどうかを、一連のルールに基づいて判断します。次の2つのコマンドは、ほぼ確実に実行しておきたいものです。

sudo ufw default allow outgoing

sudo ufw default deny incoming

これにより、ufwは外向きの通信を常に許可するため、ネットワークアダプターへの送信が妨げられません。オンラインで何らかの作業をするなら重要な設定です。当然ながら、外向きのリクエストを危険とみなす必要はありません。同時に、内向きのリクエストによる被害も防げるため、ほぼすべての家庭用・業務用環境にとって正しい設定といえます。オンラインFPSなどの負荷の高いゲームをプレイするユーザーでも、この設定で十分なケースがほとんどです。

マシンを再起動してもsudo ufw statusが引き続き有効状態を返すのであれば、ここで設定を終えて問題ありません。設定プロセス自体はシンプルです。SSHや高度なネットワーク構成を目指すユーザーだけ、先へ進みましょう。

方法3:高度なUFW設定オプション

ほとんどのユーザーには以降の内容は不要ですが、一部の環境では役立つルールがあります。たとえば、一般的な80番ポートへのTCP接続を許可したい場合は、次のコマンドを実行します。

sudo ufw allow 80/tcp

特定のIPアドレスからのアクセスのみを許可したい場合は、sudo ufw allow from ###.##.##.##/##のように、実際のIPアドレスとスラッシュの後にサブネット番号を指定します。80番ポートでの通信が必要な場合は、この番号がそのまま使えます。sudo ufw allow http/tcpのようにサービス名で指定することも有効で、サーバー運用では必要になることがありますが、許可する接続の種類が増えるほど管理は複雑になっていきます。

特によく使われる設定がsudo ufw allow 22で、これはSSH接続用のポートを開放します。sudo ufw allow sshと書いても同じように機能します。両方の行を追加するよう案内するガイドもありますが、大半の場合はどちらか一方で十分であり、重複したルールは最終的に無駄なオーバーヘッドを生むだけです。

将来ルールを削除したくなったときは、sudo ufw deleteに続けてルール名を指定するだけです。たとえばsudo ufw delete allow 80/tcpとすれば、上記の例のルールを無効化できます。

この時点でsudo ufw status verboseを実行すると、ルールを追加していれば、より詳細な表が表示されます。将来ファイアウォールを無効化したい場合はsudo ufw disableで停止できますが、そうする必要がある場面はごくわずかです。

トラブルシューティング:504ゲートウェイタイムアウトとルールの順序

UFWでサーバーを保護していると、まれに504ゲートウェイタイムアウトエラーに遭遇することがあります。この場合は、いくつかのルールの順序を入れ替えることで改善できる可能性があります。セキュリティ上の理由から、ufwはリストを解析する際に最初に一致したルールを採用するため、allowルールはdenyルールより先に入力しなければなりません。該当するルールを一度削除し、sudo ufw default allowの行から順に再登録すれば、この問題は解消するはずです。パフォーマンス向上のため、重複した行を削除しておくのも良いでしょう。

sudo ufw status verboseを実行し、「DENY IN」と「ALLOW IN」の行の順序に細心の注意を払ってください。80や22のような一般的なポートについて、他の参照よりも先に「DENY IN / Anywhere」が表示されている場合は、接続が通過する機会を得る前にブロックしてしまっている可能性があります。順序を並べ替えれば問題は解決します。そもそも最初から正しい順序でコマンドを入力しておけば、後々のトラブルを防ぐことにつながります。

root権限のプロンプトで作業しているユーザーは、各コマンドにsudoを付ける必要はありません。sudoに関するエラーが出続けている場合は、これが原因かもしれません。プロンプトの末尾がカーソルの前に「#」か「$」のどちらになっているかを確認しましょう。tcshユーザーでプロンプトが「%」しか表示されない場合は、whoamiコマンドで現在操作しているユーザーを確認してください。

一般ユーザーがsudo ufw status verboseを実行しても、表示されるフィードバックが comparatively 少ないと感じることがあるでしょう。おそらく以前と同じ1行しか見えないはずです。

これは単に、そのユーザーの設定しているルールが非常に少ないためです。ただし、ルール設定に関しては一言注意が必要です。ufw defaultコマンドではrejectパラメーターも使用できますが、誤って自分自身をプライベートサーバー構造から締め出したり、その他の予期しない動作を引き起こしたりしやすい点に留意してください。sudo ufw allow sshなどの類似の許可ルールをルールセットに含める必要がある場合は、default rejectまたはdenyルールを適用する前に必ず追加しておきましょう。

GUIツールと設定ファイルの編集

GufwやQtベースのkmyfirewallといったグラフィカルツールも存在しますが、ufwはコマンドラインから十分簡単に設定できるため、実際には必要ありません。どうしても設定ファイルを直接編集したい場合は、cdコマンドで/etc/ufwディレクトリへ移動し、sudo nanoでファイルを編集します。変更を加える前に、morelessを使ってまずテキスト内容を確認しておくのもおすすめです。

開発者は編集中に迷わないよう、適切なコメントを用意してくれています。必要であれば、それらを削除しても構いません。


著者について

UFWをマスターする:Linuxファイアウォールセキュリティのステップバイステップガイド

Kevin Arrows(ケビン・アローズ)

Kevin Arrowsは、10年以上の業界経験を持つベテランのテクノロジースペシャリストです。Microsoft Certified Technology Specialist(MCTS)の資格を保有し、最新の技術動向を追いかけることに強い情熱を注いでいます。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなど、幅広い技術トピックについて数多く執筆しており、複雑な技術的概念を明快かつ簡潔に説明する能力で同業者から高く評価されています。

  1. Ubuntuでデュアルモニター設定を永続化する方法 – xrandrを使ったステップバイステップガイド

    デュアルモニター環境を利用している場合、多くのケースではUbuntuのディスプレイ設定ダイアログを開くだけで簡単に構成できます。Dashから「システム」を選択し、「設定」→「ディスプレイ」と進むと、2つのディスプレイが表示されたウィンドウが現れるので、それぞれをドラッグしてマルチデスクトップを構成できます。しかし残念ながら、この方法がうまく機能しないケースもあります。この方法でうまくいかない場合は、xrandrというコマンドを使用して、ディスプレイ設定を永続的なものにする必要があります。この手法は、Unity、KDE Plasma、GNOME Shell、LXDE、Xfce4など、どのデスクト

  2. LinuxのApacheでmod_authz_hostエラーを解決する方法|ステップバイステップガイド

    Red Hat Enterprise Linux、Arch、Scientific Linux、Debian Server、Ubuntu Serverなど、Apache2をサポートする各種Linuxディストリビューションにapache2サービスをインストールすると、mod_authz_hostモジュールに関するエラーが発生し、サービスが実行できなくなることがあります。このエラーは、apache2サービスを再起動するたびに問題となる可能性が高く、多くの場合はファイルの1行目に関する構文警告として表示されますが、別の形式のエラーが出ることもあります。どの行で問題が発生していても、その原因はmod_a