8
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7 インストール後のセキュリティ対策

Last updated at Posted at 2017-08-01

はじめに

セキュリティ対策を行います。

  • 管理用アカウントを作成
  • 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
/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
/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
/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
/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
/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
/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
/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
/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
/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
 誤)行進履歴
 正)更新履歴

8
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?