未来を変える日記

システム自主開発とトライアスロン

ファイヤーウォールの設定

 前回までの記事で、インストールしたUbuntuに、リモートのクライアントからSSH接続し、さらにSSH接続をsudoユーザーからの鍵認証に限るセキュリティ設定を実施する所まで来ました。

www.masa-nakajima.com


 今回のファイヤーウォール設定で、セキュリティ関連は一段落です。

目次

ファイヤウォールって何だ?

 不要な外部/内部からのアクセスを弾く設定のことです。自宅回線ではルーターがその役割を担ってますが、本記事で目指してるVPS(Virtual Private Server)でLinuxサーバーを立てる場合、自力で設定してやる必要があります。

 理解を容易にするための概要図。左がVPS側、右が自宅ネットワーク(Home Network)側です。自宅のPCから、VPSへインターネット越しにアクセスしたいが、Other PCからの不要なアクセスは弾きたい。

VPSと自宅ネットワーク

f:id:corgi-eric:20201103142442p:plain

 さて、自宅ネットワークの場合、ルーターが窓口となります。ネットに繋がる機器には、IP Addressが割り当てられ、自宅の場合は窓口のルーターに割り当てられてます。このIP Addressは世界共通の住所(Global IP Address)なので、ネット越しの機器からpingを打つなどの応答確認程度はできます。が、それ以外の不要なアクセスはRouterに設定されたファイヤウォールが弾くようになっています。

 左側のVPSの場合。ルーターはなく、Ubuntuの入った本体にGlobal IP Addressが直接割り振られてます。右側の自宅PCからのアクセスは受け入れつつ、他のPCからの不用意なアクセスを防ぐために、VPSのUbuntuにて、直接Firewallを設定してやる必要があります。

具体的には何をする?

 結論から書いてしまうと以下のコマンドで、Firewallが有効化されます。

$ sudo ufw app list
$ sudo ufw allow ssh
$ sudo ufw enable
ufw app list

 Firewallで全通信をふさいでしまうと、自分も使えなくなってしまいます。なので、先ずは、許可設定する通信を確認します。この時点で最低限必要なのは、OpenSSH(リモート制御のためのSSH通信)になります。
 

ufw allow OpenSSH

 SSH通信を許可するコマンドです。1行目で通信不許可になっていた場合に実行します。
 なお、不許可のままファイヤウォールをONにすると、自分もサーバーにアクセスできなくなります。当方はすでに体験済み(´;ω;`)でして、VPS管理画面から使えるコンソール機能にて復旧させました。

f:id:corgi-eric:20201103154939p:plain

ufw enable

 SSH通信が許可できていることを確認したら、ファイヤウォールを有効にします。

確認

 次のコマンドで実際にSSH通信以外が遮断されていることを確認します。IP Addressは今回ファイヤウォールを設定した自身のサーバーのIP Addressです。

$ nmap [IP Address]

 このnmapはポートスキャンとも呼ばれ、解放されているポート(どの通信経路が応答するか?)を確認することができます。

Port State Service
22/tcp open SSH

 上のように表示された場合、SSH通信で、22番ポートが開いてます。tcpはtransmission control protocolの略。信頼性は高いが転送効率が低い特徴があります。一方、udpはuser datagram protocolの略でtcpと逆の特徴(IT用語辞典)。ポート番号の詳しい話は、Wikipediaにて。

iptablesについて

 今回ファイヤーウォールの設定に利用したコマンドはufwですが、uncomplicated firewallの略で、その中身はiptablesなるコマンド。
 次の前述のufwコマンドで設定されたポリシーを確認できます。

$ sudo iptables -L

 
 iptablesについての詳細も記載したい所ですが、一先ずファイヤーウォールの設定自体はできたので、Ubuntu編はここまで。
 次からは開発環境構築編に入ります。