CentOS 7 rootkit検知ツールインストール

■chkrootkitインストール

[root@server1 ~]# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz ← chkrootkitダウンロード

[root@server1 ~]# tar zxvf chkrootkit.tar.gz ← chkrootkit展開

[root@server1 ~]# mkdir -p ~/bin && mv chkrootkit-0.50/chkrootkit ~/bin ← chkrootkitを移動

[root@server1 ~]# rm -rf chkrootkit-0.50/ ← chkrootkit展開先ディレクトリを削除

[root@server1 ~]# rm -f chkrootkit.tar.gz ← ダウンロードしたchkrootkitを削除

■chkrootkit確認

[root@server1 ~]# chkrootkit | grep INFECTED ← chkrootkit実行
上記chkrootkit実行結果として"INFECTED"という行が表示されなければ問題なし

■chkrootkit定期自動実行設定

[root@server1 ~]# vi /etc/cron.daily/chkrootkit ← chkrootkit実行スクリプトを毎日自動実行されるディレクトリへ作成
#!/bin/bash

PATH=/usr/bin:/bin:/root/bin

TMPLOG=`mktemp`

# chkrootkit実行
chkrootkit > $TMPLOG

# ログ出力
cat $TMPLOG | logger -t chkrootkit

# SMTPSのbindshell誤検知対応
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
   [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
        sed -i '/465/d' $TMPLOG
fi

# rootkit検知時のみroot宛メール送信
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root

rm -f $TMPLOG

[root@server1 ~]# chmod 700 /etc/cron.daily/chkrootkit ← chkrootkit実行スクリプトへ実行権限付加

これで毎日定期的にrootkitがインストールされていないかチェックされ、インストールされていた場合はroot宛にメールが届くようになる。また、chkrootkitの実行結果は/var/log/messagesに保存される。

■chkrootkitで使用する安全なコマンドの確保
chkrootkitが使用するコマンド群が既に改竄されていた場合、rootkitを正常に検出できなくなるので、chkrootkitが使用するコマンド群をコピーしておき、必要な場合にはそのコマンド群を使用してchkrootkitを実行する。

chkrootkit使用コマンド退避先ディレクトリ作成
[root@server1 ~]# mkdir chkrootkitcmd 

chkrootkit使用コマンドを退避先ディレクトリへコピー
[root@server1 ~]# cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed ssh uname` chkrootkitcmd/

退避したchkrootkit使用コマンドを使用してchkrootkit実行
[root@server1 ~]# chkrootkit -p /root/chkrootkitcmd|grep INFECTED

chkrootkit使用コマンド退避先ディレクトリ圧縮
[root@server1 ~]# zip -r chkrootkitcmd.zip chkrootkitcmd/

chkrootkit使用コマンド退避先ディレクトリ削除
[root@server1 ~]# rm -rf chkrootkitcmd

mailコマンドでzipファイル添付メールを送信するのに必要なuuencodeコマンドインストール
[root@server1 ~]# yum -y install sharutils

chkrootkit使用コマンド(圧縮版)をroot宛にメール送信
[root@server1 ~]# uuencode chkrootkitcmd.zip chkrootkitcmd.zip|mail root

chkrootkit使用コマンド(圧縮版)削除
[root@server1 ~]# rm -f chkrootkitcmd.zip

■Suckit誤検知の修正
Suckit による /sbin/init の改ざん誤検知対策

[root@server1 ~]# chkrootkit | grep INFECTED
Searching for Suckit rootkit... Warning: /sbin/init INFECTED

chkrootkitの修正

[root@server1 ~]# vi /root/bin/chkrootkit
   ### Suckit
   if [ -f ${ROOTDIR}sbin/init ]; then
      if [ "${QUIET}" != "t" ];then printn "Searching for Suckit rootkit... "; fi
      if [ ${SYSTEM} != "HP-UX" ] && ( ${strings} ${ROOTDIR}sbin/init | ${egrep} 'HOME='   || \
              cat ${ROOTDIR}/proc/1/maps | ${egrep} "init." ) >/dev/null 2>&1
        then
      if [ "`md5sum ${ROOTDIR}sbin/init | cut -d ' ' -f 1`" = "`grep 'sbin/init$' /sbin/init | cut -d ' ' -f 1`" ]
      then
        echo "Warning: ${ROOTDIR}sbin/init INFECTED"
      fi
      else
         if [ -d ${ROOTDIR}/dev/.golf ]; then
            echo "Warning: Suspect directory ${ROOTDIR}dev/.golf"
         else
            if [ "${QUIET}" != "t" ]; then echo "nothing found"; fi
         fi
      fi
   fi

chkrootkit確認

[root@server1 ~]# chkrootkit | grep INFECTED
 "INFECTED"という行が表示されなくなった

IPアドレス自動更新DDNS(ddo.jp)

今使ってるスクリプトでDDNSの自動更新がうまくいかないこともあり、たびたびアクセスできなくなることがあったので、自動更新のスクリプトを見直すことに。このサイトはddo.jpのDDNSを使ってるので、いろいろ調べて見たら、こちらのサイトで紹介されてるスクリプトが良さそうなので使わせてもらうことにした。
自動更新の動きとしては
  (1)ddo.jpサイトで用意しているリモートIP確認サイトで現在のIPを確認。
  (2)前回更新時のIPと変更時間をテンポラリーファイルから読み込む。
  (3)前回更新時とIP同じで、かつ前回更新時から1週間以上経ってなかったら終了。
  (4)そうでなかったら、DDNSを更新。変更内容をテンポラリーファイルとログに書き込む。
という感じで自動更新されるとのこと。あとこのスクリプトは、lynxが使えることが前提となってるようなので、まずlynxをインストールすることにする。
■ lynxのインストール

[root@server ~]# yum -y install lynx

■ 自動更新スクリプトの作成

[root@server1 ~]# cd /usr ← /usr ディレクトリへ移動
[root@server1 usr]# mkdir -p ddns ← ddns ディレクトリの作成
[root@server1 usr]# cd ddns ← ddns ディレクトリへ移動
[root@server1 ddns]# vi ddo.jpIP_upgrade.pl ← 自動更新スクリプトの作成
#!/usr/bin/perl
#
# Check ip address, and update DDNS for "ddo.jp"
#
#
# parameters
# "ddo.jp" ID & PASSWD
local $ID     = 'ドメイン'; # Login ID(It serves as a domain name)
local $PASSWD = 'パスワード'; # Login password
# file names
local $CRT_IPF = '/tmp/CRT_IP2.dat';
local $LOG     = '/var/log/ddns.log';
# Check current ip address on the appointed URL web page.
local $CHK_URL="http://info.ddo.jp/remote_addr.php";
#
local $INTERVAL = 604800;       # 1 weeks
#
$ENV{'PATH'}="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin";
#---------------------------------------------------
# main
my ($NEW_IP,$CRT_IP,$CRT_TIME,$i);
# get current ip address which set as the domain.
$CRT_IP   = "";
$CRT_TIME = "0";
open(INPUT, $CRT_IPF);
foreach(<INPUT>){
chop;
/^IP:/   && do{ $CRT_IP   = $' };
/^TIME:/ && do{ $CRT_TIME = $' };
}
close(INPUT);
# check a assigned ip address
open(INPUT, "lynx -dump \"$CHK_URL\" | ");
foreach(<INPUT>){
/([0-9\.].*)/ && do{ $NEW_IP = $1};
}
close(INPUT);
# Lapsed time from the last update
$i = time() - $CRT_TIME;
# change DDNS, supposing the IP address is changed.
if ( ( ($NEW_IP ne "" )&&($CRT_IP ne $NEW_IP) ) || ( $i > $INTERVAL) ) {
# change DDNS
open(INPUT2,
"lynx -dump \"http://ddo.jp/dnsupdate.php?dn=$ID&ip=$NEW_IP&pw=$PASSWD\" |");
# check whether change of DDNS has been successful
foreach(<INPUT2>){
/SUCCESS: / && do{ $TEMP = 1;};
}
if( $TEMP == 1){
# save a new IP address.
$i = time();
open (OUTPUT ,">$CRT_IPF");
print OUTPUT "IP:$NEW_IP\nTIME:$i\n";
close OUTPUT;
# write a message on the log file
$time = conv_date(time());
open(LOG, ">> $LOG");
print(LOG $time . ":change \"" .
$ID . ".ddo.jp\" <= " . $NEW_IP . "\n");
close(LOG);
}
}
sub conv_date{
my ($times,$mode) = @_;
my ($sec,$min,$hour,$mday,$month,$year,$wday);
($sec,$min,$hour,$mday,$month,$year,$wday,undef,undef) = localtime($times);
$month++;
$year += 1900;
$times = sprintf("%d/%02d/%02d %02d:%02d", $year, $month, $mday,
$hour, $min);
return($times);
}

■ スクリプトに実行権限を与える

[root@server1 ddns]# chmod +x ddo.jpIP_upgrade.pl

■ このスクリプトを毎時2分、5分、8分と3分おきに実行するように /etc/cron.d/ に追加。※メインサーバーのみ

[root@server1 ~]# echo "2-59/3 * * * * root /usr/ddns/ddo.jpIP_upgrade.pl" > /etc/cron.d/ddns

■テンポラリーファイルとログファイルの作成

[root@server1 ~]# echo -n "" > /tmp/CRT_IP2.dat
[root@server1 ~]# echo -n "" > /var/log/ddns.log

■ 停電などで再起動させたとき自動で実行するように設定※メインサーバーのみ

[root@server1 ~]# vi /etc/rc.local ← システム起動時実行コマンド定義ファイル編集
以下を最終行へ追加
chmod +x /usr/ddns/ddo.jpIP_upgrade.pl
/usr/ddns/ddo.jpIP_upgrade.pl

CentOS 7 dovecotインストール

■dovecotのインストール

[root@server1 ~]# yum -y install dovecot
読み込んだプラグイン:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * centosplus: mirrors.btte.net
 * epel: ftp.cuhk.edu.hk
 * extras: ftp.riken.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: mirrors.btte.net
45 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ dovecot.x86_64 1:2.2.10-4.el7_0.1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package             アーキテクチャー   バージョン                        リポジトリー         容量
====================================================================================================
インストール中:
 dovecot             x86_64             1:2.2.10-4.el7_0.1                updates             3.2 M

トランザクションの要約
====================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 3.2 M
インストール容量: 9.7 M
Downloading packages:
dovecot-2.2.10-4.el7_0.1.x86_64.rpm                                          | 3.2 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:dovecot-2.2.10-4.el7_0.1.x86_64                                   1/1
  検証中                  : 1:dovecot-2.2.10-4.el7_0.1.x86_64                                   1/1

インストール:
  dovecot.x86_64 1:2.2.10-4.el7_0.1

完了しました!

■dovecotの設定ファイルの編集

[root@server1 ~]# vi /etc/dovecot/dovecot.conf
Protocols we want to be serving.
#protocols = imap pop3 lmtp
↓
protocols = imap pop3 lmtp ← #を外す
# Space separated list of trusted network ranges. Connections from these
# IPs are allowed to override their IP addresses and ports (for logging and
# for authentication checks). disable_plaintext_auth is also ignored for
# these networks. Typically you'd specify your IMAP proxy servers here.
#login_trusted_networks =
disable_plaintext_auth = no ← プレインテキストのパスワード認証(追記)

メールボックス格納形式をMaildir形式とする
[root@server1 ~]# vi /etc/dovecot/conf.d/10-mail.conf
#   mail_location = maildir:~/Maildir
#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# 
#
#mail_location =
↓
mail_location = maildir:~/Maildir ← #を外し maildir:~/Maildirを追記

■dovecotの起動

[root@server1 ~]# systemctl start dovecot

■dovecotの自動起動設定

[root@server1 ~]# systemctl enable dovecot
ln -s '/usr/lib/systemd/system/dovecot.service' '/etc/systemd/system/multi-user.target.wants/dovecot.service'

POP/IMAPサーバを使うには、ルーターの設定が必要なので、110番(POPの場合)または143番(IMAPの場合)のポートを開ける。

CentOS 7 パッケージ管理(yum)

■yum-prioritiesのインストール
yum-plugin-prioritiesとは、サードパーティ製のリポジトリを追加した際にどちらを優先するか優先順位をつけるプラグイン。

[root@server1 ~]# yum -y install yum-plugin-priorities
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.fairway.ne.jp
* extras: mirror.fairway.ne.jp
* updates: mirror.fairway.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-plugin-priorities.noarch 0:1.1.31-25.el7_0 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
====================================================================================================
インストール中:
yum-plugin-priorities noarch 1.1.31-25.el7_0 updates 23 k

トランザクションの要約
====================================================================================================
インストール 1 パッケージ

総ダウンロード容量: 23 k
インストール容量: 28 k
Downloading packages:
警告: /var/cache/yum/x86_64/7/updates/packages/yum-plugin-priorities-1.1.31-25.el7_0.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
yum-plugin-priorities-1.1.31-25.el7_0.noarch.rpm の公開鍵がインストールされていません
yum-plugin-priorities-1.1.31-25.el7_0.noarch.rpm | 23 kB 00:00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-0.1406.el7.centos.2.3.x86_64 (@anaconda)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : yum-plugin-priorities-1.1.31-25.el7_0.noarch 1/1
検証中 : yum-plugin-priorities-1.1.31-25.el7_0.noarch 1/1

インストール:
yum-plugin-priorities.noarch 0:1.1.31-25.el7_0

完了しました!

設定ファイル/etc/yum/pluginconf.d/priorities.confを変更

[root@server1 ~]# vi /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
check_obsoletes = 1 ← 追加

■CentOS-Base.repoの編集
CentOS-Base.repoは優先度を高く(priority=1)しておく。

[root@server1 ~]# vi /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
priority=1 ← 追加 priorityとは優先度で、1の方が優先度は高くなる。(未設定の場合は99)
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
priority=1 ← 追加
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
priority=1 ← 追加
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
priority=1 ← 追加
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1 ← 0から1に変更
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

■EPELリポジトリのインストール

[root@server1 ~]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
--2015-03-15 17:00:31--  http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
dl.fedoraproject.org (dl.fedoraproject.org) をDNSに問いあわせています... 209.132.181.24, 209.132.181.27, 209.132.181.25, ...
dl.fedoraproject.org (dl.fedoraproject.org)|209.132.181.24|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 14524 (14K) [application/x-rpm]
`epel-release-7-5.noarch.rpm' に保存中

100%[======================================>] 14,524      --.-K/s 時間 0.1s    

2015-03-15 17:00:31 (118 KB/s) - `epel-release-7-5.noarch.rpm' へ保存完了 [14524/14524]

[root@server1 ~]# rpm -ivh epel-release-7-5.noarch.rpm
警告: epel-release-7-5.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:epel-release-7-5                 ################################# [100%]

[root@server1 ~]# rm -f epel-release-* ← ダウンロードしたファイルを削除

■epel.repoを確認

[root@server1 ~]# 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=1 ← 1 に設定
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

EPELリポジトリからインストールする場合

[root@server1 ~]# yum --enablerepo=epel -y install パッケージ

■Repoforgeリポジトリのインストール

[root@server1 ~]# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@server1 ~]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm を取得中
準備しています... ################################# [100%]
更新中 / インストール中...
1:rpmforge-release-0.5.3-1.el7.rf ################################# [100%]
[root@server1 ~]# rm -f rpmforge-release-*  ← ダウンロードしたファイルを削除

■Repoforgeを確認

[root@server1 ~]# vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 7 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el7/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled=0 ← 1 に設定
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgchecki = 1

[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el7/en/$basearch/extras
mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-testing]
name = RHEL $releasever - RPMforge.net - testing
baseurl = http://apt.sw.be/redhat/el7/en/$basearch/testing
mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge-testing
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-testing
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

Repoforgeリポジトリからインストールする場合

[root@server1 ~]# yum --enablerepo=rpmforge -y install パッケージ

■yumのデータベース情報更新
ローカルに保存されているrpmヘッダ情報を最新の情報に更新。

yumのデータベース情報更新
[root@server1 ~]# yum list
インストールパッケージの確認
[root@server1 ~]# yum list installed

■アップデート情報の確認

アップデート情報の確認
[root@server1 ~]# yum check-update

■一括アップデート
インストールされているパッケージを全てアップデート。

パッケージの一括アップデート
[root@server1 ~]# yum update

アップデートしてよいかの問い合わせに全て” y “で回答するためには -y オプションを指定。

パッケージの一括アップデート
[root@server1 ~]# yum -y update

■yumによるパッケージ更新時にエラーが表示される場合
yumコマンドでパッケージの更新を行った際に、エラーが表示されることがある。これはyumのデータベースが壊れていることが考えられるので、以下のコマンドを実行してyumのデータベースをクリアしてみる。

[root@server1 ~]# yum clean all
[root@server1 ~]# yum update

■その他のコマンド

[root@server1 ~]# /bin/yum --help
読み込んだプラグイン:fastestmirror, langpacks, priorities
Usage: yum [options] COMMAND

List of Commands:

check          rpmdb の問題を確認する
check-update   更新に利用できるパッケージを確認する
clean          キャッシュデータを削除する
deplist        パッケージの依存性の一覧を表示する
distribution-synchronization 最新の利用可能なバージョンへインストール済みパッケージを同期する
downgrade      パッケージのダウングレード
erase          システムから削除するパッケージ
fs             Creates filesystem snapshots, or lists/deletes current snapshots.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
groups         グループ情報の表示または使用
help           役立つ使い方のメッセージを表示する
history        トランザクション履歴を表示、使用する
info           パッケージもしくはパッケージのグループについての詳細を表示する
install        システムにパッケージをインストールする
langavailable  Check available languages
langinfo       List languages information
langinstall    Install appropriate language packs for a language
langlist       List installed languages
langremove     Remove installed language packs for a language
list           パッケージグループの一覧を表示する
load-transaction filename から保存済みトランザクションを読み込む
makecache      メタデータキャッシュを生成する
provides       指定値を提供するパッケージを検索する
reinstall      パッケージの再インストール
repo-pkgs      Treat a repo. as a group of packages, so we can install/remove all of them
repolist       ソフトウェアリポジトリーの構成を表示する
search         指定した文字列でパッケージの詳細を検索する
shell          対話型の yum シェルを実行する
swap           Simple way to swap packages, instead of using shell
update         システムのパッケージを更新する
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo     Acts on repository update information
upgrade        不要になったパッケージを考慮しながらパッケージを更新する
version        ホストの利用できるリポジトリーのバージョンを表示する


Options:
  -h, --help            このヘルプ メッセージを表示して終了する
  -t, --tolerant        エラーを黙認する
  -C, --cacheonly       キャッシュから完全に実行し、キャッシュを更新しません
  -c [config file], --config=[config file]
                        構成ファイルの場所
  -R [minutes], --randomwait=[minutes]
                        コマンドの最大待ち時間
  -d [debug level], --debuglevel=[debug level]
                        デバッグ情報の出力レベル
  --showduplicates      一覧/検索コマンドのリポジトリーの重複の表示
  -e [error level], --errorlevel=[error level]
                        エラー出力レベル
  --rpmverbosity=[debug level name]
                        rpm のデバッグ情報の出力レベル
  -q, --quiet           静かに処理をする
  -v, --verbose         冗長に処理をする
  -y, --assumeyes       すべての問い合わせに「yes」で答える
  --assumeno            すべての質問にいいえを回答します
  --version             Yum のバージョンを表示して終了する
  --installroot=[path]  インストールのベース ディレクトリーを設定する
  --enablerepo=[repo]   ひとつ以上のリポジトリーを有効にする (ワイルドカード許可)
  --disablerepo=[repo]  ひとつ以上のリポジトリーを無効にする (ワイルドカード許可)
  -x [package], --exclude=[package]
                        名前かワイルドカードでパッケージを除外する
  --disableexcludes=[repo]
                        main、あるリポジトリー、またはすべてからの除外を無効にします。
  --disableincludes=[repo]
                        disable includepkgs for a repo or for everything
  --obsoletes           更新中に不要な処理を有効にします
  --noplugins           Yum プラグインを無効にする
  --nogpgcheck          GPG 署名の確認を無効にする
  --disableplugin=[plugin]
                        名前でプラグインを無効にする
  --enableplugin=[plugin]
                        名前でプラグインを有効にする
  --skip-broken         依存性関連に問題があるパッケージを飛ばす
  --color=COLOR         色を使うかどうか制御する
  --releasever=RELEASEVER
                        yum 設定と repo ファイルに $releasever の値を設定する
  --downloadonly        don't update, just download
  --downloaddir=DLDIR   specifies an alternate directory to store packages
  --setopt=SETOPTS      全体設定とリポジトリー オプションの任意に設定する
  --bugfix              Include bugfix relevant packages, in updates
  --security            Include security relevant packages, in updates
  --advisory=ADVS, --advisories=ADVS
                        Include packages needed to fix the given advisory, in
                        updates
  --bzs=BZS             Include packages needed to fix the given BZ, in
                        updates
  --cves=CVES           Include packages needed to fix the given CVE, in
                        updates
  --sec-severity=SEVS, --secseverity=SEVS
                        Include security relevant packages matching the
                        severity, in updates

  プラグインのオプション:
    --samearch-priorities
                        Priority-exclude packages based on name + arch

■yumのパッケージ自動更新設定
yum-cron のインストール

[root@server1 ~]# yum -y install yum-cron
読み込んだプラグイン:fastestmirror, langpacks, priorities
base | 3.6 kB 00:00:00
centosplus | 3.4 kB 00:00:00
epel/x86_64/metalink | 5.9 kB 00:00:00
epel | 4.4 kB 00:00:00
extras | 3.4 kB 00:00:00
rpmforge | 1.9 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/3): epel/x86_64/group_gz | 250 kB 00:00:00
(2/3): centosplus/7/x86_64/primary_db | 1.8 MB 00:00:00
(3/3): epel/x86_64/primary_db | 3.1 MB 00:00:01
(1/3): epel/x86_64/updateinfo | 1.7 kB 00:00:00
(2/3): epel/x86_64/pkgtags | 1.1 MB 00:00:00
(3/3): rpmforge/primary_db | 125 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.fairway.ne.jp
* centosplus: mirror.fairway.ne.jp
* epel: mirror.premi.st
* extras: mirror.fairway.ne.jp
* rpmforge: ftp.kddilabs.jp
* updates: mirror.fairway.ne.jp
61 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-cron.noarch 0:3.4.3-118.el7.centos を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
====================================================================================================
インストール中:
yum-cron noarch 3.4.3-118.el7.centos base 53 k

トランザクションの要約
====================================================================================================
インストール 1 パッケージ

総ダウンロード容量: 53 k
インストール容量: 50 k
Downloading packages:
yum-cron-3.4.3-118.el7.centos.noarch.rpm | 53 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
インストール中 : yum-cron-3.4.3-118.el7.centos.noarch 1/1
検証中 : yum-cron-3.4.3-118.el7.centos.noarch 1/1

インストール:
yum-cron.noarch 0:3.4.3-118.el7.centos

完了しました!

■yum-cron設定

[root@server1 ~]# vi /etc/yum/yum-cron.conf ← yum-cron設定
# Whether updates should be applied when they are available. Note
# that download_updates must also be yes for the update to be applied.
apply_updates = no
↓
apply_updates = yes

■パッケージ自動更新 yum-cron の起動

[root@server1 ~]# systemctl start yum-cron

■パッケージ自動更新 yum-cron の自動起動設定

[root@server1 ~]# systemctl enable yum-cron
[root@server1 ~]# systemctl status yum-cron
yum-cron.service - Run automatic yum updates as a cron job
Loaded: loaded (/usr/lib/systemd/system/yum-cron.service; enabled)
Active: active (exited) since 火 2014-07-15 21:21:52 JST; 1min 45s ago
Main PID: 5382 (code=exited, status=0/SUCCESS)

7月 15 21:21:52 server2.yokensaka.com systemd[1]: Started Run automatic yum updates as a cron job.
Hint: Some lines were ellipsized, use -l to show in full.

■サーバ管理に必要なベースパッケージ群と開発ツールパッケージ群をインストール

[root@server1 ~]# yum -y groupinstall base "Development tools"

yum updateでのエラーメッセージ

/etc/cron.hourly/0yum-hourly.cron:

Not using downloaded repomd.xml because it is older than what we have:
Current : Wed Oct 29 11:09:46 2014
Downloaded: Tue Sep 23 20:43:25 2014
Not using downloaded repomd.xml because it is older than what we have:
Current : Wed Oct 29 08:44:59 2014
Downloaded: Thu Oct 23 21:18:58 2014

対応策

[root@server1 ~]# yum clean all
読み込んだプラグイン:fastestmirror, langpacks, priorities
リポジトリーを清掃しています: base centosplus epel extras rpmforge updates
Cleaning up everything
Cleaning up list of fastest mirrors

これで解決するはず

CentOS 7 インストール後の設定

Linuxのコマンドは「Linuxコマンド逆引き大全」で探すことができる。

■rootになれるユーザを制限

[root@server1 ~]# usermod -G wheel higo ← rootになれるユーザを管理者(higo)のみにする
[root@server1 ~]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid ← #を外す
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
次に以下のように入力して/etc/login.defs の最終行に SU_WHEEL_ONLY yes を追加。
[root@server1 ~]# echo "SU_WHEEL_ONLY yes" >> /etc/login.defs

■SELinux の無効化

[root@server1 ~]# getenforce
Enforcing
[root@server1 ~]# setenforce 0
[root@server1 ~]# getenforce
Permissive
[root@server1 ~]# vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
↓
SELINUX=disabled ← システム起動時にSELinuxを無効化
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

■ファイアーウォール(iptables)の無効化

[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# systemctl disable firewalld
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'

設定を有効にする為再起動
[root@server1 ~]# reboot

■logwatchをインストールしてサーバー監視

[root@server1 ~]# yum -y install logwatch
読み込んだプラグイン:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* centosplus: ftp.riken.jp
* epel: ftp.cuhk.edu.hk
* extras: ftp.riken.jp
* rpmforge: ftp.kddilabs.jp
* updates: ftp.riken.jp
45 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ logwatch.noarch 0:7.4.0-28.20130522svn140.el7 を インストール
--> 依存性の処理をしています: perl(Sys::MemInfo) のパッケージ: logwatch-7.4.0-28.20130522svn140.el7.noarch
--> 依存性の処理をしています: perl(Sys::CPU) のパッケージ: logwatch-7.4.0-28.20130522svn140.el7.noarch
--> 依存性の処理をしています: perl(Date::Manip) のパッケージ: logwatch-7.4.0-28.20130522svn140.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ perl-Date-Manip.noarch 0:6.41-2.el7 を インストール
---> パッケージ perl-Sys-CPU.x86_64 0:0.54-3.el7 を インストール
---> パッケージ perl-Sys-MemInfo.x86_64 0:0.91-7.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
====================================================================================================
インストール中:
logwatch noarch 7.4.0-28.20130522svn140.el7 base 400 k
依存性関連でのインストールをします:
perl-Date-Manip noarch 6.41-2.el7 base 1.2 M
perl-Sys-CPU x86_64 0.54-3.el7 base 14 k
perl-Sys-MemInfo x86_64 0.91-7.el7 base 15 k

トランザクションの要約
====================================================================================================
インストール 1 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 1.6 M
インストール容量: 14 M
Downloading packages:
(1/4): perl-Sys-CPU-0.54-3.el7.x86_64.rpm | 14 kB 00:00:00
(2/4): perl-Sys-MemInfo-0.91-7.el7.x86_64.rpm | 15 kB 00:00:00
(3/4): logwatch-7.4.0-28.20130522svn140.el7.noarch.rpm | 400 kB 00:00:00
(4/4): perl-Date-Manip-6.41-2.el7.noarch.rpm | 1.2 MB 00:00:01
----------------------------------------------------------------------------------------------------
合計 881 kB/s | 1.6 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : perl-Sys-CPU-0.54-3.el7.x86_64 1/4
インストール中 : perl-Date-Manip-6.41-2.el7.noarch 2/4
インストール中 : perl-Sys-MemInfo-0.91-7.el7.x86_64 3/4
インストール中 : logwatch-7.4.0-28.20130522svn140.el7.noarch 4/4
検証中 : logwatch-7.4.0-28.20130522svn140.el7.noarch 1/4
検証中 : perl-Sys-MemInfo-0.91-7.el7.x86_64 2/4
検証中 : perl-Date-Manip-6.41-2.el7.noarch 3/4
検証中 : perl-Sys-CPU-0.54-3.el7.x86_64 4/4

インストール:
logwatch.noarch 0:7.4.0-28.20130522svn140.el7

依存性関連をインストールしました:
perl-Date-Manip.noarch 0:6.41-2.el7 perl-Sys-CPU.x86_64 0:0.54-3.el7
perl-Sys-MemInfo.x86_64 0:0.91-7.el7

完了しました!

logwatch はデフォルトで毎日1回ログレポートをメール送信する定期実行の cron が設定されている。

[root@server1 ~]# vi /etc/cron.daily/0logwatch
#!/bin/sh

#Set logwatch location
LOGWATCH_SCRIPT="/usr/sbin/logwatch"
#Add options to this line. Most options should be defined in /etc/logwatch/conf/logwatch.conf,
#but some are only for the nightly cronrun such as --output mail and should be set here.
#Other options to consider might be "--format html" or "--encode base64", man logwatch for more details.
OPTIONS="--output mail"

#Call logwatch
$LOGWATCH_SCRIPT $OPTIONS

exit 0

CentOS 7 のインストール

■CentOS 7 のISOイメージをダウンロード
http://www.centos.org/download/
「Download CentOS」の真ん中にある「DVD ISO」をクリック。
ミラーサイトのリストが表示されるので、「Actual Country」の中のどれかをクリック。
クリックするとISOイメージファイルのダウンロードがはじまる。
あにょはrikenからダウンロード
http://ftp.riken.jp/Linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso

■CentOS 7 x86_64 のインストール

1.インストーラーの起動
ダウンロードしたISOイメージをメディアに焼き、インストールDVDをDVD-ドライブに挿入し、電源を入れる。
※BIOSの設定で1番最初にDVDからブートできるようになっている必要である。

「Install CentOS 7」を選択し、Enterキーを押す。

2.言語の設定

「日本語」を選択し、右下の「続行」をクリック。

3.インストールの概要

問題のある箇所に「!」アイコンが表示されているので設定していく。

4.インストール先を選択

「ローカルの標準ディスク」でインストール先のディスクにチェックを入れ、上部の「完了(D)」をクリック。

「パーティション構成」は「自動構成のパーティション構成」を選択

5.ネットワークとホスト名を選択

ホスト名(H) を設定
server1.yokensaka.com → ホスト名は自分の環境に合わせて設定。

「設定」をクリック。

『IPv4のセッティング』タブで以下のように設定する。
【方式(M)】:手動を選択

【アドレス】
アドレス: 192.168.1.4 → 自分のサーバIPアドレスを設定
ネットマスク: 24bitマスク (255.255.255.0)
ゲートウェイ: 192.168.1.1

【DNSサーバ(V)】: 192.168.1.1

『IPv6のセッティング』タブで以下のように設定する。
【方式(M)】:無視するを選択

「保存(S)」をクリック

ネットワークのオン/オフはオンにしておく。

「完了(D)」をクリック

6.ソフトウェアの選択

ベース環境
「GNOME Desktop」を選択

選択した環境のアドオン
「GNOME アプリケーション」を選択
「互換ライブラリ」を選択
「開発ツール」を選択

「完了(D)」をクリック

7.インストール開始

「インストールの概要」の設定を完了したら、画面右下の「インストールの開始」をクリック。

8.ユーザー設定

「root パスワード」を選択し、インストール中に「パスワード」を設定。
rootパスワード(P):xxxxxxxxxx
確認(C):xxxxxxxxxx
「完了(D)」ボタンをクリックするとインストール画面に戻る。

「ユーザーの作成」を選択
一般ユーザを作成。インストール中に一般ユーザーの作成
フルネーム(F):
ユーザー名(U):higo
パスワード(P):xxxxxxxxxx
パスワードの確認(C):xxxxxxxxxx

ユーザ名とパスワード、パスワードの確認を入力。
「完了」ボタンをクリックするとインストール画面に戻る。

9.インストール完了

しばらくするとインストールが完了。画面の右下の「再起動」を押してインストールを終了。
※ このときインストール・メディアは抜いておく。

10. 初期セットアップ

「ライセンス情報(L)」をクリック。
「ライセンス契約に同意します(A)」をチェック。
「設定の終了(F)」をクリック。

11. Kdump

「Kdump を有効にしますか (E)」をチェックを外す。
「進む」をクリック。
「はい(Y)」をクリック。
「OK(O)」をクリック。

12. ログイン画面が表示されるのでパスワードを入力してログインし、インストール後の設定をする。

インストール後の設定