「やらかしてしまった」メモです。
起こしてしまったこと
事象
aws lightsailで動かしているUbuntu20.04サーバにアクセスできない事象が発生しました。
Webサイトはもちろん、sshにもつながりません。
確認と一時対処。
awsの管理画面にログインしてリソース状況を確認したら、CPUがバースト。いわゆる暴走状態なのでこの状態を止めます。
「停止」→「起動」を選択。(再起動では完全に暴走が止まりませんでした)
それから程なくしてssh接続ができるまでは回復。ですが、
netstat -lntp
を実行してもWebサービスがリッスンしていません。
systemctl status apache2.service
でサービスは動いていることを確認。状態を確認できたところで原因を特定します。
事象発生前に何をしていたか?
バーストが発生しているサーバで、ufwの作業をしていました。これ以外に設定は特にやっていないので、ほぼおおそらくこれが問題だろうと判断。
取り急ぎ、
sudo ufw disable
を行い
サイトが見られることを確認しました。判断するに
- ルールの数を増やしすぎて処理性能が追いつかなくなった。
- 増やしたルールがコンフリクトやループを起こしハングアップ。
等でバースト、暴走したと考えられます。
不審なアクセスを無計画に弾いていたことが徒になった形です。
対処
ufwの強制リセットと最小限の設定
ufwが原因だと特定したものの、サーバ内のFWが有効化されていないのは危険です。そこで、以下のようにして設定を強制リセットしました。
- 設定の強制リセット
sudo ufw --force reset
- sshとweb通信のみを有効化
sudo ufw limit proto tcp from any to any port 22
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
- 設定反映
sudo ufw enable
設定確認
- ステータス確認
sudo ufw status
状態: アクティブ
To Action From
-- ------ ----
22/tcp LIMIT Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
を確認しました。
- 通信確認
- ssh接続ができること
- このサーバで稼働しているWebサイトが見られること
を確認し、対処完了です。
本件の教訓
「FWをいじるだけだから、特に作業履歴をやらなくてもいいだろう」という慢心から起きたものでした。
個人で運営しているサーバだったことに救われた形です。
また、この程度の作業ということで、システム全体のバックアップを取らなかったことも冷や水でした。
- 自分の作業によって起きる影響
- ufwの効率的な管理
- 作業前のバックアップ確認
といった基本的な運用の管理への意識を改める自戒の出来事でした。