Linuxをインストールしたらやっておくセキュリティ設定

というわけでLinux(Cent OS 7)のセキュリティ設定をやっておきます。

手順等はさくらのVPS上にインストールしたLinuxなので、他のディストリや環境などによっては違いがあります。

  • root以外の一般ユーザの作成
  • SSHの設定
    • rootユーザのログイン禁止
    • パスワード認証禁止(公開鍵かパスフェーズで)
  • 公開鍵を作成する
  • システムアップデート
  • ファイアウォールの設定

とまぁこんな感じですが、だいたいのことはさくらのVPSの初期設定マニュアルに載ってたりするので、それの通りに作業していけば間違いはないかと思います。

【さくらのVPS】サーバの初期設定ガイド

対象サービス・プラン さくらのVPSは、お客様が仮想サーバの「root権限」(管理者権限)」を持って、サーバをご利用いただくサービスです。 本ページでは、ご利用開始時のサーバの初期設定内容をご紹介します。 サーバの初期設定を行わない場合、お客様のVPSが第三者に操作される可能性が高まります。 安全にご利用いただくために、このページを参考に設定を行いましょう。 ※本マニュアルは、「さ…

ここから先はTeraTermでログインできていることが前提です。

root以外の一般ユーザの作成

まずはuseraddコマンドでユーザの追加、そのあとにpasswdコマンドでadminのパスワードを変更します。

[root@sakura ~]#
[root@sakura ~]# useradd admin
[root@sakura ~]# passwd admin
Changing password for user admin.
New password:
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.
[root@sakura ~]#

パスワードがダメすぎて「BAD PASSWORD: The password contains the user name in some form」と怒られました(*´ω`*)

とりあえずsuとかしたり/homeディレクトリの下をみて、先ほど作成したユーザがいればOKです。

[root@sakura ~]# cd /home/
[root@sakura home]#
[root@sakura home]# ls
admin
[root@sakura home]#
[root@sakura home]# su - admin
Last login: Wed Mar 21 17:21:08 JST 2018 on pts/0
[admin@sakura ~]$
[admin@sakura ~]$

SSHの設定

続いてSSHの設定を行います。やることは二つ。

  • SSHポート変更
  • rootユーザのログイン禁止
  • パスワード認証の禁止

ポートは変更しておいたほうが安全です。またパスワード認証は、平文で流れてしまうので必ず禁止にしておきましょう。諸事情により公開鍵を使えない場合などは、パスワードではなくチャレンジレスポンス認証に設定しておくと良いです。

編集するのは、/etc/ssh/sshd_configというファイル。

Port 22

デフォルトでは22なので、任意の数字に変更しておきます。

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

Authenticationの項目。PermitRootLoginがyesになっていたり、コメントアウトされていたら、コメントを外して値をnoにします。

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication yes

パスワード認証の項目。PasswordAuthenticatinはnoにします。ChallengeResponseAuthentication はチャレンジレスポンス認証を使えるようにします。パスワード認証と似たような方式で(裏側でやっていることは全然違いますが)、ログイン時にパスワードを入力して認証します。

一応diff(差分)とるとこんなかんじです。

[root@sakura ~]# diff /etc/ssh/sshd_config.origin /etc/ssh/sshd_config
17c17
< #Port 22
---
> Port 2222
45d44
<
49c48
< #PermitRootLogin yes
---
> PermitRootLogin no
79c78
< PasswordAuthentication yes
---
> PasswordAuthentication no
83c82
< ChallengeResponseAuthentication no
---
> ChallengeResponseAuthentication yes
[root@sakura ~]#

終わったらsshdサービスをリロードしておきます。

[root@sakura ~]# service sshd reload
Redirecting to /bin/systemctl reload  sshd.service
[root@sakura ~]#
[root@sakura ~]#

SSHでログインしてみて、rootユーザでログインしようとしたときに認証に失敗すればOKです。また「プレインパスワードを使う」がグレーになり「チャレンジレスポンス認証を使う(キーボードインタラクティブ)」が有効になっていることを確認してください。

image

ちなみにrootユーザはチャレンジレスポンス認証も使えません。前項で作成した一般ユーザを使います。

公開鍵を作成する

認証の際に公開鍵認証を使いたいので、公開鍵を作ります。公開鍵認証についての詳細はここでは省きますが、公開鍵と秘密鍵と呼ばれるファイルを2つ作成します。公開鍵の情報を相手サーバーのログインしたいユーザにあらかじめ登録しておき、秘密鍵を認証の際にサーバに送信して、送られた秘密鍵と既に登録済みの公開鍵をゴニョニョして、ログインできるユーザかを判定する処理になります。

公開鍵の作り方には2種類あって

  • クライアントPCで鍵を作成し、公開鍵を送信してサーバーに登録して、作った秘密鍵でログインしてもらう方法。
  • サーバーで鍵を作成し、公開鍵をサーバーに登録、秘密鍵をユーザに送信して使ってもらう方法。

本来であれば前者のほうが正しい使い方のようですが、今回はサーバー側で鍵を作ることにします。ちなみにクライアントPCで鍵を作る場合、TeraTermの設定⇒SSH鍵生成が使えます。

サーバーでssh-keygenコマンドを使います。オプションは-t rsaと-b 4096です。

-t rsaは暗号化方式にRSA暗号を指定します。-b 4096は暗号強度を指定しています。最低でも2048を指定してください。コマンドの途中で「Enter Passphase」とパスフェーズを要求されます。これは秘密鍵を使うときに必要となるパスワードのようなもので、安全を考慮するなら設定しておくべきです。今回はEnterのまま進み、パスフェーズは設定していません。

[admin@sakura ~]$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Created directory '/home/admin/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:
76:f9:2b:12:e8:49:97:8e:**:**:**:**:**:**:**:** admin@************.vs.sakura.ne.jp
The key's randomart image is:
+--[ RSA 4096]----+
|                 |
|                 |
|                 |
|           .     |
|       .S.o      |
|     .o.+. .     |
|    o+.* .  .    |
|  .=o.E + .  .   |
|  .+==o. . ..    |
+-----------------+
[admin@sakura ~]$

ホームディレクトリの下に、.sshディレクトリが作成され、その下にid_rsaとid_rsa.pubの2つが作成されます。

[admin@sakura ~]$ cd .ssh/
[admin@sakura .ssh]$ ls -la
total 8
drwx------ 2 admin admin   36 Mar 21 18:20 .
drwx------ 5 admin admin  117 Mar 21 18:20 ..
-rw------- 1 admin admin 3243 Mar 21 18:20 id_rsa
-rw-r--r-- 1 admin admin  761 Mar 21 18:20 id_rsa.pub
[admin@tk2-219-19107 .ssh]$

id_rsaが秘密鍵、id_rsa.pubが公開鍵になります。公開鍵をあらかじめサーバーに登録しておきます。

[admin@sakura .ssh]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
[admin@sakura .ssh]$ cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2E....(中略)....jOaIk3mz0Q== admin@************.**.sakura.ne.jp
[admin@sakura .ssh]$

冗長なコマンドですが。。catで公開鍵の内容をそのまま.ssh/authorized_keysに書き込みます。ユーザー作成直後などauthorized_keysファイルがない場合はこのコマンドで自動的に作成されます。あとはもう一度catでauthorized_keysの内容がちゃんと書き込まれているか確認しましょう。

またauthorized_keysに適切なパーミッションを設定する必要があります。chmodで変更しておきます。

[admin@sakura ~]$ chmod 0700 .ssh
[admin@sakura ~]$ chmod 0600 .ssh/authorized_keys
[admin@sakura ~]$ ls -la
total 16
drwx------  5 admin admin 117 Mar 21 18:20 .
drwxr-xr-x. 3 root  root   18 Mar 21 17:09 ..
-rw-------  1 admin admin  13 Mar 21 18:05 .bash_history
-rw-r--r--  1 admin admin  18 Aug  3  2016 .bash_logout
-rw-r--r--  1 admin admin 193 Aug  3  2016 .bash_profile
-rw-r--r--  1 admin admin 231 Aug  3  2016 .bashrc
drwxrwxr-x  3 admin admin  17 Mar 21 17:21 .cache
drwxrwxr-x  3 admin admin  17 Mar 21 17:21 .config
drwx------  2 admin admin  58 Mar 21 19:06 .ssh
[admin@sakura ~]$ ls -la .ssh/
total 12
drwx------ 2 admin admin   58 Mar 21 19:06 .
drwx------ 5 admin admin  117 Mar 21 18:20 ..
-rw------- 1 admin admin  761 Mar 21 19:06 authorized_keys
-rw------- 1 admin admin 3243 Mar 21 18:20 id_rsa
-rw-r--r-- 1 admin admin  761 Mar 21 18:20 id_rsa.pub
[admin@sakura ~]$

あとは、このid_rsaファイルを安全な方法でクライアントPCに持ってきます。

image

クライアントPCに秘密鍵をもってきたら、それを使ってTeraTermでログインします。ユーザー名はいつもの。認証方式に「RSA/DSA/ECDSA/ED25519鍵を使う」という項目を選択して、秘密鍵をクリックして対象のファイルを選びます。秘密鍵にパスフェーズを設定している場合は、「パスフレーズ」にそのキーワードを入力してログインします。

いつも通りログインできればOK。

ログインできない場合は、ありがちなのがauthroized_keysのパーミッションが間違っているとかです。

システムアップデート

長くなってきてしまいましたが、システムのアップデートも忘れずに行っておきます。

rootでyum updateするだけです。


[root@sakura ~]# yum update
Loaded plugins: fastestmirror, langpacks
base                                                                                                                                                                                                                               | 3.6 kB  00:00:00
epel/x86_64/metalink                                                                                                                                                                                                               | 5.7 kB  00:00:00
epel                                                                                                                                                                                                                               | 4.7 kB  00:00:00
extras                                                                                                                                                                                                                             | 3.4 kB  00:00:00
updates                                                                                                                                                                                                                            | 3.4 kB  00:00:00
(1/7): base/7/x86_64/group_gz                                                                                                                                                                                                      | 156 kB  00:00:00
(2/7): epel/x86_64/group_gz                                                                                                                                                                                                        | 266 kB  00:00:00
(3/7): epel/x86_64/updateinfo                                                                                                                                                                                                      | 905 kB  00:00:00
(4/7): extras/7/x86_64/primary_db                                                                                                                                                                                                  | 181 kB  00:00:00
(5/7): base/7/x86_64/primary_db                                                                                                                                                                                                    | 5.7 MB  00:00:01
(6/7): epel/x86_64/primary_db                                                                                                                                                                                                      | 6.3 MB  00:00:01
(7/7): updates/7/x86_64/primary_db                                                                                                                                                                                                 | 6.9 MB  00:00:02
Determining fastest mirrors
 * base: ftp.iij.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.0.6-31.el7_2 will be obsoleted
---> Package NetworkManager.x86_64 1:1.8.0-11.el7_4 will be obsoleting
 :
(中略)
 :
---> Package python-schedutils.x86_64 0:0.4-6.el7 will be installed
--> Running transaction check
---> Package grub2-pc-modules.noarch 1:2.02-0.65.el7.centos.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================================================================================================================================================================================
 Package                                                                Arch                                            Version                                                                    Repository                                        Size
==========================================================================================================================================================================================================================================================
Installing:
 NetworkManager                                                         x86_64                                          1:1.8.0-11.el7_4                                                           updates                                          1.6 M
     replacing  NetworkManager.x86_64 1:1.0.6-31.el7_2
 NetworkManager-ppp                                                     x86_64                                          1:1.8.0-11.el7_4                                                           updates                                          157 k
     replacing  NetworkManager.x86_64 1:1.0.6-31.el7_2
 grub2                                                                  x86_64                                          1:2.02-0.65.el7.centos.2                                                   updates                                           29 k
     replacing  grub2.x86_64 1:2.02-0.34.el7.centos
 grub2-tools                                                            x86_64                                          1:2.02-0.65.el7.centos.2                                                   updates                                          1.8 M
     replacing  grub2-tools.x86_64 1:2.02-0.34.el7.centos
 grub2-tools-extra                                                      x86_64                                          1:2.02-0.65.el7.centos.2                                                   updates                                          993 k
     replacing  grub2-tools.x86_64 1:2.02-0.34.el7.centos
 grub2-tools-minimal                                                    x86_64                                          1:2.02-0.65.el7.centos.2                                                   updates                                          170 k
     replacing  grub2-tools.x86_64 1:2.02-0.34.el7.centos
 kernel                                                                 x86_64                                          3.10.0-693.21.1.el7                                                        updates                                           43 M
 kernel-devel                                                           x86_64                                          3.10.0-693.21.1.el7                                                        updates                                           14 M
 python-gobject-base                                                    x86_64                                          3.22.0-1.el7_4.1                                                           updates                                          294 k
     replacing  pygobject3-base.x86_64 3.14.0-3.el7
Updating:
 NetworkManager-libnm                                                   x86_64                                          1:1.8.0-11.el7_4                                                           updates                                          1.2 M
 NetworkManager-team                                                    x86_64                                          1:1.8.0-11.el7_4                                                           updates                                          156 k
 :
(中略)
 :
 python-linux-procfs                                                    noarch                                          0.4.9-3.el7                                                                base                                              33 k
 python-schedutils                                                      x86_64                                          0.4-6.el7                                                                  base                                              21 k

Transaction Summary
==========================================================================================================================================================================================================================================================
Install    9 Packages (+15 Dependent packages)
Upgrade  358 Packages

Total download size: 334 M
Is this ok [y/d/N]: 

確認のメッセージがでるので y で。あとはパッケージのダウンロード、インストールとベリファイ、クリーニングが続きます。特にやることもないのでコーヒーでも飲んで待ちましょう。


Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/382): NetworkManager-team-1.8.0-11.el7_4.x86_64.rpm                                                                                                                                                                             | 156 kB  00:00:00
(2/382): NetworkManager-tui-1.8.0-11.el7_4.x86_64.rpm                                                                                                                                                                              | 224 kB  00:00:00
 :
(中略)
 :
(381/382): sssd-client-1.15.2-50.el7_4.11.x86_64.rpm                                                                                                                                                                               | 187 kB  00:00:19
(382/382): shared-mime-info-1.8-3.el7.x86_64.rpm                                                                                                                                                                                   | 312 kB  00:00:20
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                                     6.9 MB/s | 334 MB  00:00:48
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : libgcc-4.8.5-16.el7_4.2.x86_64                                                                                                                                                                                                       1/744
  Updating   : centos-release-7-4.1708.el7.centos.x86_64                                                                                                                                                                                            2/744
 :
(中略)
 :
  Cleanup    : tzdata-2016h-1.el7.noarch                                                                                                                                                                                                          743/744
  Cleanup    : libgcc-4.8.5-4.el7.x86_64                                                                                                                                                                                                          744/744
2663 blocks
  Verifying  : iw-4.3-1.el7.x86_64                                                                                                                                                                                                                  1/744
  Verifying  : iwl6000g2b-firmware-17.168.5.2-58.el7_4.noarch                                                                                                                                                                                       2/744
 :
(中略)
 :
  Verifying  : redhat-rpm-config-9.1.0-68.el7.centos.noarch                                                                                                                                                                                       743/744
  Verifying  : tuned-2.5.1-4.el7_2.6.noarch                                                                                                                                                                                                       744/744

Installed:
  NetworkManager.x86_64 1:1.8.0-11.el7_4                 NetworkManager-ppp.x86_64 1:1.8.0-11.el7_4    grub2.x86_64 1:2.02-0.65.el7.centos.2        grub2-tools.x86_64 1:2.02-0.65.el7.centos.2      grub2-tools-extra.x86_64 1:2.02-0.65.el7.centos.2
  grub2-tools-minimal.x86_64 1:2.02-0.65.el7.centos.2    kernel.x86_64 0:3.10.0-693.21.1.el7           kernel-devel.x86_64 0:3.10.0-693.21.1.el7    python-gobject-base.x86_64 0:3.22.0-1.el7_4.1

Dependency Installed:
  GeoIP.x86_64 0:1.5.0-11.el7                           boost-date-time.x86_64 0:1.53.0-27.el7      efivar-libs.x86_64 0:31-4.el7                       elfutils-default-yama-scope.noarch 0:0.168-8.el7    firewalld-filesystem.noarch 0:0.4.4.4-6.el7
  grub2-common.noarch 1:2.02-0.65.el7.centos.2          grub2-pc.x86_64 1:2.02-0.65.el7.centos.2    grub2-pc-modules.noarch 1:2.02-0.65.el7.centos.2    libfastjson.x86_64 0:0.99.4-2.el7                   libseccomp.x86_64 0:2.3.1-3.el7
  libstoragemgmt-python-clibs.x86_64 0:1.4.0-5.el7_4    nss-pem.x86_64 0:1.0.3-4.el7                python-firewall.noarch 0:0.4.4.4-6.el7              python-linux-procfs.noarch 0:0.4.9-3.el7            python-schedutils.x86_64 0:0.4-6.el7

Updated:
  NetworkManager-libnm.x86_64 1:1.8.0-11.el7_4                NetworkManager-team.x86_64 1:1.8.0-11.el7_4                    NetworkManager-tui.x86_64 1:1.8.0-11.el7_4                       abrt.x86_64 0:2.1.11-48.el7.centos
  abrt-addon-ccpp.x86_64 0:2.1.11-48.el7.centos               abrt-addon-kerneloops.x86_64 0:2.1.11-48.el7.centos            abrt-addon-pstoreoops.x86_64 0:2.1.11-48.el7.centos              abrt-addon-python.x86_64 0:2.1.11-48.el7.centos
 :
(中略)
 :
  yum.noarch 0:3.4.3-154.el7.centos.1                         yum-langpacks.noarch 0:0.4.2-7.el7                             yum-plugin-fastestmirror.noarch 0:1.1.31-42.el7                  yum-utils.noarch 0:1.1.31-42.el7
  zip.x86_64 0:3.0-11.el7                                     zlib.x86_64 0:1.2.7-17.el7

Replaced:
  NetworkManager.x86_64 1:1.0.6-31.el7_2                        grub2.x86_64 1:2.02-0.34.el7.centos                        grub2-tools.x86_64 1:2.02-0.34.el7.centos                        pygobject3-base.x86_64 0:3.14.0-3.el7

Complete!
[root@sakura ~]#

最後にComplete!と出れば完了です!

さて、最後にファイアウォールの設定になるのですが、やや長くなりそうなので次のエントリで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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