Ubuntuで自宅サーバー構築!【ufw(ファイアウォール)編】

ubuntu-ufw
LINEで送る
Pocket

本記事では、前回書き切れなかったファイアウォールの設定方法について詳しくご紹介します。
今まで著者が利用していたCentOSでは、iptablesもしくはfirewalldを使用していましたが、Ubuntuではufwを使用します。
何れも設定方法が異なるので、最初は設定し辛く感じましたが、慣れればわかりやすくて簡単です。


ufwの初期設定

Ubuntu 20.04(LTS)ではデフォルトでufwが入っていますが、初期状態では何でも通す、いわゆる無効な状態になっているはずです。
これではセキュリティ的によろしくないので、まずは状態を確認してみましょう。
※前提として、本記事でのコマンドは全てroot権限で行います

ufwの状態を確認する

以下のコマンドで状態を確認できます。

# ufw status

無効な場合はこのように表示されます。

Status: inactive(状態: 非アクティブ) ← 無効な状態

有効になっているなら、

Status: active(状態: アクティブ) ← 有効な状態

と表示されます。
デフォルト無効なので、次の手順で有効化してあげましょう。

ufwの有効化

ここでSSH接続で作業している方は注意です!
いきなりファイアウォール有効にすると、SSH接続できなくなってしまいます!
SSH以外でサーバーに接続する手段がない場合は、先に次の手順に進んでください。

それでは、ファイアウォール有効にするコマンドです。

# ufw enable

これだけですね。
ちなみに、無効化する場合はこのようにします。

# ufw disable

特に問題無ですね。

ufwのIPv6無効化とデフォルト設定

Ubuntuの初期設定でも記載した通リ、OS自体のIPv6無効にしているので、ファイアウォールでもIPv6は使いません。
以下のファイルを書き換えてIPv6無効化しましょう。

# vi /etc/default/ufw
・・・
# IPV6=yes
IPV6=no
・・・

さらに、デフォルトで全ての通信を遮断する(ホワイトリスト形式)か、全て許可する(ブラックリスト形式)かも設定することができます。

# ufw default [以下の3種類]
  • deny (廃棄)
  • reject (拒絶)
  • allow (許可)

設定は可能ですが、特に意識する必要はなく、一般的な「deny」を使います。

# ufw default deny

これでufwの初期設定は完了です。

簡単なルールの追加と削除

まずは、基本的なルール追加削除方法をご紹介します。
この章では特に制限を意識することなく、通信許可のルールを追加します。
ここからは例として、22番ポート(SSH)を許可、削除します。

ポート番号を指定したルールの追加

単純にポート番号だけを指定して追加する場合は以下の通りです。

# ufw allow 22

プロトコルTCP」も指定すると以下のようになります。

# ufw allow 22/tcp

アプリケーションを指定したルールの追加

次はアプリ名を指定して追加する方法です。

# ufw allow OpenSSH

これだけでアプリが使用しているポートを自動で許可してくれます。
ちなみに、指定できるアプリを確認するには、以下のコマンドを使用します。

# ufw app list

追加したルールを確認する

追加したルール確認するには、以下のコマンドを実行します。

# ufw status

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW IN    Anywhere

しかし、次の番号指定でルールを削除するために、ルール番号を表示する「numberedオプションを付けます。

# ufw status numbered

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere

次では、ここに表示された番号を基に削除します。

番号を指定したルールの削除

上記で表示されたルール番号を指定して削除します。

# ufw delete 1

普通にポートを指定して削除する方法もありますが、ルールが複数ある場合や削除ミス防止の観点からも、こちらの削除方法をオススメします。
※逆に、任意のルール番号の間に新しいルールを挿入したい場合は「insertオプションもありますよ

詳細なルールの追加

通常ならこれらの方法で問題ありませんが、もっと通信元制限をかけたり、NICが複数ある場合にどのネットワーク許可するかなど、細かく設定することもできます。
最後に少しだけ例を上げて終わりたいと思います。

通信元を制限する

例えば、同じセグメント内のIPアドレスからしか通信を受け付けない場合は、以下のように設定します。

# ufw allow from 192.168.100.0/24 to any port ssh

更に、特定のポートからの通信を指定したIPアドレスだけ受け付ける場合はこのようになります。

# ufw allow proto tcp from 192.168.100.0/24 to 192.168.100.101 port 22
# ufw allow proto tcp from 192.168.100.0/24 to 192.168.100.102 port 80
# ufw allow proto tcp from 192.168.100.0/24 to 192.168.100.103 port 3306

ちなみに、インターフェース名(ens160やeth0)でも追加できます。
これでセキュリティがグッと向上すると思います。

この記事が気に入ったら
いいね ! しよう

Twitter で
LINEで送る
Pocket


コメントを残す

Amazon プライム対象