セキュリティ

CentOS7イントール直後にまず行っておくべき事まとめ

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で外部からログインできるようにします。下記のリンクの手順を参考に公開鍵認証の設定を行ってください。

TeraTermで公開鍵認証始めにやる作業まとめ

公開鍵を作成し、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専用ユーザ関連の設定に移りましょう。

sFTP専用ユーザ作成とsFTPサーバ設定まとめ

最後に

掲載内容に誤りやより良い方法などがあったら是非情報をご提供ください。また、この記事の最終更新日は2019.02.09です。今後内容が更新する事があります。最新情報や情報の更新のお知らせを受けたい場合は、こちらにご登録ください。

 

-セキュリティ
-,

© 2024 WEBマスターの為のメモ