Contents
Cent OS7インストール直後にまずやっておくべき事まとめ
専用サーバやVPS等OSをインストールした状態から最低限のセキュリティを確保するために下記の設定を行うようにしましょう。※ここで紹介している作業はCentOS7をインストールしたばかりの想定です。(2019.02.05の記事です)
linuxのviエディタ等の扱いに慣れて貰えればディレクターにもできると思います。
管理用ユーザの作成
始めはrootしかないので管理用ユーザを作成します。基本的な作業は管理用のユーザ(仮にadminuserというユーザー名にします)で行いrootの利用は必要最小限に抑えましょう。
# useradd adminuser # passwd adminuser
正しく作成できたか確認します。
# cat /etc/passwd
始めはユーザ名=グループ名となっているのでグループも変えます。
# groupmod -n developer adminuser
管理用ユーザのSSH接続用公開鍵を作成
次に管理用ユーザでSSHで外部からログインできるようにします。下記のリンクの手順を参考に公開鍵認証の設定を行ってください。
公開鍵を作成し、SSHで無事ログイン確認できたら、suコマンドでrootになりSSH接続の設定を変更します。
$ su - # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org # vi /etc/ssh/sshd_config
まずrootユーザのでのログインを無効にします。rootは全てのunix系サーバに存在するユーザで狙われやすいので、SSHから直接rootでのログインを遮断します。
変更前
#LoginGraceTime 2m #PermitRootLogin yes
変更後
#LoginGraceTime 2m
PermitRootLogin no
そして、SSH接続でのパスワード認証自体を無効にし公開鍵認証のみにします。
変更前
# To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes
変更後
# To disable tunneled clear text passwords, change to no here! PasswordAuthentication no
保存後、sshdを再起動し設定を有効にします。
$ sudo systemctl restart sshd.service
これで、SSHからrootで直接ログインする事はできなくなり、サーバに存在する公開鍵に対応した秘密鍵を持っていないとSSHログインできなくなりました。
sudo設定
管理用ユーザでroot権限が必要な作業を行えるよう、sudo権限を付与します。rootユーザで作業します。
$ su - # visudo
visudoで下記の行をコメントアウトする事でwheelグループに属するユーザはsudoが利用できるようになります。
#%wheel ALL=(ALL) ALL ← 変更前 %wheel ALL=(ALL) ALL ← 変更後
設定内容に誤りが無いかチェックします。
$ visudo -c
管理用ユーザをwheelグループに追加
# usermod -G wheel adminuser
su設定
suコマンドを使う事で:rootになる事ができます。rootになれるユーザを制限する事でセキュリティを高めます。
# vi /etc/pam.d/su
下記の様になってる場合は修正する。
# Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid ←変更前
# Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid ←変更後
これで管理ユーザでもsudoコマンドを使用すれば、root権限が必要な作業も実行できます。ここでsudoの動作確認も含めてrootのパスワードを複雑なものに変えます。
※私はrootのパスワードは、アルファベット小文字大文字・数字・記号の32文字以上で作るようにしています。安全な場所に保管しましょう。
$ sudo passwd root [sudo] password for username ← 管理用ユーザのパスワードを入力 Enter new UNIX password: ← rootの新パスワードを入力 Retype new UNIX password: ← 確認で同じパスワードを入力 passwd: password updated successfully
日本語対応、タイムゾーン変更
OSを日本語に設定します。設定が正しくできたか確認します。
$ sudo localectl set-locale LANG=ja_JP.UTF-8 $ localectl status System locale: LANG=ja_JP.UTF-8 VC Keymap:jp106 X11 layout: jp
タイムゾーンを日本に変更し、正しく変更できたか確認します。
$ sudo timedatectl set-timezone Asia/Tokyo $ timedatectl Local time: 月 2016-07-11 09:55:46 JST Universal time: 月 2016-07-11 00:55:46 UTC RTC time: 日 2016-07-10 19:52:51 Time zone: Asia/Tokyo (JST, +0900) NTP enabled: n/a NTP synchronized: no RTC in local TZ: no DST active: n/a
SELinuxの停止
SELinuxを停止します。
$ sudo vi /etc/selinux/config SELINUX=disabled
firewalldの設定
ファイヤーウォールの設定を行います。WEBサーバを利用する場合は、http(80)とhttps(443)を開けます。設定が終わったら正しく設定できたか確認します。
$ sudo firewall-cmd --add-service=http --permanent success $ sudo firewall-cmd --add-service=https --permanent success $ sudo firewall-cmd --list-all public (default, active) interfaces: eth0 sources: services: dhcpv6-client https http ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
次は管理者以外の作業者用アカウントの設定です。
セキュリティ強化!sshの接続元IP制限
SSH接続できる接続元IPに制限をかける事は、セキュリティを高める非常に有効な手段です。できる限り適用しましょう。デメリットとしては、サーバ管理者など緊急時の対応が必要な時に作業環境に縛りが発生する事です。
しかし、踏み台用サーバ(始めに踏み台用のサーバへSSH接続し、そのサーバから当サーバへ改めてSSH接続する為のサーバ)を別途構築するか、VPN等(インターリンク・マイIP)を利用する事でデメリットを解消できます。
SSHの接続元IP制限をかける方法はいくつかありますが、ここではsshd_confの設定を行います。
$ sudo vi /etc/ssh/sshd_config
作業者の接続元IPアドレスを確認した上で、下記の様に設定ファイルに追記します。
※この際、管理自身の接続元IPアドレスの接続許可をしていないと、管理者が接続できなくなります!くれぐれも固定IPの接続環境から作業環境を確保して下さい。
AllowUsers adminuser@10.10.10.10
上記以外のIP以外全てのアクセスを遮断します。設定が完了したらsshdを再起動させて、変更内容を適用します。
$ sudo systemctl restart sshd
設定を誤ると自身も接続できなくなってしまうので、現在の接続を切断せずにsshの接続確認を行います。
一旦ここまでOSをインストールしたら一気に行います。httpdでホームページのなど公開する場合は、sFTP専用ユーザ関連の設定に移りましょう。
最後に
掲載内容に誤りやより良い方法などがあったら是非情報をご提供ください。また、この記事の最終更新日は2019.02.09です。今後内容が更新する事があります。最新情報や情報の更新のお知らせを受けたい場合は、こちらにご登録ください。