PR

Ubuntu 環境の ufw 設定まとめ

development 開発
この記事は約6分で読めます。
記事内に広告が含まれています。

この記事では、Ubuntu 環境の ufw 設定について紹介します。

EC2 や VPS 等で Ubuntu を選択することは多いと思いますが、まず最初にやるべき設定の一つがファイアウォールの設定です。

サーバーをインターネットに公開する際、適切なセキュリティ対策は必須であり、その中でも特に重要なのがファイアウォールの設定です。

Ubuntu には「ufw(Uncomplicated Firewall)」というシンプルで使いやすいファイアウォール設定ツールが標準で搭載されています。

その名前の通り、複雑な iptables の知識がなくても、簡単なコマンドで堅牢なファイアウォール設定が可能です。

ufw 設定の必要性

なぜファイアウォールが必要か

インターネットに接続されたサーバーは、常に様々な攻撃にさらされています。

  • 不正アクセスの試み
  • ポートスキャン
  • DoS攻撃(サービス拒否攻撃)
  • マルウェアの侵入

などなど・・・。

これらの脅威からサーバーを守るためには、必要なポート以外はすべて閉じるという「デフォルト拒否」の考え方が重要です。

スポンサーリンク

ufw のインストールと基本設定

インストール(原則不要)

Ubuntu には ufw が標準でインストールされています。 基本的には手動でのインストールは不要ですが、一応記載します。

sudo apt update
sudo apt install ufw

基本設定の流れ

ufw を設定する際の基本的な流れです。

  1. 必要なサービスの許可
  2. ufwの有効化

推奨設定

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

基本的にはすべての受信接続を拒否し、すべての送信接続を許可という設定です。

# すべての受信接続を拒否
sudo ufw default deny incoming

# すべての送信接続を許可
sudo ufw default allow outgoing

2. SSHアクセスの許可(重要)

SSHなど必要なサービスへの接続を許可する設定です。

注意

SSHへのアクセスを許可する前に ufw を有効化すると、サーバーから締め出される可能性があります。 もしくは、入れなくなって困ってしまうことがあります(一敗)。

# SSHポート(デフォルトは22)への接続を許可
sudo ufw allow ssh
# または
sudo ufw allow 22/tcp

しかし、SSH のポートが 22 であることは一般的すぎて攻撃の対象になりかねません。

セキュリティを高めるために、SSHのポートを変更する方が良いです。

# 例:SSHのポートを2222に変更している場合
sudo ufw allow 2222/tcp

3. その他の必要なサービスの許可

サーバーの用途はさまざまだと思います。 必要なポートのみ許可していきましょう。

例えば、システムを構築して公開する場合は、Webサーバーのために 80, 443 を許可します。

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
スポンサーリンク

4. ufwの有効化

すべての必要な許可設定が完了したら、ufwを有効化します。

sudo ufw enable

有効化後、確認を求められるので「y」と入力します。

重要なので繰り返します。

SSHへのアクセスを許可する前に ufw を有効化すると、サーバーから締め出される可能性があります。 もしくは、入れなくなって困ってしまうことがあります(一敗)。

5. 設定の確認

sudo ufw status

よく用いるコマンド集

基本コマンド

# ステータス確認
sudo ufw status
sudo ufw status verbose  # 詳細表示

# 有効化/無効化
sudo ufw enable
sudo ufw disable

# 設定のリセット
sudo ufw reset

ルールの追加

# ポート番号で指定
sudo ufw allow 80/tcp  # TCPの80番ポートを許可
sudo ufw allow 53/udp  # UDPの53番ポートを許可

# サービス名で指定
sudo ufw allow http
sudo ufw allow ssh

# 特定の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 22
スポンサーリンク

ルールの削除

# 番号で削除
sudo ufw status numbered  # ルールに番号を表示
sudo ufw delete 2  # 2番のルールを削除

# 設定と同じ構文で削除
sudo ufw delete allow 80/tcp
sudo ufw delete allow from 192.168.1.100

拒否ルールの設定

# 特定のポートへの接続を拒否
sudo ufw deny 8080/tcp

# 特定のIPアドレスからの接続を拒否
sudo ufw deny from 10.0.0.5

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

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

sudo ufw app list

プロファイルの詳細確認

sudo ufw app info 'Nginx Full'

プロファイルを使用したルール追加

sudo ufw allow 'Nginx Full'

ログの設定

# ログを有効化
sudo ufw logging on

# ログレベルの設定(low, medium, high, full)
sudo ufw logging medium

ログは /var/log/ufw.log に記録されます。

実践的な設定例

基本的なWebサーバー設定

# SSHアクセスの許可
sudo ufw allow ssh

# Webアクセスの許可
sudo ufw allow http
sudo ufw allow https

# ufwの有効化
sudo ufw enable

SSHのセキュリティ強化

特定のIPアドレスからのみSSHアクセスを許可

# 一旦SSHの一般ルールを削除(まだ接続中に実行しないこと)
sudo ufw delete allow ssh

# 特定のIPからのみSSHを許可
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw allow from 203.0.113.0/24 to any port 22

# 設定を有効化
sudo ufw enable

レート制限の設定

ブルートフォース攻撃対策として、SSHへの接続試行回数を制限

# 30秒以内に6回以上の接続があった場合、以降の接続を拒否
sudo ufw limit ssh

トラブルシューティング

ルールが適用されない場合

  1. ufwが有効になっているか確認

    sudo ufw status
  2. ルールの順序を確認(番号の小さいルールが優先)

    sudo ufw status numbered
  3. ログを確認

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

サーバーから締め出された場合

SSHアクセスを許可せずにufwを有効化してしまった場合でも、サービスのコンソール画面では大抵の場合、サーバーにアクセスする手段が用意されている(ことが多い)ので、絶望することはありません。

  1. VPSプロバイダのコンソールからサーバーにアクセス
  2. 以下のコマンドを実行
    sudo ufw disable
    sudo ufw allow ssh
    sudo ufw enable

おわりに

ufwは、Ubuntuサーバーを安全に保つための強力かつシンプルなツールです。

適切なファイアウォール設定は、サーバーセキュリティの第一歩です。

その他のセキュリティ対策(適切なユーザー権限管理、定期的なアップデート、侵入検知システムの導入など)と組み合わせることで、より堅牢なサーバー環境を構築しましょう。

コメント

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