CentOS7

CentOS7インストール St.1

 CATEGORY LINUX

Linux-CentOS7サーバーを構築します。
この記事を執筆時にはCentOS8がリリースされています。
このページでは、OSのインストールから基本設定を行っていきます。

CONTENT

1.CentOS7ダウンロード

CentOS-7-x86_64-Minimal-1908.iso を以下よりダウンロード。
CentOS 7.7.1908
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso

2. インストール

1. Install CentOS 7「 Enter 」
2.使用言語を「日本語」を選択「続行(C)」
インストールの概要
3.インストール先(D)をクリック、インストールするディスクを選択。
ネットワークとホスト名
5.ホスト名(H)を入力。適用(A)
6.設定(O)をクリック、方式(M)を「手動」
7.アドレス「192.168.1.2」ネットマスク「24」ゲートウェイ「192.168.1.1」※任意設定
8.DNSアドレス「192.168.1.1」保存。 ※任意設定 「オン」「完了(D)」
9.インストールの開始(B)
10.ROOTパスワード(R)をクリック、パスワードを入力。完了(D)。
11.インストール完了後「再起動(R)」

3.vi設定

viで行番号を表示する。viで記述。

# vi ~/.vimrc

下記を記述する(新規ファイルでOK)

# set number

4.ユーザー設定

ユーザー「centos7」を追加

# useradd centos7

ユーザー「centos7」のパスワードを設定

# passwd centos7

パスワードを二回入力して終了

# xxxxxxxxxx
# xxxxxxxxxx

ユーザー「centos7」を「wheel」グループに追加

# usermod -G wheel centos7

suできるのをwheelグループのみにする

# vi /etc/pam.d/su

6行目のコメントアウトを削除

# auth       required     pam_wheel.so use_uid

5.SSH Poderosa鍵認証

1.poderosa 設定とツールからSSHタブをクリックして、新しい鍵ペアの作成(G)
2.・アルゴリズム[RSA]・ ビット数[2048]・ パスフレーズ[任意]
3.Poderosaの指示どうりマウスを動かす。
4.秘密鍵を保存(P)secretkey.pem
5.OpenSSH形式で公開鍵を保存(O)openkey.pub
sshログインするユーザーにて[.ssh]ディレクトリを作成し公開鍵を設定する。

ディレクトリ作成

# mkdir ~/.ssh

公開鍵[openkey.pub]をエディタで開いてコピー、[~/.ssh/authorized_keys]にペースト。

# vi ~/.ssh/authorized_keys

パーミッション変更

# chmod 600 ~/.ssh/authorized_keys

パーミッション変更

chmod 700 ~/.ssh

rootにてログイン後、パスワード認証でのsshを禁止にする。
65行目のPasswordAuthenticationをnoに変更

# vi /etc/ssh/sshd_config

sshd再起動

# systemctl restart sshd

6.yumアップデート

yumをupdateします。

# yum update

7.リポジトリインストール

epelリポジトリのインストールをします。

# yum install epel-release

[–enablerepo]で指定しなければ「epel」リポジトリを使用出来ない設定にしておく。6行目の「enabled=1」を「enabled=0」に変更。

# vi /etc/yum.repos.d/epel.repo

Remiリポジトリのインストール

# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Php7.4のインストール※Firewall構築やNginxに使用するのでインストールします。

# yum install --enablerepo=epel,remi-php74 php php-mbstring php-pear php-fpm php-mcrypt php-mysql

8. Tripwire-OSS版インストール

改ざん検知ツールのTripwireをインストールする。
他フリーのHIDSはAIDE(CentOSのBaseリポジトリからインストール可能)もある。

Tripwireインストール

# yum --enablerepo=epel install tripwire

初期設定 [site keyfile passphrase] [local keyfile passphrase] を任意設定で入力。

# tripwire-setup-keyfiles

11行目 LOOSEDIRECTORYCHECKING =「false」 を「true」に変更。※ファイル変更時にディレクトリの通知を無し。

# LOOSEDIRECTORYCHECKING = true

14行目 REPORTLEVEL =「3」を「4」に変更。※数値は「0~4」大きいほうが詳細にレポート。

# REPORTLEVEL = 4

Tripwire設定ファイル作成

# vi /etc/tripwire/twcfg.txt
# twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt

tw.cfgファイル生成後にTripwire設定ファイル削除

# rm -f /etc/tripwire/twcfg.txt

以下でPealスクリプトを使用するのでインストール

# yum install perl

ポリシーファイルがデフォルト設定ではそのまま使えないので、ファイルの有無を設定するPerlスクリプトを作成し、ポリシーファイルを再設定。

# vi /etc/tripwire/twpolmake.pl

twpolmake.pl

#!/usr/bin/perl
# Tripwire Policy File customize tool
# ----------------------------------------------------------------
# Copyright (C) 2003 Hiroaki Izumi
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
# ----------------------------------------------------------------
# Usage:
#    perl twpolmake.pl {Pol file}
# ----------------------------------------------------------------
#
$POLFILE=$ARGV[0];

open(POL,"$POLFILE") or die "open error: $POLFILE" ;
my($myhost,$thost) ;
my($sharp,$tpath,$cond) ;
my($INRULE) = 0 ;

while (<POL>) {
    chomp;
    if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) {
        $myhost = `hostname` ; chomp($myhost) ;
        if ($thost ne $myhost) {
            $_="HOSTNAME=\"$myhost\";" ;
        }
    }
    elsif ( /^{/ ) {
        $INRULE=1 ;
    }
    elsif ( /^}/ ) {
        $INRULE=0 ;
    }
    elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) {
        $ret = ($sharp =~ s/\#//g) ;
        if ($tpath eq '/sbin/e2fsadm' ) {
            $cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;
        }
        if (! -s $tpath) {
            $_ = "$sharp#$tpath$cond" if ($ret == 0) ;
        }
        else {
            $_ = "$sharp$tpath$cond" ;
        }
    }
    print "$_\n" ;
}
close(POL) ;

ポリシーファイル最適化

# perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new

ポリシーファイル作成

# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt.new

ポリシーファイル削除

# rm -f /etc/tripwire/twpol.txt*

データベース作成

# tripwire -m i -s -c /etc/tripwire/tw.cfg

tripwire実行

# tripwire -m c -s -c /etc/tripwire/tw.cfg

変更がわかっているディレクトリやファイルを非検知にする

# ポリシーファイル作成
twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt

# Tripwireデータベース除外'hostname'は任意入力
echo ! "/var/lib/tripwire/`hostname`.twd ;" >> /etc/tripwire/twpol.txt

# ログディレクトリ除外
869行目をコメントアウト

# ポリシーファイル作成
twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt

# ポリシーファイル削除
rm -f /etc/tripwire/twpol.txt /etc/tripwire/tw.pol.bak

# Tripwireデータベース更新
rm -f /var/lib/tripwire/*.twd* ; tripwire -m i -s -c /etc/tripwire/tw.cfg

Tripwire自動実行

# tmpwatchインストール(レポート削除用)
yum install tmpwatch

# ディレクトリ作成
mkdir /root/tripwire/

# スクリプト作成
vi /root/tripwire/tripwire.sh

tripwire.sh

cronで一日一回自動で実行する。

#!/bin/bash

# 既存のTripwire定期自動実行設定削除
rm -f /etc/cron.daily/tripwire-check

# パスフレーズ設定※インストール時に設定したパスワード
LOCALPASS=パスワード
SITEPASS=パスワード

TRIPWIRE=/usr/sbin/tripwire
TWADMIN=/usr/sbin/twadmin
TWPRINT=/usr/sbin/twprint
cd /etc/tripwire

# Tripwireチェック実行※ファイル変更があった場合root宛にメール
rm -f /var/lib/tripwire/report/`hostname`-`date +%Y%m%d`-*.twr
${TRIPWIRE} -m c -s -c tw.cfg > /tmp/tripwire.log
if [ $(grep "Total violations found" /tmp/tripwire.log | awk '{print $4}') -ne 0 ]; then
    ${TWPRINT} -m r --report-level 1 -c tw.cfg -r /var/lib/tripwire/report/`hostname`-`date +%Y%m%d`-*.twr | \
    mail -s "Tripwireのチェックレポート from `hostname`" root
fi

# tmpwatchで結果削除※過去60日分保管(1440時間)
tmpwatch -m 1440 /var/lib/tripwire/report

# ポリシーファイル最新化
${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 /var/lib/tripwire/*.twd*
${TRIPWIRE} -m i -s -c tw.cfg -P $LOCALPASS

自動実行の日時を設定する。

# パーミッション変更
chmod 700 tripwire.sh

#1時にスクリプト実行 [分/0~59] [時/0~23] [日/1~31] [月/1~12] [曜日0~7] [コマンド]
echo "0 1 * * * root /root/tripwire/tripwire.sh" > /etc/cron.d/tripwire

9.管理者宛メール設定 Gmail

Gmailの2段階認証を有効にして、Gmailアプリパスワード設定からパスワードを生成し、設定ファイルに記述する。
Gmailヘルプ

# postfix mailx cyrus-sasl をインストール
yum install postfix mailx cyrus-sasl cyrus-sasl-plain

# パスワード設定
vi /etc/postfix/saslpass
[smtp.gmail.com]:587 メールアドレス@gmail.com:パスワード

# 設定追記
vi /etc/postfix/main.cf

# 最後尾に追記
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
smtp_sasl_mechanism_filter = plain

# パーミッション変更
chown root:root /etc/postfix/saslpass
chmod 600 /etc/postfix/saslpass
postmap /etc/postfix/saslpass

# firewalld構築後テスト ポート[smtp/smtps]
echo hogehoge | mail メールアドレス@gmail.com

# 起動
systemctl start postfix

# 自動起動
systemctl enable postfix

root宛メールを管理者に送信する

# root宛メールを先程のGmailへ送信
# 96行目のコメントアウトを外してメールアドレスを入力
vi /etc/aliases
root:           メールアドレス

# 変更を反映
newaliases

# テスト
echo test | mail root

10.NTPサーバーChronyインストール

#インストール
yum install chrony

# 設定ファイル変更
vi /etc/chrony.conf

# 3行目~6行目をコメントアウトして以下を追加
server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst

#一度手動で設定した後再起動
chronyc makestep
systemctl restart chronyd

#確認
chronyc sources
date

PREVIOUS
前の投稿

CentOS6

CentOS6インストール St.2