Great just isn't good enough.

毎日が楽しいなんて、毎日楽しくないのと同じ

さくらVPS[ubuntu16.04]の初期設定

インフラ関連は全く未経験のnekokoです。
インフラの学習も兼ねてVPSを契約したので、初期設定の内容を纏めて行うと思います。
仮装サーバを借りて最初に研究しようと思った題材は最近流行り?のmastodonですので、そこまでの道のりもブログにできればと考えています。
mastodonを運用するか、解体してNEMのアプリケーション作成に使用するかはまだ未検討ですが、頑張って行きます。


今回使用する環境

Mac OS Sierra 10.12.4
・さくらのVPS
  メモリ 1G
  ストレージ SSD 30G
  CPU 2コア
・OS Ubuntu 16.04


目次

1.パッケージリストの更新
2.インストールされたパッケージの更新
3.ユーザの追加
4.SSHDの設定
5.ファイアウォールの設定
6.公開鍵認証の設定
7.パスワード認証の不可設定


初めてのサーバ設定なので、間違ってる部分や過不足あるかもしれません。
いろんなサイトを参考に環境設定しましたが、誤記があればご指摘頂けると幸いです。

[前提]
様々なファイルに変更をかけて行きますので、変更前にバックアップの取得をしてください。


パッケージリストの更新

[VPS]

$ sudo apt-get update

インストールされたパッケージの更新

[VPS]

$ sudo apt-get upgrade

ユーザの追加

[VPS]

$ sudo adduser ユーザ名

パスワードが聞かれますので、新規で入力してください。

ここまで完了したら次の作業は追加したユーザで行います。
ユーザの変更は以下のコマンドで実施します。

[VPS]

$ su  変更したいユーザ名

SSHDの設定

SSHDの設定を行う前に、外部(ターミナル)からSSH接続をパスワード認証で行えるか確認します。
[Mac]

$ ssh -l ユーザ名 ホスト名
例)ssh -l mastodon 192.168.xx.xx

接続の確認ができたら、これからSSH接続を公開鍵認証に変更し、パスワード認証は行えなく変更します。
まずはポートの変更です。
22番ポートから任意の番号に変更してください。

[vps]
/etc/ssh/sshd_config

$ sudo vi /etc/ssh/sshd_config
---
# What ports, IPs and protocols we listen for
-   Port 22
+   Port 50022

/etc/services

$ sudo vi /etc/services
---
-  ssh 22/tcp #SSH Remote Login Protocol
+  ssh 50022/tcp #SSH Remote Login Protocol 

次にrootユーザでのログインを不可にします。
/etc/ssh/sshd_config

$ sudo vi /etc/ssh/sshd_config
---
-   PermitRootLogin yes
+   PermitRootLogin no

最後にPAM認証を不可にします。
/etc/ssh/sshd_config

$ sudo vi /etc/ssh/sshd_config
---
-   UsePAM yes
+   UsePAM no

ここまで完了したら、sshdの再起動を行います。

$ sudo service ssh restart

ファイアウォールの設定

まずはufwのインストールをします。
[vps]

$ sudo apt-get install ufw

IPv6サポートのOFFにします。
/etc/default/ufw

$ sudo vi /etc/default/ufw
---
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
-   IPV6=yes
+   IPV6=no

ポートを全て封鎖して、必要なポートのみ解放します。

$ sudo ufw default deny

$ sudo ufw allow 50022(自分で設定したポート番号を指定)

ufwを有効化します。

$ sudo ufw enable

ここまでの設定の確認をします。

$ sudo ufw status
---
Status: active

To                           Action      From
--                            ------      ----
50022/tcp                     ALLOW       Anywhere

次に、iptablesの設定を変更しポートの解放を行います。
ここでは標準のポート22を50022に変更します。他のポートを使用する方は
ここで設定をしてください。



[vps]
/etc/iptables/iptables.rules

$ sudo vi /etc/iptables/iptables.rules
---
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#[nekokoコメント]ここの22ポートを50022に変更
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50022 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

変更を反映します。

$ sudo iptables-restore < /etc/iptables/iptables.rules

ここまで完了したら、OSの再起動をしてください。
OSの再起動が完了すると、新しく設定したポートでのパスワード認証接続が確認できるはずです。

[Mac]

接続できるパターン
 $ ssh -P 50022 -l ユーザ名 ホスト名
接続できないパターン
 $ ssh -l ユーザ名 ホスト名

公開鍵認証の設定

ここまで問題ない場合は、公開鍵認証の設定を行って行きます。
まず、サーバ側に/.sshフォルダの作成をします。

[vps]

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh


次に外部接続する端末で秘密鍵と公開鍵を作成します。
鍵の作成ができたら、作成した公開鍵をサーバに設定します。
[Mac]

$ ssh-keygen
$ cd ~/.ssh
$ ls -la
---
id_rsa(秘密鍵)
id_rsa.pub(公開鍵)
が存在するはずです。


サーバに公開鍵を転送するには、以下のコマンドで行います。
[Mac]

$ scp ~/.ssh/id_rsa.pub user@host:~/.ssh/authorized_keys

サーバ側に配置されたか確認して、パーミッションの変更をします。
[vps]

$ cd ~/.ssh
$ ls -la
---
authorized_keysが存在すればOK
---

$ chmod 600 authorized_keys


ここまで完了したら、公開鍵接続を試して見ます。
[Mac]

$ ssh -i ~/.ssh/id_rsa user@host

公開鍵接続が無事できたら、エイリアスの設定をして見ましょう。
クライアント側の~/.ssh/configを設定することで user@host の部分を省略できます。
これは鍵認証と直接関係ないですが、やっておくと便利です。

[Mac]
~/.ssh/config

$ vi ~/.ssh/config
---
Host ホスト名(適当に設定)
    HostName xxx.xxx.xxx.xxx
    User ユーザ名
    IdentityFile ~/.ssh/id_rsa

例)
Host mastodon
   HostName 192.168.xx.xx
   User mastodon
   IdentityFile ~/.ssh/id_rsa
---
パーミッションの変更をして起きます。
$ chmod 600 ~/.ssh/config

この設定で、以下のコマンド接続できるようになるはずです。

$ ssh mastodon

パスワード認証の不可設定

最後にパスワード認証をできなようにしておきます。

[vps]
/etc/ssh/sshd_config

$ sudo vi /etc/ssh/sshd_config
---
-   PasswordAuthentication yes
+   PasswordAuthentication no

sshdを再起動したら、パスワード認証ができないことを確認してください。
また、公開鍵認証接続はできることも確認できたら、全て完了です。


では。

広告を非表示にする
日本で一番簡単にビットコインが買える取引所 coincheck bitcoin