Azure VMデプロイ直後のOS初期設定(CentOS 7.5編)

2019-05-19Azure,CentOS,Virtual Machine

CentOS 7のAzure Virtual Machine(Azure VM) をデプロイ後に最初に実施しそうな事を整理してみました。
OSの日本語化、rootアカウント周りの設定、セキュリティ系設定等をしています。
作業を簡易化する為に、viコマンドではなくsedコマンドを利用するようにしています。環境に合わせて設定する内容を適時選択して実施して下さい。

スポンサーリンク

rootのパスワードを設定し、デフォルトユーザーのsudo権限を剥奪する

AzureでMarketplaceからデプロイされたCent OSはrootのパスワードが非公開です。その為、一番最初に、rootのパスワード設定を実施します。rootのパスワード設定についてはこちらに纏め直したのでこちらを参照願います。

OSを日本語化し、TimeZoneを日本に合わせる

OSはデフォルトでは日本語化されていませんので日本語化します。併せてTimeZoneを日本にします。

[root@test-vm ~]# localectl  set-keymap –no-convert jp106
[root@test-vm ~]#localectl set-x11-keymap –no-convert jp106
[root@test-vm ~]#localectl set-locale LANG=ja_JP.utf8
[root@test-vm ~]#source /etc/locale.conf
[root@test-vm ~]#timedatectl set-timezone Asia/Tokyo

SELinuxを無効化する

SELinuxを使わない場合は無効化します。setenforce 0でまず無効化します。永続的な設定は/etc/selinux/configを変更します。SELINUX=enforcingの行をsedコマンドでSELINUX=disabledに変更しています。

[root@test-vm ~]#setenforce 0

[root@test-vm ~]#cp -p /etc/selinux/config /etc/selinux/config.`date “+%Y%m%d"`
[root@test-vm ~]#sed -i -e “s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

firewalld 無効化する

firewalldを使わない場合は無効化します。systemctlコマンドで停止(stop)、無効化(disable)しています。

[root@test-vm ~]# systemctl stop firewalld
[root@test-vm ~]# systemctl disable firewalld

#fail2banやその他、firewalldでアクセス制御する場合は有効化のまま設定しましょう。

※セキュリティ面を十分に考慮した上で実施可否の判断をして下さい。

rootユーザーのSSHログイン拒否する

rootユーザーのSSHログインを明示的に拒否します。設定は/etc/ssh/sshd_configで行います。明示的にPermitRootLogin noを記載しています。

[root@test-vm ~]#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.`date “+%Y%m%d"`
[root@test-vm ~]#sed -i -e “s/#PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config

ログイン失敗回数上限を設定する

一定回数以上ログイン失敗があった場合は、一定時間ログインできないようにします。pam.dの設定で行っています。sedコマンドで各ファイルに行を追加しています。

[root@test-vm ~]#sed -i -e “3i auth required pam_tally2.so deny=5 unlock_time=3600" /etc/pam.d/system-auth
[root@test-vm ~]#sed -i -e “10i account required pam_tally2.so" /etc/pam.d/system-auth
[root@test-vm ~]#sed -i -e “5i auth required pam_tally2.so deny=5 unlock_time=3600" /etc/pam.d/password-auth
[root@test-vm ~]#sed -i -e “12i account required pam_tally2.so" /etc/pam.d/password-auth

#今回の場合は、5回失敗したら、1時間ログインできないように設定しています。

SWAP領域を設定する

デプロイ直後ではOSのSWAP領域が設定されていません。設定は/etc/waagent.confで行います。

ResourceDisk.EnableSwap=nをResourceDisk.EnableSwap=yとする事でswapを有効化します。

ResourceDisk.SwapSizeMBの行で容量指定を行います。今回はResourceDisk.SwapSizeMB=1024としswap領域を1024MBとしています。

[root@test-vm ~]#cp -p /etc/waagent.conf /etc/waagent.conf.`date “+%Y%m%d"`

[root@test-vm ~]#sed -i -e “s/ResourceDisk.EnableSwap=n/ResourceDisk.EnableSwap=y/g" /etc/waagent.conf
[root@test-vm ~]#sed -i -e “s/ResourceDisk.SwapSizeMB=0/ResourceDisk.SwapSizeMB=1024/g" /etc/waagent.conf

#今回の場合は、B1S(メモリ1GB)を利用している為、1024MBで設定します。Virtual Machineのメモリ容量に応じて適時変更してください。

anacronからnoanacronに置き換える

CentOS7からはデフォルトでanacronがインストールされています。ログローテーションのタイミング等を固定したかったので、今回はnoanacronに変更しています。yumコマンドでパッケージのアンインストール、インストールを実施しています。併せて、Cronのrootへのメール設定削除も行ってます。

[root@test-vm ~]#yum -y install cronie-noanacron
[root@test-vm ~]#yum -y remove cronie-anacron
[root@test-vm ~]#cp -p /etc/cron.d/dailyjobs /etc/cron.d/dailyjobs.`date “+%Y%m%d"`

[root@test-vm ~]#sed -i -e “s/MAILTO=root/MAILT0=/g" /etc/cron.d/dailyjobs

[root@test-vm ~]#sed -i -e “s/MAILTO=root/MAILT0=/g" /etc/crontab

#Cronのメールも削除してます。

#必要に応じて、/etc/cron.d/dailyjobsを編集し実行時間を変えます。

NTPを設定する

NTPにはchronyが利用されています。デフォルトのままでは海外のNTP Serverを検索してしまいます。日本国内のNTPサーバを参照するように変更します。

[root@test-vm ~]#cp -p /etc/chrony.conf /etc/chrony.conf.`date “+%Y%m%d"`

[root@test-vm ~]#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

#以下の行を追加する。leapsecmode以下の行はうるう秒対策。

server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst

leapsecmode slew
maxslewrate 1000
smoothtime 400 0.001 leaponly

#内部NTPがある場合は、必要に応じてホストの指定先を変更します。

rebootコマンドでOSの再起動を実施する事で、各サービスの再起動、SWAP領域の有効化が行われます