CentOS7インストール St.1
CATEGORY LINUX
Linux-CentOS7サーバーを構築します。
この記事を執筆時にはCentOS8がリリースされています。
このページでは、OSのインストールから基本設定を行っていきます。
CONTENT
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