ConoHa VPSの SSHセキュリティを強化
ConoHa VPSにサーバーを追加して、MacのターミナルでSSHログインできるまで。
加えて、SSH接続の公開鍵を作り、セキュリティ強化をします。
ConoHaのVPSは時間単位の料金体系で、ちょっと試しに使ってみたいときに便利。1時間で1円程度でした。
関連記事 Apache系インストール 1.ConoHa VPS のSSHセキュリティを強化する 2.【CentOS stream 9】 Apacheをインストールする 3.【CentOS stream 9】 Maria DBをインストールする 4.【CentOS stream 9】 phpをインストールする 5.【CentOS stream 9】 composerをインストールする
関連記事 Nginx系インストール 1.ConoHa VPS のSSHセキュリティを強化する 2.【CentOS stream 9】 Nginxをインストールする 3.【CentOS stream 9】 Maria DBをインストールする 4.【CentOS stream 9】 phpをインストールする 5.【CentOS stream 9】 Nginxでphp、phpMyAdminを使う 6.【CentOS stream 9】 composerをインストールする
関連記事 ドメイン ConoHa WING VPS に サブドメインを追加する
ConoHa VPSにサーバー追加
まず、ConoHa VPSにサーバーを追加するところから始めます。
ConoHaのマイページにログインして、
この記事執筆時点ではCentOSの最新はStream9ですが、プルダウンより過去のバージョンも選ぶことができます。
ダウンロードされたファイルを、「/Users/Macユーザー名/.ssh/」フォルダに移動させます。
Macのターミナルを開いて、下記コマンドでファイルの権限を変更します。
sei@MacBook-Pro ~ % chmod 400 ./.ssh/20220522002724.pem
「キーを選択」を選び、生成したパブリックキーを選択、
スタートアップスクリプトにより、SSHログインセキュリティツール「Fail2ban」を自動インストールすることも可能です。このツールはSSHログインに何度も失敗したアクセス元を自動遮断してくれるツールです。
rootユーザーでSSHログイン
Macのターミナルを開いて、上記画面で確認したIPアドレスに
ダウンロードしたパブリックキーを使ってSSH接続し、リモートログインする
sei@MacBook-Pro ~ % ssh root@160.251.100.96 -p 22 -i ./.ssh/20220522002724.pem The authenticity of host '160.251.100.96 (160.251.100.96)' can't be established. ED25519 key fingerprint is SHA256:pyafzImDhCysJg6CvdgseOZmRGffon/pqkei0xaZealg. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '160.251.100.96' (ED25519) to the list of known hosts.
一般ユーザーの追加
SSHリモートログイン用の一般ユーザーを追加します。
# useradd sei
追加したユーザーのパスワード設定
# passwd sei Changing password for user sei. New password: //パスワード入力 Retype new password://パスワード再入力 passwd: all authentication tokens updated successfully.
一般ユーザーを「wheel」グループに所属させる
ConoHaではデフォルトで「wheel」グループに所属している一般ユーザーがsudo利用可
# usermod -G wheel sei
「/etc/pam.d/su」を編集
「wheel」グループのみrootユーザーにスイッチできるようにする
# vi /etc/pam.d/su
コメントを外す
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
一般ユーザーになれることを確認
# su sei $
rootになれることを確認
$ su -
Password://パスワード入力
#
一般ユーザー用のSSH鍵設定
Macのターミナルを開いて、「ssh-keygen」コマンドでSSH鍵を生成する
sei@MacBook-Pro ~ % ssh-keygen -t ecdsa -b 521 Generating public/private ecdsa key pair. Enter file in which to save the key (/Users/sei/.ssh/id_ecdsa): ⇦エンター(秘密鍵の保存場所) Enter passphrase (empty for no passphrase): ⇦エンター Enter same passphrase again: ⇦エンター Your identification has been saved in /Users/sei/.ssh/id_ecdsa Your public key has been saved in /Users/sei/.ssh/id_ecdsa.pub The key fingerprint is: SHA256:uQNRwi9/d6HAnPmMi79eTAXTLPsQpDLLayzItG8ucVs sei@MacBook-Pro.local The key's randomart image is: +---[ECDSA 521]---+ | .. . .+o | | .o .ooo | | ..oo.o +. | | .o.=* o.. | | . .oS =.+ . | | o.o.oEooo= o | | +o.o*o oo. | | ..oo.... | | +o o+. | +----[SHA256]-----+
生成場所は「 /Users/Macユーザー名/.ssh/」、
「command + shift + . 」キー同時押しで隠しファイル・フォルダの表示ができます。
生成場所に「id_ecdsa」と「id_ecdsa.pub」ができたことを確認。
サーバーにSSHログインして、追加した一般ユーザーになる
# su sei
サーバー側にSSH鍵を保存するディレクトリ「/home/一般ユーザー名/.ssh/」と、「.ssh/authorized_keys」を作り、権限を変更しておく
$ cd $ mkdir .ssh $ ls -la total 28 drwxr-xr-x 3 sei sei 4096 Jun 1 06:22 . drwxr-xr-x. 3 root root 4096 Jun 1 05:54 .. -rw------- 1 sei sei 614 Jun 1 06:17 .bash_history -rw-r--r-- 1 sei sei 18 Aug 10 2021 .bash_logout -rw-r--r-- 1 sei sei 141 Aug 10 2021 .bash_profile -rw-r--r-- 1 sei sei 492 Aug 10 2021 .bashrc drwxrwxr-x 2 sei sei 4096 Jun 1 06:22 .ssh $ chmod 700 .ssh/ $ ls -la total 28 drwxr-xr-x 3 sei sei 4096 Jun 1 06:22 . drwxr-xr-x. 3 root root 4096 Jun 1 05:54 .. -rw------- 1 sei sei 614 Jun 1 06:17 .bash_history -rw-r--r-- 1 sei sei 18 Aug 10 2021 .bash_logout -rw-r--r-- 1 sei sei 141 Aug 10 2021 .bash_profile -rw-r--r-- 1 sei sei 492 Aug 10 2021 .bashrc drwx------ 2 sei sei 4096 Jun 1 06:22 .ssh $ touch .ssh/authorized_keys $ ls -la .ssh/ total 8 drwx------ 2 sei sei 4096 Jun 1 06:23 . drwxr-xr-x 3 sei sei 4096 Jun 1 06:22 .. -rw-rw-r-- 1 sei sei 0 Jun 1 06:23 authorized_keys $ chmod 600 .ssh/authorized_keys $ ls -la .ssh/ total 8 drwx------ 2 sei sei 4096 Jun 1 06:23 . drwxr-xr-x 3 sei sei 4096 Jun 1 06:22 .. -rw------- 1 sei sei 0 Jun 1 06:23 authorized_keys
Macのターミナルからscpコマンドで、公開鍵「id_ecdsa.pub」をサーバーの「/home/sei/.ssh/」に転送
sei@MacBook-Pro ~ % scp -i ./.ssh/20220522002724.pem ./.ssh/id_ecdsa.pub root@160.251.100.96:/home/sei/.ssh/ id_ecdsa.pub 100% 275 11.4KB/s 00:00
サーバーのターミナルで、届いたか確認
$ ls -la .ssh/ total 12 drwx------ 2 sei sei 4096 Jun 1 06:23 . drwxr-xr-x 3 sei sei 4096 Jun 1 06:22 .. -rw------- 1 sei sei 0 Jun 1 06:23 authorized_keys -rw-r--r-- 1 root root 275 Jun 1 06:23 id_ecdsa.pub
「id_ecdsa.pub」を「authorized_keys」に転記する
$ cd .ssh/ $ cat id_ecdsa.pub >> authorized_keys
Macのターミナルから、生成した秘密鍵「id_ecdsa」を使用して、一般ユーザーでSSHリモートログインできることを確認
sei@MacBook-Pro ~ % ssh sei@160.251.100.96 -i ./.ssh/id_ecdsa Last login: Sun May 22 01:44:01 2022 $
SSHのセキュリティ強化
SSHでパスワード認証を禁止する
# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_20220502
# vi /etc/ssh/sshd_config
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
sshdの設定反映
# systemctl reload sshd
rootでssh接続不可、または公開鍵が必要とする
# vi /etc/ssh/sshd_config
「PermitRootLogin yes」という行があればコメントアウトして「PermitRootLogin no」を挿入
※CentOS Stream 8以前
#LoginGraceTime 2m #PermitRootLogin yes PermitRootLogin no #rootでSSH接続不可 #StrictModes yes #MaxAuthTries 6 #MaxSessions 10
「#PermitRootLogin prohibit-password」という行があれば、コメントを外し、公開鍵のみ認証するように変更
※CentOS Stream 9以降
#LoginGraceTime 2m
PermitRootLogin prohibit-password #rootで接続する場合公開鍵が必要
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
OpenSSHのバージョンによりコンフィグファイルの内容が異なるらしいが、CentOS stream8 OpenSSH8.0では「PermitRootLogin yes」、CentOS stream9 OpenSSH8.0では「#PermitRootLogin prohibit-password」となっていた。
OpenSSHのバージョンを確認
# ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
SSHのポート番号を変更する
sshの設定ファイルを編集
# vi /etc/ssh/sshd_config
「Port 8022」を挿入して保存
#
#Port 22
Port 8022
#AddressFamily any
#ListenAddress 0.0.0.
sshdの再起動
# systemctl reload sshd
Firewallゾーンの確認
# firewall-cmd --get-active-zones public interfaces: eth0
Firewallの設定確認
[root@118-27-103-211 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Firewallの設定に、ポート番号8022を許可する設定を追加する
TCP8022 ポート番号許可
# firewall-cmd --permanent --zone=public --add-port=8022/tcp success
ssh(デフォルトの22番ポート)を削除
# firewall-cmd --permanent --zone=public --remove-service=ssh success
Firewallの再起動
# firewall-cmd --reload success
Firewallの設定確認
services:からsshが消えて、ports:に8022/tcpがあることを確認
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client
ports: 8022/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
待ち受け状態確認
[root@118-27-103-211 ~]# ss -tnlp State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:8022 0.0.0.0:* users:(("sshd",pid=93125,fd=4)) LISTEN 0 128 [::]:8022 [::]:* users:(("sshd",pid=93125,fd=5))
ポート番号8022でSSH接続確認
sei@MacBook-Pro ~ % ssh root@160.251.100.96 -i ./.ssh/20220522002724.pem -p 8022 Last login: Sun May 22 04:08:08 2022 from 25.211.20.113 #
SSHの接続元IPアドレスをIPv4 IPv6か限定する
sshの設定ファイルを編集
# vi /etc/ssh/sshd_config
「AddressFamily」のコメント「#」を外し、
「inet」 と追記するとIPv4で待ち受ける
「inet6」と追記するとIPv6で待ち受ける
#Port 22
Port 8022
AddressFamily inet #IPv4だけで待ち受ける
#ListenAddress 0.0.0.0
#ListenAddress ::
#Port 22
Port 8022
AddressFamily inet6 # IPv6だけで待ち受ける
#ListenAddress 0.0.0.0
#ListenAddress ::
sshdの再起動
# systemctl reload sshd
待ち受け状態の確認(IPv4の場合)
[root@118-27-103-211 ~]# ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:8022 0.0.0.0:* users:(("sshd",pid=93780,fd=5))
待ち受け状態の確認(IPv6の場合)
[root@118-27-103-211 ~]# ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 [::]:8022 [::]:* users:(("sshd",pid=93774,fd=4))
SSHのKeep Alive設定
SSH接続時に10分ほど放置していると「client_loop: send disconnect: Broken pipe」というメッセージと共に切断されるかと思いますが、
# vi /etc/ssh/sshd_config
107行目付近のコメント「#」を外して、下記のように記述し、
TCPKeepAlive yes #KeepAliveを有効にする #PermitUserEnvironment no #Compression delayed ClientAliveInterval 300 #300秒ごとに応答確認する
sshdの再起動
# systemctl reload sshd
次やること
次やること(WEBサーバーのインストール) 【CentOS stream 9】 Apacheをインストールする または 【CentOS stream 9】 Nginxをインストールする
参考サイト
【ターミナル(Linux,Mac)】scpコマンドでサーバとファイルのやり取りをする
一般ユーザーで公開鍵認証を使用してSSHログインする|ConoHa VPSサポート
公開鍵認証を設定する|ConoHa VPSサポート
第7回:エディタを使ってみる!|ConoHa VPSサポート
コマンドを操作してみよう|ConoHa VPSサポート
ディスカッション
コメント一覧
まだ、コメントがありません