今回は、WEBサーバーのセキュリティーを強化する目的で、ChatGTPにiptablesの設定の仕方をレクチャーをしてもらおうかと思います!
これからWEBサーバーを運用しようとしている方や、セキュリティー周りに興味がある方は、要チェックです!
[重要] iptablesの設定をミスると、自分自身もssh出来なくなり、サーバーに入れなくなるので、実施する際には慎重にやること!
基本、トライアンドエラー精神で一旦はやってみるのですが、iptablesの設定については、ミスると自分自身もssh出来なくなり、サーバーに2度と入れなくなることもあるので、ChatGPT以外にも、ネットでも裏どりをしつつ、慎重に作業をする必要があります。あわせて失敗した際の対策を検討した上で実施するのが良いかと思います。
iptablesを設定しないと発生しうるリスク
WEBサーバーを稼働する前提で、iptablesを設定しない場合に、どのようなリスクが発生するかをChatGPTに聞いてみます。
プロンプト
WEBサーバーに、iptablesを設定しないと、どのようなリスクがありますか
前提
WEBサーバーには、以下のサービスのみを使用
HTTP 80
HTTPS 443
SSH 22
ChatGPTの回答
SSHは厳重に警戒。iptablesを使用しつつ、iptables以外でも防ぐ手段があればそちらでも検討する
SSHは厳重に警戒しておいたほうが良さそうですね。SSHはパスワード認証ではなく公開鍵認証の設定としておけば、SSHへの攻撃は一定防げそうな気もしますね。
iptablesを使用しつつ、iptables以外でも防ぐ手段があればそちらでも検討するのが良いかと思いました。
ChatGPTにiptablesのことだけを聞くのではなく、気になったことも合わせて聞くことで、話も発展していきセキュリティーネタもどんどんくれるので勉強になります!
iptablesの仕様について
それでは、iptablesの仕様について、コマンドやオプション指定について整理していきます。
プロンプト
iptablesについて教えてください
ChatGPTの回答
iptablesを用いたWEBサーバーのセキュリティー対策について
ChatGPTの回答は後ほど記載しますが、ざっくり説明すると、「すべて遮断」して、「必要なサービスのみを開放していく」ようなイメージです。
作業中の中断したり、ターミナルが落ちてしまうと、SSHポート開放前だと、SSHすることが出来なくなり、詰んでしまう。。ということですので作業は緊張しながら実施する必要があります。
プロンプト
WEBサーバーにセキュリティー対策をする
iptablesを使用する
ChatGPTの回答
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s <trusted_ip> -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -N port-scan
iptables -A port-scan -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN
iptables -A port-scan -j DROP
iptables-save > /etc/iptables/rules.v4
service iptables save
iptables適用後の動作確認方法について
設定変更した後の動作確認方法についても、ChatGPTに聞いてみます!
プロンプト
上記の設定内容を動作確認したいです
ChatGPTの回答
iptables -L -v -n
ping -c 3 127.0.0.1
curl -I http:
curl -I https:
ssh <ユーザー>@<サーバーのIPアドレス>
telnet <サーバーのIPアドレス> 23
tail -f /var/log/syslog | grep "IPTables-Dropped"
ping -c 3 <サーバーのIPアドレス>
nmap -sS <サーバーのIPアドレス>
iptables-save > /etc/iptables/rules.v4
service iptables save
補足:ポートスキャンについて
おわりに
最後まで読んで頂き、ありがとうございます!
iptablesのことをChatGPTに聞きながら、実際に試してみようと思ったのですが、冒頭でも記載した通り、よくよく考えると「iptablesの設定をミスると自分自身もssh出来なくなり、サーバーに2度と入れなくなる。。慎重にやらねば!」と思い、別のlightsailインスタンスを立ち上げ、試してみようと思います。
気軽にトライアンドエラーで試せない作業は、気を使ってしまいますね。。
おまけ
最近、ChatGPTを使用し、色々なことを模索しています。
もしよければ、以下の記事も見て頂けると嬉しいです!