前回までの記事で、インストールしたUbuntuに、リモートのクライアントからSSH接続し、さらにSSH接続をsudoユーザーからの鍵認証に限るセキュリティ設定を実施する所まで来ました。
今回のファイヤーウォール設定で、セキュリティ関連は一段落です。
ファイヤウォールって何だ?
不要な外部/内部からのアクセスを弾く設定のことです。自宅回線ではルーターがその役割を担ってますが、本記事で目指してるVPS(Virtual Private Server)でLinuxサーバーを立てる場合、自力で設定してやる必要があります。
理解を容易にするための概要図。左がVPS側、右が自宅ネットワーク(Home Network)側です。自宅のPCから、VPSへインターネット越しにアクセスしたいが、Other PCからの不要なアクセスは弾きたい。
VPSと自宅ネットワーク
さて、自宅ネットワークの場合、ルーターが窓口となります。ネットに繋がる機器には、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管理画面から使えるコンソール機能にて復旧させました。
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編はここまで。
次からは開発環境構築編に入ります。