[WEBセキュリティ]緊張しながら、iptablesを設定する!(失敗した時の対策は重要!)
iptablesの設定をミスるとssh出来なくなるので、緊張しながら設定変更をしていこうと思います。
以下で、ChatGPTにiptablesについて、色々レクチャーしてもらいましたが、今回は実践編です。
事前準備
ミスった場合を考慮し、定期的にiptablesをリセットするシェルを起動しておく
ただ緊張するだけではなく、ミスった場合にすぐにリカバリーできるように、1時間に1回iptablesをリセットするシェルを起動しておきます。
それと、検証用なのでサーバーは最悪ssh出来なくなっても良いインスタンスを使用しました。(多少セットアップに時間がかかるのでssh出来なくなるのは嫌なのですが)
ChatGPTに作ってもらったシェルも、ちゃんと動作確認する
1時間に1回iptablesをリセットするシェルは、毎度お世話になっているChatGPTにさくっと作ってもらいます。
1時間に1回iptablesをリセットするシェルの動作確認も実施しておきます。このシェルが正常に動作しないと終わってしまうので。。
段取りを整理
1時間ごとにiptablesをリセットするshを起動しておく
ターミナルを2つ起動し、ssh接続しておく(1つは予備)
既存のルールをクリア
全てのトラフィックを拒否
SSHトラフィックを許可
(色々設定)
動作確認
iptablesの設定変更作業
設定変更開始!
緊張しながら、設定変更を実施していきます!
「3 既存のルールをクリア」は、iptablesをリセットするshと同じ内容なので、ステップ3まで順調に行きました。次の緊張ポイントの「4 全てのトラフィックを拒否」です
「全てのトラフィックを拒否」で、ssh出来なくなる・・・
[1] iptables -P INPUT DROP
[2] iptables -P FORWARD DROP
[3] iptables -P OUTPUT ACCEPT
上記[1]のコマンドを起動した瞬間、sshが・・・
「あーーー!!」「ターミナルがああ・・」「かなしい・・・」
iptablesの設定はシェルなどですべての設定を1回で済ませないと、ダメでしたね・・
ちなみに「2 ターミナルを2つ起動し、ssh接続しておく(1つは予備)」は、何となく保険で用意しておきましたが、2つ目のターミナルも即、動かなくなってしまったので、この対策ではダメでした、、
1時間ごとにiptablesをリセットするshで、リセットされるのを祈りながら待つ!
あとは「1時間ごとにiptablesをリセットするsh」でiptablesがリセットされるのを祈るのみですね。。動作確認しているので大丈夫なはず!
待ち時間はソワソワしてしまいますね、、
無事、1時間後にiptablesがリセットされた!
1時間後ぐらいに、「1時間ごとにiptablesをリセットするsh」が無事に起動してくれ、sshすることが出来ました!ふ〜
やはりミスした時のリカバリー対策は大切ですね。
iptablesコマンドをshにまとめて起動
その後、iptablesとして設定するコマンドをshにまとめて、起動したところ正常に設定が完了し、sshもすることが出来ました!
詳細の動作確認はこれからですが、区切りが良いので今回はこの辺りで終わりにしたいと思います。
おわりに
最後まで読んで頂き、ありがとうございました!
iptablesの設定は、なかなか疲れる作業ですね、、
やったことを整理すると、大したことをやっていなのですが、事前準備や段取りの確認などで、トータルの時間としては結構かかってしまいました。
iptablesの設定は、WEBアプリのコーディングと違い、地味でストイックな作業ですが、これにめげずに少しずつ進めていこうと思います。