【CentOS6】サーバをセキュアにするために〜その1〜
ブートローダの設定
更新中。。。
システムの自動更新
自動的にソフトウェアを更新してくれるyum-cronを入れておくとよい
yum-cronのインストール
$ yum install -y yum-cron 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package yum-cron.noarch 0:3.2.29-69.el6.centos will be インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: yum-cron noarch 3.2.29-69.el6.centos base 44 k トランザクションの要約 ================================================================================ インストール 1 パッケージ 総ダウンロード容量: 44 k インストール済み容量: 28 k パッケージをダウンロードしています: yum-cron-3.2.29-69.el6.centos.noarch.rpm | 44 kB 00:00 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : yum-cron-3.2.29-69.el6.centos.noarch 1/1 Verifying : yum-cron-3.2.29-69.el6.centos.noarch 1/1 インストール: yum-cron.noarch 0:3.2.29-69.el6.centos 完了しました! $
yum-cronの設定
yum-cronの設定は以下ファイルに定義されている
/etc/sysconfig/yum-cron
# if MAILTO is set and the mail command is available, the mail command # is used to deliver yum output # by default MAILTO is unset, so crond mails the output by itself # example: MAILTO=root MAILTO=root
今回はデフォルトからMAILTOだけ変更する
yum-cronの起動と自動起動設定
# yum-cronの起動 $ service yum-cron start 夜間 yum 更新の有効化中: [ OK ] # 確認 $ service yum-cron status 夜間 yum 更新が有効です。 # yum-cronの自動起動 $ chkconfig yum-cron on # 確認 $ chkconfig | grep yum-cron yum-cron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ユーザの管理
sudo
sudoの設定はvisudoコマンド(※)にて行う
※/etc/sudoersは直接編集できない
sudoersファイルの書式
ユーザ名 ホスト名=(実行ユーザ名) [NOPASSWORD:]コマンド
例)hogeユーザにshutdownコマンドを許可する
hoge ALL=(ALL) /sbin/shutdown
例)hogeユーザに全てのコマンド許可する
hoge ALL=(ALL) ALL
パスワード管理
更新中。。。
アンチウィルスソフトの導入
今回はオープンソースのclam AntiVirus(以降clamavとします)を利用します。
インストール
インストールの前提としてEPELリポジトリを追加が必要です。
インストール
$ yum -y install clamd 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.riken.jp * epel: ftp.riken.jp * extras: ftp.riken.jp * rpmforge: ftp.kddilabs.jp * updates: ftp.riken.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package clamd.x86_64 0:0.99-3.el6 will be インストール --> 依存性の処理をしています: clamav = 0.99-3.el6 のパッケージ: clamd-0.99-3.el6.x86_64 --> 依存性の処理をしています: libclamav.so.7(CLAMAV_PUBLIC)(64bit) のパッケージ: clamd-0.99-3.el6.x86_64 --> 依存性の処理をしています: libclamav.so.7(CLAMAV_PRIVATE)(64bit) のパッケージ: clamd-0.99-3.el6.x86_64 --> 依存性の処理をしています: libclamav.so.7()(64bit) のパッケージ: clamd-0.99-3.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package clamav.x86_64 0:0.99-3.el6 will be インストール --> 依存性の処理をしています: clamav-db = 0.99-3.el6 のパッケージ: clamav-0.99-3.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package clamav-db.x86_64 0:0.99-3.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ========================================================================================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 ========================================================================================================================================================================== インストールしています: clamd x86_64 0.99-3.el6 epel 165 k 依存性関連でのインストールをします。: clamav x86_64 0.99-3.el6 epel 1.4 M clamav-db x86_64 0.99-3.el6 epel 102 M トランザクションの要約 ========================================================================================================================================================================== インストール 3 パッケージ 総ダウンロード容量: 104 M インストール済み容量: 106 M パッケージをダウンロードしています: (1/3): clamav-0.99-3.el6.x86_64.rpm | 1.4 MB 00:01 (2/3): clamav-db-0.99-3.el6.x86_64.rpm | 102 MB 00:30 (3/3): clamd-0.99-3.el6.x86_64.rpm | 165 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 合計 3.1 MB/s | 104 MB 00:33 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : clamav-db-0.99-3.el6.x86_64 1/3 インストールしています : clamav-0.99-3.el6.x86_64 2/3 インストールしています : clamd-0.99-3.el6.x86_64 3/3 Verifying : clamav-db-0.99-3.el6.x86_64 1/3 Verifying : clamav-0.99-3.el6.x86_64 2/3 Verifying : clamd-0.99-3.el6.x86_64 3/3 インストール: clamd.x86_64 0:0.99-3.el6 依存性関連をインストールしました: clamav.x86_64 0:0.99-3.el6 clamav-db.x86_64 0:0.99-3.el6 完了しました! # 確認 $ clamscan --version ClamAV 0.99/21397/Mon Feb 22 06:37:19 2016
ウィルスデータベースの更新
手動で更新を行う場合は「freshclam」を叩く。
$ freshclam ClamAV update process started at Mon Feb 22 13:13:32 2016 main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo) Downloading daily-21397.cdiff [100%] daily.cld updated (version: 21397, sigs: 1850960, f-level: 63, builder: neo) bytecode.cvd is up to date (version: 271, sigs: 47, f-level: 63, builder: anvilleg) Database updated (4275232 signatures) from database.clamav.net (IP: 203.178.137.175)
ただ、ウィルスデータベースの更新は、clamavをインストールした際、定期実行されるようになっているので、基本的に手動で行う必要はないです。
$ ls -ltr /etc/cron.daily/ #〜〜〜〜〜〜〜〜〜〜(省略)〜〜〜〜〜〜〜〜〜〜〜 -rwxr-xr-x. 1 root root 396 12月 8 05:31 2015 freshclam
デーモンの設定
以下に設定ファイル
/etc/clamd.conf
変更箇所抜粋
# /etc/clamd.conf.defaultは変更前のclamd.conf $ diff /etc/clamd.conf.default /etc/clamd.conf 165,166c165,168 < #ExcludePath ^/proc/ < #ExcludePath ^/sys/ --- > # 以下ディレクトリ配下のファイルにはアクセスできずエラーが大量に発生するためスキャン対象外とする > ExcludePath ^/proc/ > ExcludePath ^/sys/ 195c197,199 < User clam --- > # 作業ユーザで実行するとパーミッション絡みで面倒なので妥協してrootで実行 > User root 290c294,296 < DetectBrokenExecutables yes --- > # 破損ファイルの検出は誤検出が多いそうなので切っておく > DetectBrokenExecutables no
デーモンの起動
$ service clamd start Starting Clam AntiVirus Daemon: [ OK ] # 自動起動も有効にしておく $ chkconfig clamd on $ chkconfig | grep clamd clamd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
スキャン実行
感染したファイルがない場合
$ clamdscan / /: OK ----------- SCAN SUMMARY ----------- Infected files: 0 Time: 215.179 sec (3 m 35 s)
以下サイトからテスト用擬似ウィルスファイルをダウンロードできるので、テストしてみる
$ curl -L -O http://www.eicar.org/download/eicar.com # 確認 $ ls -l /home/hoge/eicar.com -rw-r--r--. 1 root root 68 2月 22 17:25 2016 /home/hoeg/eicar.com eicar.com
感染したファイルがある場合
$ clamdscan / /home/hoge/eicar.com: Eicar-Test-Signature FOUND ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 12.276 sec (0 m 12 s)
なお、clamdscanは前回のスキャンから変更のあったファイルだけ差分でスキャンするため、2回目のスキャン時間は大幅に短縮される
見つかった感染ファイルを自動で削除する場合
# --removeオプションを付けると感染ファイルが見つかった際に自動的に削除してくれる $ clamdscan --remove / /home/hoge/eicar.com: Eicar-Test-Signature FOUND /home/hoge/eicar.com: Removed. ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 12.318 sec (0 m 12 s) # 確認 $ ls -l /home/hoge/eicar.com ls: cannot access /home/hoge/eicar.com: そのようなファイルやディレクトリはありません
定期実行
ウィルススキャンを定期的に実行し、感染ファイルが見つかった場合メールを飛ばす簡単なスクリプトを作成します。
前提としてmailxでメールを飛ばせるものとします。
mailx参考:mktktmr.hatenablog.jp
ウィルススキャン実行スクリプト
clamdscan.sh
#!/bin/sh MAILTO='hoge@sample.com' MAIL_SUBJECT='Virus is detected' SUMMARY=`clamdscan --stdout /` if [ $? -eq 1 ]; then echo "$SUMMARY" | mail -s "$MAIL_SUBJECT" "$MAILTO" fi exit 0
実行権限つけて。。。
$ chmod 700 clamdscan.sh
適当な場所に移動
$ mv clamdscan.sh /root/bin/
cronで定期実行するようにする
$ crontab -e
毎週月曜日の3時に実行
0 3 * * 1 /root/bin/clamdscan.sh > /dev/null 2>&1