どうも。Adachinです。
自分なりに障害対応についてまとめていきます。
運営するサーバで、
「サーバダウン、Web見れない、メール送れない、アタックか?」
これどうなってんの!?
はっかーこわいこわい。
先日、自鯖にてアタックが来ており、botを使って悪さしてた模様。
↑これらを素早く検知し、クライアントに連絡するのがサーバ管理のお仕事です。
今回はNagiosのエラーメッセージを見て対応します。
1.よく見るメッセージ
1 2 |
■サーバへのパケットロス(通信がとれない)が発生している PING CRITICAL - Packet loss = 100% |
■サービスの応答までにx秒以上かかる
1 |
Socket timeout after x seconds |
■サービスが落ちている
1 |
Connection refused by host |
■メールキューがxxxx以上になっている
1 |
SNMP CRITICAL - *xxxx* |
■snmpの値が取得出来ない
1 |
snmpbulkget: Error: |
■ディスク使用率が閾値を超えている
1 |
DISK CRITCAL [Disk use 90% /] [Disk use 30% /boot] [Inum use 2% /] [Inum use 0% /boot] |
2.ホスト障害
サーバとの接続ができない状態。
1 2 |
■判断基準 $ ping IPアドレス |
1 |
クラウドならば管理コンソールを確認する。 |
3.サービス障害
■HTTP/HTTPS及びドメイン監視で検知した場合
■判断基準
実際にページにアクセスする
http://「IPアドレス」/
https://「IPアドレス」/
1 |
http://blog.adachin.me/ |
ページの表示がされない、遅い場合はサーバにログインして
MaxClientsの上限に達していないか確認。
ポートが開いているか確認
1 |
$ netstat -an | grep LISTEN | grep 80 |
Apacheのプロセスを確認
1 2 |
$ ps auxw | grep http | grep root | egrep -v "grep|rotate" root 1377 0.0 0.8 252328 9084 ? Ss Oct17 0:27 /usr/sbin/httpd |
接続数上限を確認
1 2 |
$ grep -i maxclients /etc/httpd/conf/httpd.conf | grep -v "^#" MaxClients 256 |
立ち上がってるプロセスを確認
1 2 |
$ ps auxww | grep -c http 258 |
設定されているMaxClientsと立ち上がっているプロセスを比べて
下記になっているとアクセス集中などが発生している場合がある。
1 |
MaxClients < 立ち上がっているプロセス数 |
■対応方法
Apacheが起動してない場合
1 |
/etc/init.d/httpd status #確認 |
1 |
/etc/init.d/httpd start |
MaxClientsを少し上げてみる
※httpd.confのバックアップ!!
1 2 3 4 |
$ vim /etc/httpd/conf/httpd.conf MaxClients 256 ↓ MaxClients 512 |
1 |
$ httpd -t |
テストで問題無ければApacheをgraceful or restart or reload する
■Mysql
プロセス確認
1 |
$ ps auxww | grep mysql |
起動していなかったら起動します
1 |
/etc/init.d/mysql start |
■FTP
1 2 |
<strong>FTPに接続できるか確認</strong> $ ftp 「IPアドレス」 |
ポートの確認
1 |
$ netstat -an | grep :21 | grep LISTEN |
■対応方法
起動していなかったら起動します
1 |
$ /etc/init.d/vsftpd start |
■POP
POPのポート(110)に対して接続確認
1 |
$ telnet 「IPアドレス」 110 |
例)
1 2 3 4 5 |
$ telnet 123.12.12.13 110 Trying 123.12.12.13... Connected to 123.12.12.13 (123.12.12.13). Escape character is '^]'. +OK ←遅延しているときはOKまでの表示が遅い |
■対応方法
接続遅延=アタックの可能性が高い
netstatやログを確認し、IPブロックをする
例)
1 2 3 4 5 6 7 |
$ netstat -anp |grep :110 tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 11183/tcpserver tcp 0 0 210.188.197.110:110 178.216.51.67:3960 SYN_RECV - tcp 0 0 210.188.197.110:110 178.216.51.67:2758 SYN_RECV - tcp 0 0 210.188.197.110:110 178.216.51.67:2525 SYN_RECV - tcp 0 0 210.188.197.111:110 178.216.51.67:2107 SYN_RECV - tcp 0 0 210.188.197.111:110 178.216.51.67:1221 SYN_RECV - |
1 2 3 4 |
$ tail -f /var/log/maillog Jan 19 20:38:08 s68 vpopmail[8101]: vchkpw-pop3: vpopmail user not found family@:178.216.51.67 Jan 19 20:38:10 s68 vpopmail[8104]: vchkpw-pop3: vpopmail user not found edward@:178.216.51.67 Jan 19 20:38:10 s68 vpopmail[8105]: vchkpw-pop3: vpopmail user not found family@:178.216.51.67 |
上の場合、178.216.51.67からアタック来ているのが分かるので、whoisで確認。
1 2 |
$ whois 178.216.51.67 | grep -i count country: SE ←スウェーデン |
このIPアドレスを弾きます
1 |
$ iptables -I INPUT -s 178.216.51.67 -p tcp --dport 110 -j DROP |
少し長くなってしまったので、
残りの対応方法は後日ブログします!!
(・∀・)つ
0件のコメント