本記事では、前回書き切れなかったファイアウォールの設定方法について詳しくご紹介します。
今まで著者が利用していたCentOSでは、iptablesもしくはfirewalldを使用していましたが、Ubuntuではufwを使用します。
何れも設定方法が異なるので、最初は設定し辛く感じましたが、慣れればわかりやすくて簡単です。
ufwの初期設定
Ubuntu 20.04(LTS)ではデフォルトでufwが入っていますが、初期状態では何でも通す、いわゆる無効な状態になっているはずです。
これではセキュリティ的によろしくないので、まずは状態を確認してみましょう。
※前提として、本記事でのコマンドは全てroot権限で行います
ufwの状態を確認する
以下のコマンドで状態を確認できます。
1 |
# ufw status |
無効な場合はこのように表示されます。
1 |
Status: inactive(状態: 非アクティブ) ← 無効な状態 |
有効になっているなら、
1 |
Status: active(状態: アクティブ) ← 有効な状態 |
と表示されます。
デフォルトは無効なので、次の手順で有効化してあげましょう。
ufwの有効化
ここでSSH接続で作業している方は注意です!
SSH以外でサーバーに接続する手段がない場合は、先に次の手順に進んでください。
それでは、ファイアウォールを有効にするコマンドです。
1 |
# ufw enable |
これだけですね。
ちなみに、無効化する場合はこのようにします。
1 |
# ufw disable |
特に問題無ですね。
ufwのIPv6無効化とデフォルト設定
Ubuntuの初期設定でも記載した通リ、OS自体のIPv6を無効にしているので、ファイアウォールでもIPv6は使いません。
以下のファイルを書き換えてIPv6を無効化しましょう。
1 2 3 4 5 |
# vi /etc/default/ufw ・・・ # IPV6=yes IPV6=no ・・・ |
さらに、デフォルトで全ての通信を遮断する「ホワイトリスト形式」か、全て許可してから特定の通信を遮断する(ブラックリスト形式)も設定することができます。
1 |
# ufw default [以下の3種類] |
- deny (廃棄)
- reject (拒絶)
- allow (許可)
設定は可能ですが、特に意識する必要はなく、一般的な「deny(ホワイトリスト)」を使います。
1 |
# ufw default deny |
これでufwの初期設定は完了です。
簡単なルールの追加と削除
まずは、基本的なルールの追加と削除方法をご紹介します。
この章では特に制限を意識することなく、通信許可のルールを追加します。
ここからは例として、22番ポート(SSH)を許可、削除します。
ポート番号を指定したルールの追加
単純にポート番号だけを指定して追加する場合は以下の通りです。
1 |
# ufw allow 22 |
プロトコル「TCP」も指定すると以下のようになります。
1 |
# ufw allow 22/tcp |
アプリケーションを指定したルールの追加
次はアプリ名を指定して追加する方法です。
1 |
# ufw allow OpenSSH |
これだけでアプリが使用しているポートを自動で許可してくれます。
ちなみに、指定できるアプリを確認するには、以下のコマンドを使用します。
1 |
# ufw app list |
追加したルールを確認する
追加したルールを確認するには、以下のコマンドを実行します。
1 2 3 |
# ufw statusTo Action From -- ------ ---- OpenSSH ALLOW IN Anywhere |
しかし、次の番号指定でルールを削除するために、ルール番号を表示する「numbered」オプションを付けます。
1 2 3 |
# ufw status numbered To Action From -- ------ ---- [ 1] OpenSSH ALLOW IN Anywhere |
次では、ここに表示された番号を基に削除します。
番号を指定したルールの削除
上記で表示されたルール番号を指定して削除します。
1 |
# ufw delete 1 |
普通にポートを指定して削除する方法もありますが、ルールが複数ある場合や削除ミス防止の観点からも、こちらの削除方法をオススメします。
※逆に、任意のルール番号の間に新しいルールを挿入したい場合は「insert」オプションもありますよ
詳細なルールの追加
通常ならこれらの方法で問題ありませんが、もっと通信元に制限をかけたり、NICが複数ある場合にどのネットワークを許可するかなど、細かく設定することもできます。
最後に少しだけ例を上げて終わりたいと思います。
通信元を制限する
例えば、同じセグメント内のIPアドレスからしか通信を受け付けない場合は、以下のように設定します。
1 |
# ufw allow from 192.168.100.0/24 to any port ssh |
更に、特定のポートからの通信を指定したIPアドレスだけ受け付ける場合はこのようになります。
1 2 3 |
# 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)でも追加できます。
これでセキュリティがグッと向上すると思います。
コメント
コメント一覧 (1件)
[…] したい場合は【ufw(ファイアウォール)編】をご参照ください。 Ubuntuで自宅サーバー構築!【ufw(ファイアウォール)編】https://minory.org/ubuntu-ufw.html本記事では、前回書き切れなかったフ […]