はじめに
セキュリティ対策を行います。
- 管理用アカウントを作成
- su コマンドを実行可能なユーザを限定
- root 宛メールの転送設定
- ssh 設定のログイン設定
- アンチウィルス用リポジトリ
- アンチウィルス
- ファイル改ざん検知
設定手順
管理用アカウントを作成
概要
・管理用のユーザアカウントを作成する
・管理ユーザでログインし su コマンドで root ユーザにスイッチする
ユーザ追加
useradd [username]
usermod -G wheel [username]
パスワード変更
passwd [username]
su コマンドを実行可能なユーザを限定
概要
・su コマンドを実行できるユーザを wheel グループのユーザに限定
設定変更
・pam_wheel.so を使う auth をコメントをはずす
cp -p /etc/pam.d/su /etc/pam.d/su.org
vi /etc/pam.d/su
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
root 宛のメールを転送
概要
・root 宛に届くメールを管理者に転送する
インストール
yum -y install mailx
設定変更
・root 宛のメールを管理者に転送
cp -p /etc/aliases /etc/aliases.org
vi /etc/aliases
# Person who should get root's mail
root: [username]
設定反映
newaliases
ssh 設定のログイン設定
概要
・アクセスポートを変更
・root ユーザのログイン禁止
・パスワード使用しないログインの禁止
設定変更
・Port を 10022 に設定
・PermitRootLogin を no に設定
・PermitEmptyPasswords を no に設定
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
vi /etc/ssh/sshd_config
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 10022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
...
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
...
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication yes
設定反映
systemctl restart sshd
アンチウィルス用リポジトリ
概要
・アンチウィルス(clamav)のインストール用にリポジトリを追加、clamav 以外を使用するのであれば不要
・通常時は使用しないように設定
インストール
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
yum -y update epel-release.noarch
設定変更
・epel セクションの enabled を 0 に設定
cp -p /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.org
vi /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
※以降、epel リポジトリを使用する場合は yum コマンドに --enablerepo=epel オプションが必要
アンチウィルス
概要
・アンチウィルスソフト(clamav)を利用する
インストール
yum -y --enablerepo=epel install \
clamav clamav-server \
clamav-server-systemd \
clamav-update clamav-scanner
設定変更
・Example をコメントアウト
cp -p /etc/freshclam.conf /etc/freshclam.conf.org
vi /etc/freshclam.conf
# Comment or remove the line below.
#Example
設定変更
・FRESHCLAM_DELAY をコメントアウト
cp -p /etc/sysconfig/freshclam /etc/sysconfig/freshclam.org
vi /etc/sysconfig/freshclam
### !!!!! REMOVE ME !!!!!!
### REMOVE ME: By default, the freshclam update is disabled to avoid
### REMOVE ME: network access without prior activation
#FRESHCLAM_DELAY=disabled-warn # REMOVE ME
設定変更
・Example をコメントアウト
・LocalSocket のファイルパスを変更
cp -p /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.org
vi /etc/clamd.d/scan.conf
# Comment or remove the line below.
#Example
...
# Path to a local socket file the daemon will listen on.
# Default: disabled (must be specified by a user)
LocalSocket /var/run/clamd.scan/clamd.sock
ウィルス定義ファイルを更新
freshclam
起動設定
systemctl start clamd.scan
systemctl enable clamd.scan
ウィルスチェックスクリプト作成
・epel リポジトリを使用するため、このスクリプトで clamav をアップデート
・ウィルススキャンを実行する
・ウィルスが発見された場合、root ユーザ宛にメールを送信する
vi /etc/cron.daily/virusscan
#!/bin/bash
MAILTO=root
PATH=/usr/bin:/bin
# excludeopt setup
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=^$i"
else
excludeopt="${excludeopt} --exclude=^$i"
fi
done
fi
# clamav update
yum -y update --enablerepo=epel clamav* > /dev/null 2>&1
# virus scan
CLAMSCANTMP=`mktemp`
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" $MAILTO
rm -f $CLAMSCANTMP
実行権限付与
chmod 755 /etc/cron.daily/virusscan
ファイル改ざん検知
概要
・ファイル改ざん検知を実行する
インストール
yum -y install aide
初期データ作成
aide --init
cp -p /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
改ざん検知スクリプト作成
・データを更新する
・検知結果を root ユーザ宛に送付する
vi /etc/cron.daily/aide
#!/bin/bash
MAILTO=root
LOGFILE=/var/log/aide/aide.log
AIDEDIR=/var/lib/aide
/usr/sbin/aide -u > $LOGFILE
cp $AIDEDIR/aide.db.new.gz $AIDEDIR/aide.db.gz
x=$(grep "Looks okay" $LOGFILE | wc -l)
if [ $x -eq 1 ]
then
echo "All Systems Look OK" | /bin/mail -s "AIDE OK" $MAILTO
else
echo "$(egrep "added|changed|removed" $LOGFILE)" | /bin/mail -s "AIDE DETECTED CHANGES" $MAILTO
fi
exit
実行権限付与
chmod 755 /etc/cron.daily/aide
次回予定
ダイナミック DNS でドメインの取得と DiCE の設定
更新履歴
2017/08/04 ウィルスチェックスクリプトを修正。
誤)yum -y update --enablerepo=epel clamav* 2>&1
正)yum -y update --enablerepo=epel clamav* > /dev/null 2>&1
2017/08/08 文言の修正 orz
誤)行進履歴
正)更新履歴