CentOS 初期設定

前回はCentOSのインストールを行いました。今回初期設定で最低限必要となるツール、設定を追加します。こんばんわ、Web担当 神凪です。
必要最小限なので、ここからさらに設定が必要です。少なくともこれくらいはやっておこう、という意識で大丈夫かと思います。

環境

  • CentOS 7.3

準備

設定手順

必要となるパッケージをインストール・アップデート

OSを最新版に、かつ開発ツールをインストールします。これをしないとgccとかmakeとかも使えません。
さらに今回はyum-cronで自動アップデートを有効化しました。

yum -y update
yum -y groupinstall base "Development tools"
yum -y install yum-cron
systemctl start yum-cron
systemctl enable yum-cron

Alias設定

rootにメールが溜まってしまうのはよろしくないので、root宛てメールは業務アカウントに転送します。
必要に応じてOP25B対策設定も追加してくださいね。ここでは割愛しますけれど。

cp /etc/aliases{,.`date +%Y%m%d%H%M`}
sed -i '/^root:/d' /etc/aliases
echo "root: nceinquiry@netcircus.jp" >> /etc/aliases
newaliases

補足

CloudGarage インスタンス等でnewaliasesを実行するとエラーが発生することがあります。

newaliases: fatal: parameter inet_interfaces: no local interface found for ::1

IPv6インターフェースがないにもかかわらずhosts等でIPv6が記述されているとこのようなエラーになることがあります。
hostsの記述を更新してIPv6を無効化しておきましょう。

[/etc/hosts]
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

SELinuxの無効化

SELinuxはしっかり理解していないと後々影響が大きい上に、事後防衛的手段となっています。
サーバである以上事前防衛できるようにしておきたいですから今回は無効化しておきます。

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux

2018/01/29追記

Enable or Disable SELinuxには「上記のファイルは/etc/selinux/configへのシンボリックリンクである」との記述があります。
しかし”CentOS-7-x86_64-DVD-1708.iso”を使ったminimum installではこのリンクがファイルとして存在しているようです。

# ll /etc/sysconfig/selinux
-rw-r--r--. 1 root root 546  1月 29 11:39 /etc/sysconfig/selinux

/etc/sysconfig/selinuxを更新しても反映されない場合、/etc/selinux/configを直接更新するか、/etc/sysconfig/selinuxをシンボリックリンクとして作り直すようにしましょう。

—追記ここまで—

Firewallの停止

Firewallは設定するべき、ですがもっと外側に置いてありますよね?
サーバで無理に設定する必要もないので、今回は無効化。

例えばVPSサーバで外部においてある単一サーバ・・・といった設定であれば是非有効化しておいてくださいね。

systemctl stop firewalld
systemctl disable firewalld

SSHサーバ設定

SSHは便利な反面、設定を甘くしておくと簡単に侵入されます。不便でも安全が大事。
しっかり強めに設定しておきます。

[/etc/ssh/sshd_config]
#Protocol 2
↓
Protocol 2

PermitRootLogin yes
↓
PermitRootLogin no

PasswordAuthentication yes
↓
PasswordAuthentication no

 

echo Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com >> /etc/ssh/sshd_config
echo Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com >> /etc/ssh/ssh_config
echo MACs hmac-sha2-256,hmac-sha2-512,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com >> /etc/ssh/sshd_config
echo MACs hmac-sha2-256,hmac-sha2-512,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com >> /etc/ssh/ssh_config

さらに、SSH接続元をhostsファイルで限定します。
IPで固定できれば最良ですが、ドメインレベルででも限定しておきましょう。
(以下は一例)

echo "sshd: .spmode.ne.jp" >> /etc/hosts.allow
echo "sshd: ALL" >> /etc/hosts.deny

時刻同期設定

NTPサーバを導入して時刻同期を行います。

yum -y install chrony
chronyc sources

必要に応じて同期先は変更してくださいね。
設定ファイルは[/etc/chrony.conf]です。

まとめ

いかがでしたか?そこまで難しくはないはずです。
突き詰めていくともっと考慮するべき点は多いですが、まず触るレベルであればこれくらいでも大丈夫。
いろいろ試してみてくださいね。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください