ゴール
- アプリケーションが9090番ポートで動いている
- nginxの設定で
sample.com:80
をlocalhost:9090
にリバースプロキシしている - しかし9090番が外部公開なので
sample.com:9090
でもアクセスできてしまう - この9090番ポートを外部的には閉じたい
9090番ポートの状態確認
# 一部省略 % netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp6 0 0 [::]:9090 [::]:* LISTEN
現状のiptablesの確認
% sudo iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
なんも制限してない
iptablesを使ってパケットルールを追加
まずは、localhost
からの9090番へのtcpを許すルールを追加
% sudo iptables -A INPUT -p tcp -s localhost --dport 9090 -j ACCEPT # これ↑でやってること # -A INPUT 「"INPUT"チェインにルールを追加する」 # -p tcp 「"tcp"プロトコルで」 # -s localhost 「"localhost"から」 # --dport 9090 「"9090"ポートに行く」 # -j ACCEPT 「上記のルールに合致するパケットを受け入れる」 # そうすっと... % sudo iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 tcp dpt:9090 ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 tcp dpt:9090 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
次に、あらゆる元からの9090番へのtcpを破棄するルールを追加
% sudo iptables -A INPUT -p tcp --dport 9090 -j DROP # これ↑でやってること # -A INPUT 「"INPUT"チェインにルールを追加する」 # -p tcp 「"tcp"プロトコルで」 # --dport 9090 「"9090"ポートに行く」 # -j DROP 「上記のルールに合致するパケットを破棄する」 # そうすっと... % sudo iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 tcp dpt:9090 ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 tcp dpt:9090 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9090 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
確認
この状態で
- sample.com
- sample.com:9090
にブラウザからアクセスすると
- sample.com
- sample.com:9090
sample.com:9090
にアクセス- localhostではない元から9090番への要求なので破棄される
とりあえず成功っぽい
参考
- Linux のファイアウォールの設定方法
- iptablesの設定方法 | マニュアル|ServersMan@VPS Entry/Standard/Proプラン|仮想専用サーバー|クラウドサービス:ユビキタスプロバイダ DTI
- linux - iptables error: unknown option --dport - Server Fault
- iptablesによるフィルタ設定 - とみぞーノート
- iptablesテンプレート集 改訂版(8):知らなきゃ損するiptablesのTips (1/3) - @IT
- iptables を使用してファイアウォール機能を稼働させ、セキュリティーを制御する
雑感
iptables-save > ファイル
とiptables-restore < ファイル
で安全に管理すべき- 今回は9090番だったけど、とりあえず閉じなきゃいけないportってなんだっけ
- "iptablesとりあえずのベストプラクティス"みたいなのググるか...
DRYな備忘録