CentOSをインストールした時に必要な最初の設定
掲載日:2020年12月8日
INFOMARTION > CentOSをインストールした時に必要な最初の設定
概要
CentOSをインストールしてから最初に必要な設定についてです。CentOS 7.6 (1810)を使って構築していきます。
目次
- 基本設定
- 1-1. OSの確認
- 1-2. ツールのインストール
- 1-3. selinuxの無効化
- 1-4. 運用ユーザ追加
- 1-5. ルートユーザのパスワード変更
- 1-6. 運用ユーザ以外のログイン禁止設定(ルートユーザ、その他のユーザによるログインを禁止)
- 1-7. 時刻同期
- 1-8. 鍵認証設定
- 1-9. 日本語化設定
- まとめ
1. 基本設定
CentOSインストールした直後に必要な基本的な設定について記載します。
1-1. OSの確認
まずは、インストールしたOSが正しいか確認してください。
[root@hostname ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
「CentOS Linux release 7.6.1810 (Core)」がインストールしたOSとなります。正しいか確認しましょう。
1-2. ツールのインストール
インストール直後だとifconfigなどの基本的なコマンドも実行できません。 そのため、yumコマンドにより基本的なネットワーク系のコマンドなどが実行できるようにインストールを実施します。
「yum -y update」で既にインストールしてあるものを最新化できるので必要に応じて実施してください。
[root@hostname ~]# yum install -y net-tools
[root@hostname ~]# yum install -y wget
[root@hostname ~]# yum install -y tcpdump
[root@hostname ~]# yum install -y traceroute
net-tools・・・ifconifgコマンドなどがインストールすると使えるようになります。
wget・・・文字通りですが、wgetコマンドが使えるようになります。簡単に説明するとhttpリクエストを送信するコマンドです。
tcpdump・・・文字通りですが、tcpdumpコマンドが使えるようになります。簡単に説明するとサーバに送られてきたリクエストを監視できます。
traceroute・・・文字通りですが、tracerouteコマンドが使えるようになります。簡単に説明すると送信先のIPの経路が分かります。
1-3. selinuxの無効化
selinuxを有効化しているため、予期しない挙動をすることがあるので無効化します。
そもそもselinuxはセキュリティに関する設定です。使いこなせる場合は有効化しても問題ないですが、難しい場合は無効化しましょう。 selinuxを無効化しても必ずしもセキュリティが脆弱にはなりません。むしろ個人的には良くわらかないけど、有効化している方がトラブルの原因になります。 簡単に説明するとselinuxはサーバに侵入された後のセキュリティ対策なので(侵入された際に被害を最小限に抑えるための設定)、サーバに侵入されないようにセキュリティ対策をする方がむしろ重要です。
以下、無効化の手順です。
[username@hostname ~]$ getenforce
Disabled
「Disabled」でない時、次の手順で変更が可能です。
[username@hostname ~]$ vi /etc/selinux/config
SELINUX=enforcing
SELINUX=disabled
「SELINUX」と「SELINUXTYPE」がありますが、変更するのは「SELINUX」の方です。 間違って「SELINUXTYPE」を変更するとサーバが起動しなくなるので注意してください。
サーバを再起動すると設定が反映されます。
1-4. 運用ユーザ追加
rootユーザでログインして作業するのは、危険なのでログインするためのユーザを追加します。後続の手順で、rootユーザのログインを無効化します。
rootユーザでログインしてする作業のリスクとしては、何でも出来ちゃうことです。 何でもできちゃうリスクとしては、誤ってOSに関する重要な変更を変えてしまったり、削除してしまったりしてしまうことです。 個人で趣味や勉強などのためのサーバで、そんな凡ミスはしないよと言う人はrootユーザでログインしてしまっても個人的には問題ないとおもいます。 rootユーザでログインさせない1番の理由は権限の分離だと思います。 アプリ開発チームはアプリ開発用のディレクトリしか触れないユーザを使う。バッチ開発チームはバッチ開発のディレクトリしか触れないユーザを使う。と言うような、必要なチームが必要なディレクトリを触れる様にユーザは分けた方が良いと思います。
以下、ユーザ追加の手順です。
[root@hostname ~]# useradd xxxxxx
[root@hostname ~]# passwd xxxxxx
※xxxxxxは追加するユーザ名。任意のパスワードを設定する。
1-5. ルートユーザのパスワード変更
ルートユーザでない場合はsu -でルートユーザにスイッチして以下のコマンドを実行
[username@hostname ~]$ su -
[root@hostname ~]# passwd
※任意のパスワードを設定する。
初期パスワードは絶対に辞めましょう。パスワード「root」は最悪です。 パスワード「password」「1234」などもかなり危険です。 英数字記号を含む8桁以上が良いと思います。
このパスワード設定はセキュリティ対策の上でかなり重要なので、最新の注意を払って設定しましょう。 rootユーザのパスワード変更はかなり基本ですが、これが原因でセキュリティインシデントになった話も多々聞いたことがあるので注意しましょう。 誰も自分のサーバなんか規模が小さいし攻撃してこないとは思わないでください。 攻撃者はランダムなサーバに対してユーザ名「root」パスワード「root」でアクセスしてきます。
1-6. 運用ユーザ以外のログイン禁止設定(ルートユーザ、その他のユーザによるログインを禁止)
ログインできるユーザは制限しましょう。特にrootユーザはログイン不可にしましょう。rootでログインされたら、全てのセキュリティ対策が無効化されたのとイコールです。
以下、rootユーザのログインを不可にする手順とログインできるユーザを追加する手順です。rootユーザにスイッチしてから設定ファイルを変更します。(ログイン出来なるなるだけで「su-」でrootユーザにスイッチすることは可能です。)
[username@hostname ~]$ su -
[root@hostname ~]# vi /etc/ssh/sshd_config
#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#LoginGraceTime 2m
PermitRootLogin no
AllowUsers xxxxxx
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
※xxxxxxは先程追加した運用ユーザ名
ここでの注意点としてAllowUsers名を間違えると誰もログイン出来なくなってしまうので、ユーザ名は良く確認してください。
構文を確認して、sshdを再起動する。
[root@hostname ~]# /usr/sbin/sshd -t
[root@hostname ~]# systemctl restart sshd
一度、ログアウトして、rootでログインできないこと、追加した運用ユーザでログイン出来ることが確認できたら完了です。
1-7. 時刻同期
時刻同期されているか確認しましょう。たまにあるトラブルとしてサーバの時刻が同期されていないためログ出力日時が想定と異なる時刻で出力されてトラブル解析に時間がかかったりします。
時刻同期のプロセス(chronyd)の起動確認。時刻の同期状態を確認します。CentOS7は「chronyd」ですが、それ以前は「ntpd」なので6以前の人は注意してください。
[root@hostname ~]# ps aux | grep chronyd
chrony 567 0.0 1.3 117804 13664 ? SL 5月04 0:04 /usr/sbin/chronyd
root 32489 0.0 0.0 112732 972 pts/1 S+ 16:30 0:00 grep --color=auto chronyd
[root@hostname ~]# timedatectl
Local time: 日 2020-11-29 16:30:43 JST
Universal time: 日 2020-11-29 07:30:43 UTC
RTC time: 日 2020-11-29 07:30:43
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
1-8. 鍵認証設定
先程追加した運用ユーザに対して、鍵認証のみでログインできるようにします。
パスワード認証を不可にするだけでかなりセキュリティがあがります。パスワード認証の場合は、複雑なパスワードにすれば基本的にはログインはされませんが、可能性として0%ではありません。しかし、鍵認証の場合、そもそも鍵を持っていなければログイン出来ないので鍵の管理さえしっかり出来ていればログインされることはありません。
以下、鍵認証の設定手順です。
[username@hostname ~]$ su - xxxxxx
[xxxxxx@hostname ~]$ ssh-keygen -t rsa -b 2048
※xxxxxxは追加した運用ユーザ名
※「ssh-keygen -t rsa -b 2048」コマンド実行後、応答を求められますが、全てデフォルト値で「Enter」を押します。パスワードも無しで設定する。(パスワードを入力すると鍵認証+パスワード認証となるのでさらにセキュリティがあがりますが、今回はパスワードは無しとします。)
続いて、鍵が作成されていることを確認します。
[xxxxxx@hostname ~]$ ll /home/xxxxxx/.ssh
※xxxxxxは追加した運用ユーザ名
秘密鍵「id_rsa」公開鍵「id_rsa.pub」が格納されていることを確認する。
公開鍵をリネームして、秘密鍵をダウンロードするために、ディレクトリを移動します。
[xxxxxx@hostname ~]$ mv /home/xxxxxx/.ssh/id_rsa.pub /home/xxxxxx/.ssh/authorized_keys
[xxxxxx@hostname ~]$ mv /home/xxxxxx/.ssh/id_rsa /home/xxxxxx/id_rsa
※xxxxxxは追加した運用ユーザ名
秘密鍵(id_rsa)をローカルに移動した後に、サーバ上から削除します。
/home/xxxxxx/id_rsaをローカルへ移動する。(WinSCPなどで移動してください。)
移動後、削除コマンドを実行。
[xxxxxx@hostname ~]$ rm /home/xxxxxx/id_rsa
※xxxxxxは③で追加したユーザ名。
これで、鍵認証の設定は完了です。作成した秘密鍵でログイン出来るか確認しましょう。
ログインが出来ることの確認が取れたら、最後に、パスワード認証でログイン出来ないように設定変更を行います。
[username@hostname ~]$ su -
[root@hostname ~]# vi /etc/ssh/sshd_config
PasswordAuthentication yes
PasswordAuthentication no
構文を確認して、sshdを再起動する。
[root@hostname ~]# /usr/sbin/sshd -t
[root@hostname ~]# systemctl restart sshd
以上で鍵認証の設定完了です。
1-9. 日本語化設定
日本語設定です。こちらは任意ですが、やはり日本語の方が可読性があがるので、設定しておくことをおすすめします。
[username@hostname ~]$ su -
[root@hostname ~]# localectl set-locale LANG=ja_JP.UTF-8
[root@hostname ~]# source /etc/locale.conf
[root@hostname ~]# echo $LANG
ja_JP.UTF-8
2. まとめ
CentOSをインストールした時に必要な最初の設定について記載させていただきました。
この記事に書いてある内容はCentOSインストール時には実施しておきたい最低限の内容なので、もし、この記事を読んで不足があると感じた方は設定してみてください。
最後までご覧いただきありがとうございました。