CentOS 7 でサーバ構築①

使用した CentOS-7-x86_64-Minimal-1511.iso イメージは、CentOS-7-x86_64-DVD-1511.iso イメージの Minimal インストールより、更にスリム化されているようで、いろいろと追加インストールする必要がある

OSインストール後にしたこと

●作業用のユーザ追加

# useradd hogehoge
# passwd hogehoge
ユーザー hogehoge のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

●root および hogehoge 宛てのメールをサーバ管理者のメールアドレスに転送

/etc/aliases を編集する

# cp /etc/aliases /etc/aliases.yyyymmdd
# vi /etc/aliases

hogehoge: root  ← 追加

# trap decode to catch security attacks
#decode: root  ← コメントアウト

# Person who should get root’s mail
#root: marc
root: hoge@example.com  ← 転送先のメールアドレスを追加

エイリアスファイルの再構築

# newaliases

●suコマンドを実行できるユーザを制限

/etc/pam.d/su を編集し pam_wheel.so モジュールを使用するように変更する

# cp /etc/pam.d/su /etc/pam.d/su.org
# vi /etc/pam.d/su

#auth required pam_wheel.so use_uid
auth required pam_wheel.so use_uid  ← コメントを外す

ユーザをwheelグループに追加
/etc/group を編集する
# cp /etc/group /etc/group.yyyymmdd
# vi /etc/group

wheel:x:10:
wheel:x:10:hogehoge  ← ユーザ hogehoge を追加

●SSHD の設定(主にセキュリティ)

ポートの変更(port=10222)
使用するプロトコルを ssh version 2 に制限
認証までの猶予時間を30秒に変更
root ログインを禁止
試行回数を3回に変更
パスワードなしログインを禁止
バナー非表示
※ 閉域環境なので認証系は甘めな設定

※/etc/ssh/sshd_config を編集する前に、SELinux と Firewalld の設定をしておく

※変更したポートでのアクセスを確認するまで、作業中のセッションは断たない

1.sshd の Listen Port を変更するため、SELinux に変更を加える

1-1.semanage コマンドが見当たらないのでインストールをする
# yum -y install policycoreutils-python

1-2. インストールを確認する
# yum list installed | grep semanage
libsemanage.x86_64 2.1.10-18.el7 @anaconda
libsemanage-python.x86_64 2.1.10-18.el7 @base

1-3. SELinux の SSH の設定にポートを追加する
# semanage port -a -t ssh_port_t -p tcp 10222

1-4. ポートの追加を確認する
# semanage port -l | grep ssh
ssh_port_t tcp 10222, 22  ← 10222が追加された

2.Firewalld で 10222 ポートへのアクセスを許可する

2-1.firewalld も入っていないので firewalld をインストールする
# yum -y install firewalld

2-2. インストールを確認する
# yum list installed | grep firewall
firewalld.noarch 0.3.9-14.el7 @base

2-3. firewalld の状態を確認して、起動していなければ firewalld を起動する
# firewall-cmd –state
not running  ← 起動していない

# systemctl start firewalld  ← 起動コマンド
# firewall-cmd –state
running  ← 起動した

2-4. firewalld の定義ファイル(xml)を作成する
ssh 用定義ファイルをベースに ssh-10222 用の定義ファイルを作る
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-10222.xml

# vi /etc/firewalld/services/ssh-10222.xml

基にした ssh の定義ファイル

<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol=”tcp” port=”22″/>
</service>

追加する定義ファイル(緑が変更箇所)

<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>SSH-10222</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol=”tcp” port=”10222“/>
</service>

2-5. firewalld へ定義ファイルを適用する
# firewall-cmd –add-service=ssh-10222 –permanent  ← –permanent を付けると恒久的
success

2-6. firewalld を再起動し、適用を確認する
# firewall-cmd –reload  ← 再起動コマンド
success
# firewall-cmd –list-all  ← 確認コマンド
public (default)
interfaces:
sources:
services: dhcpv6-client ssh ssh-10222  ← ssh-10222 が追加された
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

3.SSHD の設定

3-1./etc/ssh/sshd_config を編集する
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
# vi /etc/ssh/sshd_config

#Port 22
Port 10222  ← Listen Port を追加する
#Protocol 2
Protocol 2  ← コメントを外す
#LoginGraceTime 2m
LoginGraceTime 30  ← 猶予時間を変更
#PermitRootLogin yes
PermitRootLogin no  ← root ログイン禁止
#MaxAuthTries 6
MaxAuthTries 3  ← 試行回数変更

#Banner none
Banner none  ← コメントを外す

3-2.サービスの再起動
# systemctl restart sshd.service

3-3.接続確認
port=22 でログインできないことを確認する
port=10222 でログインできることを確認する
root でログインできないことを確認する
※その他の確認はまた後で

●NTP設定

Chrony のインストール
# yum -y install chrony

インストールを確認する
# yum list installed | grep chrony
chrony.x86_64 2.1.1-4.el7.centos @updates

Chrony の設定
/etc/chrony.conf を編集する
# cp /etc/chrony.conf /etc/chrony.conf.org
# vi /etc/chrony.conf

#server 0.centos.pool.ntp.org iburst  ← コメントアウト
#server 1.centos.pool.ntp.org iburst  ← コメントアウト
#server 2.centos.pool.ntp.org iburst  ← コメントアウト
#server 3.centos.pool.ntp.org iburst  ← コメントアウト
server ntp.jst.mfeed.ad.jp iburst  ← NTPサーバ追加
server ntp.nict.jp iburst  ← NTPサーバ追加
#allow 192.168/16  ← NTPサーバにする場合は、1つ以上のネットワークを allow にする。とりあえず今回は NTP クライアントなのでコメントアウトのまま

サービスの自動起動設定と確認Chronyd の起動
# systemctl start chronyd.service

# systemctl enable chronyd.service
# systemctl list-unit-files -t service | grep chronyd
chronyd.service enabled  ← enabled になっていること

動作確認
# chronyc sources

210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
==================================================
^- ntp2.jst.mfeed.ad.jp 2 6 377 57 -629us[-1285us] +/- 69ms
^* ntp-a3.nict.go.jp 1 6 377 55 -436us[-1096us] +/- 4382us

M:問い合わせ先
“^”:サーバ
“=”:ピア
“#”:ローカルのハードウェアクロック

S:現在の状態
“*”:同期対象として採用中
“+”:同期対象候補
“-“:同期対象から外れているもの