■htopを叩き負荷を可視化する。 容量の大きなログファイルでリアルタイムで容量が増えているものを探す 絞り込み例ログ 841 watch ls -lha /var/log/httpd/[a-c]* 842 watch ls -la /var/log/httpd/[a-c]* 843 watch ls -la /var/log/httpd/[d-g]* 844 watch ls -la /var/log/httpd/[i-n]* 845 watch ls -la /var/log/httpd/[o-s]* 846 watch ls -la /var/log/httpd/[o-x]* 847 watch ls -la /var/log/httpd/[o-s]* 848 watch ls -la /var/log/httpd/[t-x]* 849 watch ls -la /var/log/httpd/[t-v]* 850 watch ls -la /var/log/httpd/[w-y]* 851 watch ls -la /var/log/httpd/[wwww.a-www.g]* 852 watch ls -la /var/log/httpd/[wwww.a-www.b]* 853 watch ls -la /var/log/httpd/[wwww\.a-www\.b]* 854 watch ls -la /var/log/httpd/www[a-b]* 855 watch ls -la /var/log/httpd/www.[a-b]* 856 watch ls -la /var/log/httpd/www.[a]* 857 watch ls -la /var/log/httpd/www.[a-ap]* 858 watch ls -la /var/log/httpd/www.[a-ac]* 859 watch ls -la /var/log/httpd/www.a[a-b]* 860 watch ls -la /var/log/httpd/www.a[s-v]* 861 watch ls -la /var/log/httpd/www.a[a-s]* 862 watch ls -la /var/log/httpd/www.a[a-r]* 863 watch ls -la /var/log/httpd/www.a[a-s]* 864 watch ls -la /var/log/httpd/www.a[a-r]* 865 watch ls -la /var/log/httpd/[a-e] 866 watch ls -la /var/log/httpd/[a-e]* 867 watch ls -la /var/log/httpd/[a-d]* 868 tail -f /var/log/httpd/access_log 以下コマンドで指定のIPをブロックする iptables -A INPUT -s ********** -j DROP -------------------------------------------------------------------------------- ■xmlrpcの記述■ xmirpc order allow,deny deny from all 「ドメイン名.conf」ファイルを探して開き、上記の4行が無ければ追記する。 例 第一候補 /etc/httpd/sites-available/aihome.biz.conf ←あいホームの例 第二候補 /etc/httpd/conf.d/default.conf 全てのの中に書く。 書き終えたら /etc/init.d/httpd reload /etc/init.d/httpd restart この2つを実行することで反映される。 -------------------------------------------------------------- ■不審なアクセスと思われるIPアドレスの調査■ アクセスログファイルを確認する ssl非対応であれば /var/log/httpd/*****_access_log ssl対応であれば /var/log/httpd/*****_ssl_access_log xmlrpcへのアクセスログを探す ------------------------------------------------------------- xmlrpcへのアクセスが確認できたらログファイルを編集用にコピーする 例 cp /var/log/httpd/*****_log access_log または cp /var/log/httpd/*****_ssl_access_log access xmlrpcへのアクセスを試みているIPアドレスの一覧を作成するため 以下の正規表現を入力 「xmlrpc」を含むログのIPアドレス以外を削除する :%s/^\(.*\)\(xmlrpc\)\(.*\)/#\1\2\3/g :%s/^/@/g :%s/^@#//g :%s/^@.*\n//g :%s/^\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/g :sort u [SHIFT][↓]で以下の行を選択してペーストすれば一括処理可能 :%s/^\(.*\)\(xmlrpc\)\(.*\)/#\1\2\3/g :%s/^/@/g :%s/^@#//g :%s/^@.*\n//g :%s/^\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/g :sort u 抽出されたIPアドレスが多数の場合は「■シェルスクリプトファイルの作成■」へ 抽出されたIPを下記に組み込みターミナルで実行 ①iptables -I INPUT -s xxx.xxx.xx.xxx -j DROP ②iptables -A INPUT -s xxx.xxx.xx.xxx -j DROP ②のほうの記述をiptables.shにも貼り付ける 完了 ------------------------------------------------------------- ■シェルスクリプトファイルの作成■ ソートされた各行の頭に「iptables -I INPUT -s」 各行の末尾に「-j DROP」を追記する :%s/^/iptables\ \-I\ INPUT\ \-s /g :%s/$/\ \-j\ DROP/g 編集用にコピーしたログファイルをシェルスクリプトファイルに変更 例 mv access_log defence.sh vimで開き「#!/bin/bash」を先頭行に追記 vim defence.sh 実行する sh defence.s vimでファイルを開き、-Iを-Aに置き換えてもう一度実行 vim defence.sh :%s/iptables \-\I/iptables \-\A/g 実行する sh defence.sh iptables.shに「このファイルの実行とログ廃棄」を追記 例 sh /root/defence.sh > /dev/null --------------------------------------------------------- iptables.shにBAN設定する #bot.semrush.com iptables -I INPUT -s 185.191.171.0/24 -j DROP #ブルガリアからのブルートフォース(メールサーバー) iptables -I INPUT -s 212.70.149.0/24 -j DROP #216.224.66.227 iptables -I INPUT -s 216.224.66.227 -j DROP --------------------------------------------------------- iptables.shにBAN設定する #bot.semrush.com iptables -I INPUT -s 185.191.171.0/24 -j DROP #ブルガリアからのブルートフォース(メールサーバー) iptables -I INPUT -s 212.70.149.0/24 -j DROP #216.224.66.227 iptables -I INPUT -s 216.224.66.227 -j DROP --------------------------------------------------------- ログがある程度取れたらの処理 swatchログからIPアドレスのリストを作る cp /var/log/swatch/swatch.log [任意のファイル名] 以下を参考に作成 :%s/^.*\? .*\? .*\? .*\? .*\? .*\? (.*)\? .*$/\1/g :%s/^............................. :%s/.........$ /\(.*\) /\1/g .* なんでもマッチ swatchログを固める :%s/\(.*\)\s\+/\1#A#/g :%s/\(.*\)\s\+/\1#B#/g :%s/\(.*\)\s\+/\1#C#/g :%s/.*#C#//g :%s/#B#.*//g :%s/Resource\n//g :%s/^/iptables -I INPUT -s /g :%s/$/ -j DROP/g /abc :%s/abc/ABC/g 特定の文言の行に目印(#)を付ける、xmlrpcの例 :%s/.*xmlrpc.*/#\0/g :%s/^/@/g :%s/^@#//g :%s/^@.*\n//g :%s/^.\{-}\s\+.\{-}\s\+.\{-}\s\+.\{-}\s\+.\{-}\s\+.\{-}\s\+\(.*\)\s\+.*$/\1/g :%s/\s\+.*$//g :%s/iptables:\n//g :%s/<.*\?>//g :%s/<.\{-}>//g 作成後BANを行ったら↓ swatchのBANスクリプトをsysadminに避難させる mv /etc/swatch/xmlrpc_def.conf /home/sysadmin/ swatchを再起動 /etc/init.d/swatch restart swatchのログを削除 1011 ls /var/log/swatch/ 1012 rm -rf /var/log/swatch/1* 1013 ls /var/log/swatch/ 1014 rm -rf /var/log/swatch/2* 1015 rm -rf /var/log/swatch/3* 1016 rm -rf /var/log/swatch/4* 1017 rm -rf /var/log/swatch/5* 1018 rm -rf /var/log/swatch/6* 1019 rm -rf /var/log/swatch/7* 1020 rm -rf /var/log/swatch/8* 1021 rm -rf /var/log/swatch/9* 1022 ls /var/log/swatch/ 1023 /etc/init.d/swatch restart ←ログ削除後もswatchを再起動 ------------------------------------------------------------- ■諸外国からのアクセスを規制するファイル(の置き場所) /etc/cron.daily/iplist_check.sh ------------------------------------------------------------- ********************************** swatchへの追記 ■swatchの場所■ /etc/swatch/ 上記に*******.conf を作成し置く ■例------------------------------------------------------- # logfile /var/log/httpd/aihome-access_log watchfor /wp-login.php.*Ubuntu/ pipe "/usr/local/bin/swatch_action.sh 1 lock" throttle=00:00:10 watchfor /xmlrpc.php/ pipe "/usr/local/bin/swatch_action.sh 1 lock" throttle=00:00:10 # lightpress watchfor /wp-login.php.*500.*Ubuntu/ pipe "/usr/local/bin/swatch_action.sh 1 lock" throttle=00:00:10 ------------------------------------------------------- 【メモ】1 lock の「1」とはログファイルにIPアドレスが」記載されている箇所 「aihome-access_log」の内容を参照する # logfile /var/log/httpd/aihome-access_log Ubuntuからwp-login.php へのアクセスを検知したら該当ホストからのアクセスを24時間規制 watchfor /wp-login.php.*Ubuntu/ pipe "/usr/local/bin/swatch_action.sh 1 lock" throttle=00:00:10 xmlrpc.php へのアクセスを検知したら該当ホストからのアクセスを24時間規制 watchfor /xmlrpc.php/ pipe "/usr/local/bin/swatch_action.sh 1 lock" throttle=00:00:10 # lightpress watchfor /wp-login.php.*500.*Ubuntu/ pipe "/usr/local/bin/swatch_action.sh 1 lock" throttle=00:00:10 ------------------------------------------------------- 上記ファイルを保存したらhttpdを再起動 /etc/init.d/httpd restart ********************************** ------------------------------------------------------- cp /var/log/swatch/swatch.log [任意のファイル名] :%s/^.*\? .*\? .*\? .*\? .*\? .*\? (.*)\? .*$/\1/g :%s/^............................. :%s/.........$ /\(.*\) /\1/g .* なんでもマッチ swatchログを固める :%s/\(.*\)\s\+/\1#A#/g :%s/\(.*\)\s\+/\1#B#/g :%s/\(.*\)\s\+/\1#C#/g :%s/.*#C#//g :%s/#B#.*//g :%s/Resource\n//g :%s/^/iptables -I INPUT -s /g :%s/$/ -j DROP/g /abc :%s/abc/ABC/g 特定の文言の行に目印(#)を付ける、xmlrpcの例 :%s/.*xmlrpc.*/#\0/g :%s/^/@/g :%s/^@#//g :%s/^@.*\n//g :%s/^.\{-}\s\+.\{-}\s\+.\{-}\s\+.\{-}\s\+.\{-}\s\+.\{-}\s\+\(.*\)\s\+.*$/\1/g :%s/\s\+.*$//g :%s/iptables:\n//g :%s/<.*\?>//g :%s/<.\{-}>//g 作成後BANを行ったら↓ swatchのBANスクリプトをsysadminに避難させる mv /etc/swatch/xmlrpc_def.conf /home/sysadmin/ swatchを再起動 /etc/init.d/swatch restart swatchのログを削除 1011 ls /var/log/swatch/ 1012 rm -rf /var/log/swatch/1* 1013 ls /var/log/swatch/ 1014 rm -rf /var/log/swatch/2* 1015 rm -rf /var/log/swatch/3* 1016 rm -rf /var/log/swatch/4* 1017 rm -rf /var/log/swatch/5* 1018 rm -rf /var/log/swatch/6* 1019 rm -rf /var/log/swatch/7* 1020 rm -rf /var/log/swatch/8* 1021 rm -rf /var/log/swatch/9* 1022 ls /var/log/swatch/ 1023 /etc/init.d/swatch restart ←ログ削除後もswatchを再起動 ------------------------------------------------------------------- 970 vim /etc/httpd/conf.d/default.conf 971 vim /etc/httpd/sites-available/sasazo.conf 972 vim /etc/swatch/xmlrpc_def.conf 973 mv /etc/swatch/xmlrpc_def.conf /home/sysadmin/ ←sysadminへ移動 974 /etc/init.d/swatch restart ←swatchをリスタート 975 ls /var/log/swatch/ 976 rm -rf /var/log/swatch/1* ←swatchログを消去 977 ls /var/log/swatch/ 978 rm -rf /var/log/swatch/2* ←swatchログを消去 979 rm -rf /var/log/swatch/3* ←swatchログを消去 980 rm -rf /var/log/swatch/4* ←swatchログを消去 981 rm -rf /var/log/swatch/5* ←swatchログを消去 982 rm -rf /var/log/swatch/6* ←swatchログを消去 983 rm -rf /var/log/swatch/7* ←swatchログを消去 984 rm -rf /var/log/swatch/8* ←swatchログを消去 985 rm -rf /var/log/swatch/9* ←swatchログを消去 986 ls /var/log/swatch/ 987 /etc/init.d/swatch restart ←swatchをリスタート 988 history 989 exit