ファイアウォールを設定する意味
ファイアウォールとは外部ネットワークからの不要なアクセスを遮断したり、サーバに負荷をかけるアクセスを制限したりする機能です。
具体的には不必要なポートをあらかじめ閉じておくことでそのポートを通したアクセスを遮断することができます。
これを行うことにより、安心してサーバを外部公開できるようになります。
各Linuxディストリビューションでは標準でこの機能を用意しています。
ここではUbuntuを例にしていますが、基本的には他のディストリでも同じコマンドでいいはずです。
iptablesコマンド
ファイアウォールの機能であるパケットフィルタリングできるコマンドです。
オプションを駆使すればかゆいところにも手が届きますが、初心者が使いこなすにはハードルが高いです。
ということで初心者エンジニアは次に紹介するufw
コマンドをまずは覚えましょう。
iptables
の設定について詳しく知りたい方は以下を参考にしてみてください(何もわからないことがわかる)。
【丁寧解説】Linuxファイアウォール iptablesの使い方
ufwコマンド
現在のネットワーク設定を確認する
では早速現在の設定を確認してみます。
sudo ufw status
を実行
vagrant@ubuntu-xenial:~$ sudo ufw status
Status: inactive
Uncomplicated FireWall
の略ということで、complicate(複雑な) + un(打ち消す)
、つまり簡単なファイアウォール
という意味です。
最初はinactive
となっていて、active(アクティブ) + in(打ち消す)
、非アクティブ
ということになる。
動いてないよーってことですね。
un-
もin-
も打ち消す意味を持っています。
ファイアウォールをアクティブにする
sudo ufw enable
を実行
vagrant@ubuntu-xenial:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
これで有効化されました。
default設定をOFFにする
ターミナルでサーバにssh
している場合はタブをもう一つ開いてサーバに接続しておきましょう。
sudo ufw default deny
を実行する。
vagrant@ubuntu-xenial:~$ sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
これでサーバに外部からアクセスすることができなくなるため、誤って実行したターミナルのタブを閉じてしまった場合そのサーバにアクセスできなくなります。
HTTP/HTTPS(Nginx:Webサーバ)用の80, 443番ポートへのアクセスを許可する
次に同じターミナルでsudo ufw allow 'Nginx Full'
を実行してください。
vagrant@ubuntu-xenial:~$ sudo ufw allow 'Nginx Full'
Rule added
Rule added (v6)
事前にアプリケーション一覧を見たい場合は以下のように確認しましょう。
vagrant@ubuntu-xenial:~$ sudo ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
SSH接続用のデフォルトポート(22番)を許可する
sudo ufw allow 'OpenSSH'
を実行する。
vagrant@ubuntu-xenial:~$ sudo ufw allow 'OpenSSH'
Rule added
Rule added (v6)
設定を再確認する
最後にファイアウォールの設定を再確認する。
sudo ufw status
vagrant@ubuntu-xenial:~$ sudo ufw status
Status: active
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
上記設定になっていればOKです。
これでリモートアクセスとWebサーバへのアクセスのみを許可しているサーバが完成しました。
まとめ
これで外部公開するサーバとして最低限のアクセス制限ができました。
次のステップは自分のWebアプリを公開することです。
プログラマーとして成長する秘訣は自分で作ったサービスを保守し続けることだって誰かが言ってた。
頑張りましょう。