雛形から公開用のクローンを作る。
virt-clone -o CentOS7_2 -n {公開用} -f /var/lib/libvirt/images/{公開用}.qcow2
割り当て中 ‘{公開用}.qcow2’ | 20 GB 00:05
‘{公開用}’のクローニングに成功しました。
※{公開用}は任意のゲスト名を指定する。
/etc/libvirt/qemu/{公開用}.xmlの内容を確認する。
<channel type=’unix’>
<source mode=’bind’ path=’/var/lib/libvirt/qemu/channel/target/domain-CentOS7_2/org.qemu.guest_agent.0’/>
<target type=’virtio’ name=’org.qemu.guest_agent.0’/>
<address type=’virtio-serial’ controller=’0′ bus=’0′ port=’1’/>
上の様にCentOS7_2と雛形の名前のままの場合には、virsh start {公開用}でエラーになるので、
- このxmlファイルを/rootにバックアップし、CentOS7_2の部分を{公開用}に変更。
- クローンしたゲストの登録を解除
- クローンしたゲストを再登録
- virsh define /root/{公開用}.xml
※本当に20GBの仮想ディスクファイルが出来てしまっている場合は圧縮する。
qemu-img convert -c -f qcow2 -O qcow2 /var/lib/libvirt/images/{公開用}{,.compress}.qcow2
rm -f /var/lib/libvirt/images/{公開用}.qcow2
mv /var/lib/libvirt/images/{公開用}.compress.qcow2 /var/lib/libvirt/images/{公開用}.qcow2
ブログサーバーのXMLの設定をファイルシステムにも反映
virt-edit -d {公開用} /etc/sysconfig/network-scripts/ifcfg-eth0
UUID=適当に修正
HWADDR=適当に修正
IPADDR=適当に修正
/etc/libvirt/qemu/{公開用}.xmlを見ながら適当に修正。
virt-edit -d {公開用} /etc/hostname
ホスト名を修正
virt-edit -d {公開用} /etc/sysconfig/network
ホスト名があれば修正
※virt-editが無ければ、yum install libguestfs libguestfs-tools libguestfs-tools-c
※virt-editがviを開くまでは結構長いので気長に待つ。
{公開用}を再起動
virsh start {公開用}
一通りパッケージを入れる。
yum -y groupinstall base "Development tools"
epel インストール
yum -y install epel-release
Tripwireインストール
yum -y install tripwire
Tripwireの設定は http://yokensaka.com/centos/?p=318 を参照。
※とりあえず残っているものを消す
yum remove tripwire
find /* | grep tripwire
rm -rf 見つかったもの全て
インスト開始
yum install tripwire
初期設定
tripwire-setup-keyfiles
・・・
Enter the site keyfile passphrase: ← サイトパスフレーズを設定
Verify the site keyfile passphrase: ← サイトパスフレーズを再度入力
・・・
Enter the local keyfile passphrase: ← ローカルパスフレーズを設定
Verify the local keyfile passphrase: ← ローカルパスフレーズを再度入力
・・・
Enter the site keyfile passphrase: ← サイトパスフレーズを設定
・・・
Enter the site keyfile passphrase: ← サイトパスフレーズを設定
設定ファイル(/etc/tripwire/twcfg.txt)の編集
LOOSEDIRECTORYCHECKING =false
を
LOOSEDIRECTORYCHECKING =true
REPORTLEVEL =3
を
REPORTLEVEL =4
設定ファイル(/etc/tripwire/twcfg.txt)を暗号化
twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase: ← サイトパスフレーズを設定
rm -f /etc/tripwire/twcfg.txt
復活の呪文
twadmin --print-cfgfile > /etc/tripwire/twcfg.txt
ポリシーファイルの最適化スクリプト(/etc/tripwire/twpolmake.pl)を作る
省略
ポリシーファイル(/etc/tripwire/twpolmake.pl)を最適化
perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new
ポリシーファイル(/etc/tripwire/twpolmake.pl)を暗号化
twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt.new
Please enter your site passphrase: ← サイトパスフレーズを入力
rm -f /etc/tripwire/twpol.txt*
復活の呪文
twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt
データベース作成
tripwire -m i -s -c /etc/tripwire/tw.cfg
Please enter your local passphrase: ← ローカルパスフレーズを入力
※うまくいかない場合は、ポリシーファイルを復活させ編集し暗号化してもう一度やってみる。
動作確認
tripwire -m c -s -c /etc/tripwire/tw.cfg
クローンで定時動作(/etc/cron.daily/tripwire-check)
#!/bin/sh
# デフォルトの部分をコメントアウト
#HOST_NAME=`uname -n`
#if [ ! -e /var/lib/tripwire/${HOST_NAME}.twd ] ; then
# echo "**** Error: Tripwire database for ${HOST_NAME} not found. ****"
# echo "**** Run "/etc/tripwire/twinstall.sh" and/or "tripwire --init". ****"
#else
# test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check
#fi
# パスフレーズ設定
LOCALPASS='****' ← ローカルパスフレーズを設定
SITEPASS='****' ← サイトパスフレーズを設定
cd /etc/tripwire
# Tripwireチェック実行
tripwire -m c -s -c tw.cfg|mail -s "Tripwire(R) Integrity Check Report in `hostname`" root
# ポリシーファイル最新化
twadmin -m p -c tw.cfg -p tw.pol -S site.key > twpol.txt
perl twpolmake.pl twpol.txt > twpol.txt.new
twadmin -m P -c tw.cfg -p tw.pol -S site.key -Q $SITEPASS twpol.txt.new > /dev/null
rm -f twpol.txt* *.bak
# データベース更新
rm -f /usr/local/tripwire/lib/tripwire/*.twd*
tripwire -m i -s -c tw.cfg -P $LOCALPASS
実行属性を付加
chmod 700 /etc/cron.daily/tripwire-check
chkrootkitインストール
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
mkdir ~/bin
mv chkrootkit-0.50/chkrootkit ~/bin
rm -rf chkrootkit-0.50/ rm -f chkrootkit.tar.gz
※2016/10/30の更新で、chkrootkit.tar.gzやchkrootkit-051.tar.gzは使えない(テキストっぽい)ので、chkrootkit-050.tar.gzをDLかな?
内容を確認
chkrootkit | grep INFECTED
Searching for Suckit rootkit… Warning: /sbin/init INFECTED
原因を確認
rpm -V `rpm -qf /sbin/init`
差分が出なければ誤検知なので、
/root/chkrootのINFECTEDの部分から/sbin/initを除外する
echo "Warning: ${ROOTDIR}sbin/init INFECTED"
を
if ! rpm -V `rpm -qf /sbin/init` > /dev/null 2>&1
then
echo "Warning: ${ROOTDIR}sbin/init INFECTED"
fi
に変更
コマンドをバックアップ
mkdir chkrootkitcmd
cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed ssh uname` chkrootkitcmd/
chkrootkit -p /root/chkrootkitcmd|grep INFECTED
zip -r chkrootkitcmd.zip chkrootkitcmd/
Clam AntiVirusインストール
http://impov.hatenablog.com/entry/2016/08/22/002350を参考にする様にする
yum -y install clamav clamav-scanner-systemd clamav-update
設定ファイル(/etc/clamd.d/scan.conf)を編集
# Comment or remove the line below.
# Example ←コメントアウトする
# 以下はお好みで、該当部分を探しコメントを外して有効化
LogFile /var/log/clamd.scan
LogFileMaxSize 2M
LogRotate yes
# ローカルソケットの設定を探しコメントを外して有効化
LocalSocket /var/run/clamd.scan/clamd.sock
# ユーザーをコメントアウトして root で動作させる
#User clamscan
# スキャンしないディレクトリを設定しておく(必要に応じて適宜ディレクトリ追加)
# Don't scan files and directories matching regex
# This directive can be used multiple times
# Default: scan all
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/home/share/
ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
データベース更新用の設定ファイル(/etc/freshclam.conf)を編集
# Comment or remove the line below.
# Example ←コメントアウト
# 以下はお好みで、該当部分を探しコメントを外して有効化
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogRotate yes
データベース更新用の設定ファイル(/etc/sysconfig/freshclam)を編集
# FRESHCLAM_DELAY=disabled-warn # REMOVE ME 最終行をコメントアウト
実行、自動実行
systemctl start clamd@scan
systemctl enable clamd@scan
データベース更新
freshclam
NTPサーバーインストール
インストしていない場合のみ
yum -y install chrony
vi /etc/chronyd.conf
#server 0.centos.pool.ntp.org iburst ←コメントアウト
#server 1.centos.pool.ntp.org iburst ←コメントアウト
#server 2.centos.pool.ntp.org iburst ←コメントアウト
#server 3.centos.pool.ntp.org iburst ←コメントアウト
server ntp1.jst.mfeed.ad.jp ←追加
server ntp2.jst.mfeed.ad.jp ←追加
server ntp3.jst.mfeed.ad.jp ←追加
systemctl restart chronyd
systemctl enable chronyd
ps.2016.10.31 Syntax Highlighter と エディタが相性が悪く、ソース部分の文字化けが酷いので手修正。一部間違っているかもしれない。