セキュリティ
【セキュリティ】ファイアウォールで「開ける穴」を最小限にする
2026年8月16日
この記事はAIが下書きを作成しています。内容に誤りに気づいた場合はお問い合わせよりお知らせください。
レン
ファイアウォールって、なんとなく『守ってくれるやつ』ってのは分かるけど、具体的に何をするものなの?
プロクラ
サーバーには『ポート』っていう出入り口がたくさんあるんだ。ファイアウォールは、その出入り口のうち『使うものだけ開けて、それ以外を全部閉じる』ための仕組みだよ。
ウィルスン
そう、ワタシにとって開いているポートは『侵入経路の候補』そのもの。データベースの管理ポートや、設定ミスで公開されたサービスが外から見えていたら、そこを突くのだよ。使わないポートが開けっ放しなのは、玄関だけでなく裏口も窓も全開にしているようなものだ。
安心のセキュリティ
基本は「デフォルト拒否」
プロクラ
ファイアウォールの鉄則は『デフォルトで全部拒否、必要なものだけ許可』。Ubuntuならufwというツールがシンプルでおすすめだよ。まず全部の受信を拒否してから、SSH(22)とWeb(80/443)だけを開ける、という順番で設定する。
- sudo ufw default deny incoming(受信は基本すべて拒否)
- sudo ufw default allow outgoing(送信は許可)
- sudo ufw allow OpenSSH(SSHを許可。※これを忘れると自分が締め出される)
- Webサーバーを動かすなら sudo ufw allow 'Nginx Full'(80/443)
- sudo ufw enable で有効化、sudo ufw status で確認
レン
SSHを許可し忘れると自分も入れなくなるのか…それは絶対やっちゃいそう。
プロクラ
そう、そこだけは注意。ufw enableの前に必ずSSHを許可しておくこと。あと、多くのVPS会社は管理画面側にも『セキュリティグループ』や『パケットフィルタ』っていうネットワークレベルのファイアウォール機能を持ってる。サーバー内のufwと二重にかけておくと、より安心だよ。
ウィルスン
特に気をつけろ。データベース(MySQLの3306、PostgreSQLの5432、Redisの6379)を外部に開けたまま、パスワードも弱い…というのはワタシの大好物だ。DBは基本、サーバー内部からだけ繋がるようにしておくのだ。
プロクラ
ウィルスンの言う通り。DBやキャッシュサーバーはlocalhost(127.0.0.1)でだけ待ち受けるように設定して、そもそも外部から繋げないようにするのが基本だね。