chkrootkit インストール
①chkrootkit をダウンロード、インストール
1 2 3 |
# cd /usr/local/src # wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz # tar xvf chkrootkit.tar.gz |
➁/root/bin ディレクトリを作成し、そのディレクトリにchkrootkit コマンドを移動
1 2 |
# mkdir -p /root/bin # mv chkrootkit-0.58b/chkrootkit /root/bin |
➂chkrootkit を確認します。
1 |
# chkrootkit | grep INFECTED |
Searching for Linux.Xor.DDoS … INFECTED: Possible Malicious Linux.Xor.DDoS installed
上記のような表示が出る場合は、/tmp配下に実行フィルがある可能性があります。
/tmp配下のファイルを確認すると「ks-script-xxx」のファイルがありましたので削除し再実行すると
INFECTEDが消えました。
④chkrootkit 定期実行スクリプトの作成と権限変更
chkrootkit実行スクリプトを毎日自動実行されるディレクトリへ作成
1 |
# vi /etc/cron.daily/chkrootkit |
chkrootkit の内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/bin/bash PATH=/usr/bin:/bin:/root/bin LOG=/tmp/$(basename ${0}) # chkrootkit実行 chkrootkit > $LOG 2>&1 # ログ出力 cat $LOG | logger -t $(basename ${0}) # SMTPSのbindshell誤検知対応 if [ ! -z "$(grep 465 $LOG)" ] && \ [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then sed -i '/465/d' $LOG fi # upstartパッケージ更新時のSuckit誤検知対応 if [ ! -z "$(grep Suckit $LOG)" ] && \ [ -z "$(rpm -V `rpm -qf /sbin/init`)" ]; then sed -i '/Suckit/d' $LOG fi # rootkit検知時のみroot宛メール送信 [ ! -z "$(grep INFECTED $LOG)" ] && \ grep INFECTED $LOG | mail -s "chkrootkit report in `hostname`" root |
chkrootkitに実行権限
1 |
# chmod 700 /etc/cron.daily/chkrootkit |
④chkrootkitで使用するコマンドの確保
chkrootkitが使用するコマンドが改竄されていた場合、rootkitを正常に検出できなくなるので、chkrootkitが使用するコマンドをコピーしておき、必要な場合にはそのコマンドを使用してchkrootkitを実行する。
chkrootkit使用コマンド退避先ディレクトリ作成
1 |
# mkdir chkrootkitcmd |
chkrootkit使用コマンドを退避先ディレクトリへコピー
1 |
# cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed ssh uname` chkrootkitcmd/ |
退避したchkrootkit使用コマンドを使用してchkrootkit実行
1 |
# chkrootkit -p /root/chkrootkitcmd|grep INFECTED |
chkrootkit使用コマンド退避先ディレクトリを圧縮して削除
1 |
# zip -r chkrootkitcmd.zip chkrootkitcmd/ && rm -rf chkrootkitcmd |
chkrootkit使用コマンド(圧縮版)をroot宛にメール送信
1 |
# echo|mail -a chkrootkitcmd.zip -s chkrootkitcmd.zip root |
chkrootkit使用コマンド(圧縮版)削除
1 |
# rm -f chkrootkitcmd.zip |
Logwatch 導入
①インストール
1 |
# dnf install logwatch |
②設定ファイルの編集
1 |
# cat /usr/share/logwatch/default.conf/logwatch.conf >> /etc/logwatch/conf/logwatch.conf |
1 2 3 4 5 6 7 8 9 10 11 |
# vi /etc/logwatch/conf/logwatch.conf 51 行目あたり 「MailTo = root」の行頭に「#」を挿入し、その下行に通知を受け取りたいメールアドレスを設定 #MailTo = root MailTo = [メールアドレス] 84 行目あたり ログ通知の詳細度を設定 #Detail = Low Detail = High |
③Logwatch のレポートを出力
1 |
# logwatch --output stdout |
下記のようなメッセージが出ます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
################### Logwatch 7.5.5 (01/22/21) #################### Processing Initiated: Sat Oct 21 14:32:29 2023 Date Range Processed: yesterday ( 2023-Oct-20 ) Period is day. Detail Level of Output: 10 Type of Output/Format: stdout / text Logfiles for Host: Lepard ################################################################## --------------------- Amavisd-new Begin ------------------------ ****** Summary ************************************************************************************* 2 Total messages scanned ------------------ 100.00% 1.724K Total bytes scanned 1,765 ======== ================================================== 2 Passed ---------------------------------- 100.00% ********omission in the middle******* --------------------- Disk Space Begin ------------------------ Filesystem Size Used Avail Use% Mounted on /dev/mapper/ml-root 17G 7.0G 8.8G 45% / /dev/nvme0n1p1 974M 220M 687M 25% /boot ---------------------- Disk Space End ------------------------- --------------------- lm_sensors output Begin ------------------------ No sensors found! Make sure you loaded all the kernel drivers you need. Try sensors-detect to find out which these are. ---------------------- lm_sensors output End ------------------------- ###################### Logwatch End ######################### |
④設定したアドレスにレポートが届くかテストを行います。上記の様なログレポートメールが届いているか確認
1 |
# /etc/cron.daily/0logwatch |
DiCEのインストール
ネットが切断されたり、ルーターが切断再起動したときにおこるグローバルIPの変更の度に、ダイナミックDNSにアクセスしグローバルIPが変更されたことを知らせなくてはいけません。その作業を自動的にやってくれるのがDiCEです
①Diceのダウンロード、インストール
1 2 3 4 |
# cd /usr/local/bin # wget http://www.hi-ho.ne.jp/yoshihiro_e/dice/diced01914.tar.gz # tar -xzvf diced01914.tar.gz # cd /usr/local/bin/DiCE |
②DiCEの設定
DiCEの出力文字はEUCのため、文字化けしてしまう。UTF-8に変換するために、nkfをインストールしておく
1 |
# dnf install nkf |
64bitOSで32bitソフトのDiceを動かすため下記をインストール
1 |
# dnf install glibc.i686 |
③DiCEを起動する
1 2 |
# cd /usr/local/bin/DiCE # ./diced | nkf -uw |
④イベントの追加
DNSサービスはVALUEDOMAINとした場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# ./diced | nkf -uw : add DynamicDNSサービス名を入力してください "?"で対応しているサービスを一覧表示します (P)戻る >VALUEDOMAIN ドメイン名を入力してください "?"でドメイン一覧を表示します (P)戻る ><ドメイン名> ホスト名を入力してください (P)戻る ><ホスト名> ログインユーザ名を入力してください (P)戻る ><ユーザー名> ←VALUEDOMAINに登録したユーザー名 ログインパスワードを入力してください (P)戻る ><passwd> ←VALUEDOMAINにログインするパスワード 登録するIPアドレスを入力してください 空白にすると現在のIPアドレスを自動検出します (P)戻る >空白 このイベントに題名を付けてください (P)戻る >xxxxxxxxx(適当に付ける) 実行する頻度を指定してください (番号入力) (0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回 (4)その他の周期 (5)IPアドレス変化時 (6)起動時 (P)戻る >5 (任意に決める) IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると アカウントを削除されてしまうことがあります IPアドレスの変化が無い時に実行する間隔を指定してください (0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎 (4)35日毎 (5)56日毎 (6)84日毎 (P)戻る >0(任意に決める) このイベントを有効にしますか? (Y/N) (イベントの有効/無効は"EN/DIS"コマンドで切替えられます) >y イベントを保存しますか? (Y/N) >y イベントの確認 list (No.) (イベント名) (スケジュール) (次回予定) 0 * xxxxxxxxx IPアドレス変化時 (7日毎) 01/27 06:27ー 手動実行 :ex 0 + 1/20 6:33 にddns_valuedomainが実行されました IPアドレスを更新しました |
⑤Diceの自動実行
DiCEデーモンを起動する
1 |
# /usr/local/bin/DiCE/diced -d -l |
起動しているか確認
1 2 3 4 |
# ps aux | grep diced root 77172 0.8 0.0 5792 132 ? Ss 14:41 0:00 /usr/local/bin/DiCE/diced -d -l root 77175 81.0 0.0 5792 1868 ? Rs 14:41 0:04 /usr/local/bin/DiCE/diced -d -l root 77177 0.0 0.0 6408 2204 pts/1 S+ 14:42 0:00 grep --color=auto diced |
自動で起動するよう設定
1 2 3 |
# vi /etc/rc.local /usr/local/bin/DiCE/diced -d -l ← 追記 |