さくらVPS上でLAMP環境を構築した際の覚書です。
すでに、VPS上でUbuntu Server 18.04がインストールされた直後、という条件で設定をしていきます。

 

 

ゴール

  • さくらVPSを利用
  • OS: Ubuntu Server 18.04 LTS (カスタムOSを選択)がインストール済み
  • Apache2、PHP、MariaDBをインストールする

今回は、Ubuntu Server 18.04 LTS をインストールした直後、SSHの設定や、ファイアウォールの設定をします。

 

インストール直後の設定

 

Vimインストール

  • vimのインストール
$ sudo apt install vim
  • 標準エディタの変更
$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[* ], or type selection number: 3

update_alternativesでは、3 のvim basicを選ぶ。

 

vimのcolorschemeをインストール

ここは自分自身の趣味的な部分ですが、vimのcolorshcemeにmolokaiを導入します。

  • Gitをインストール
$ sudo apt install git
  • colorscheme、molokaiをGitHubからクローン
$ git clone https://github.com/tomasr/molokai
  • 必要なディレクトリを作成し、colorschemeファイルを移動
$ mkdir -p ~/.vim/colors
$ mv molokai/colors/molokai.vim ~/.vim/colors/

 

.vimrcを編集して、vimをカスタマイズ

$ vi ~/.vimrc
syntax on
colorscheme molokai
set t_Co=256
set bg=dark
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" デフォルトの文字コード
set encoding=utf-8
" ファイルエンコーディング
set fileencoding=utf-8
" 自動判別に使用する文字コード
set fileencodings=iso-2202-jp,euc-jp,utf-8,ucs-2,cp932,sjis
" オートインデント
set autoindent
" 行番号表示
"set number
" 現在の行を強調表示
set cursorline
" インクリメンタルサーチ
set incsearch
" 最終行まで検索したら先頭行へ
set wrapscan
" 検索時に大文字小文字を無視
set ignorecase
" 対応するカッコのハイライト表示
set showmatch
" モードを表示する
set showmode
" 入力中のコマンドを表示
set showcmd
" バッファが編集中でも他のファイルを開けるようにする
set hidden
" 編集中のファイルが変更されたら自動で読み直す
set autoread
" 編集中のファイル名を表示
set title
" ルーラーを表示
set ruler
" tab文字を半角スペースにする
set expandtab
" タブのスペース数
set tabstop=4
" 行頭でのタブの表示幅
set shiftwidth=4

 

ホスト名の設定

  • ホスト名を変更する
$ sudo vi /etc/hosts
127.0.0.1   localhost
xxx.yyy.zzz.aaa myhostname.example.com  myhostname
  • ホスト名の確認
$ sudo vi /etc/hostname
  • ここで再起動

必要に応じて、ゾーン設定でこのサーバに関する情報を登録します。

 

ssh経由でログインできるようにする

 

ローカルマシンでのキーを作成

ローカルマシンが、UbuntuなどのLinux機であれば、話は簡単。ssh-keygenコマンドを使う。

$ ssh-keygen -t rsa -b 4096 -C "someuser@hostname"
  • 保存場所を効かれるので、そのまま[Enter]キーを叩く
Generating public/private rsa key pair.
Enter file in which to save the key (/home/someuser/.ssh/id_rsa):
  • どのファイルにキーを保存するか指定します。ここでは、/home/someuser/.ssh/id_rsaにします。もし、ディレクトリがなかった場合は、自動的に作成されます。
Created directory '/home/someuser/.ssh'.
Enter passphrase (empty for no passphrase):
  • 秘密キーに設定するパスワードを入力。パスワードなしにすることも出来ますが、パスワードを設定するほうが安全なのはいうまでもありません。
Enter same passphrase again:
  • パスワードの確認入力
Your identification has been saved in /home/someuser/.ssh/id_rsa.
Your public key has been saved in /home/someuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hVFT7MWklNlz3E3sYrNrzGammJzZbPDuDu5hNO9C+XQ someuser@hostname
The key's randomart image is:
+---[RSA 4096]----+
|        ..ooo*.++|
|         o o+.= *|
|        . .... + |
|         .  . + .|
|        S o. . + |
|         .+o. E  |
|         .+=.+ . |
|         +.@+ O  |
|         .O*O*   |
+----[SHA256]-----+
  • ~/.sshに、公開キーであるid_rsa.pub、秘密キーであるid_rsaが作成されます。

Windowsで作成する場合、ターミナルエミュレータ、Teratermを使用します。TeraTermにはsshキーを作成する機能があります。

以下は、簡単ですがその手順です。

  1. [設定] ⇒ [SSH鍵生成]
  2. [鍵の種類]をRSA、 ビット数2048にして、[生成]ボタンを押す
  3. [鍵のパスフレーズ] と、[パスフレーズの確認]にパスワードを入力
  4. [公開鍵の保存]、[秘密鍵の保存]ボタンで、ファイルを保存する
    (保存場所は、多分C:\Users\SomeUser\ssh)でよかったような気がします。

 

公開キーをVPS側に送る

現在、SSHのポート(22番)は開いたままだともうので、単純にscpコマンドでもいいと思います。

scp ~/.ssh/id_rsa.pub someuser@xxx.yyy.zzz.aaa:

あとはVPSにログインして、

cat id_rsa.pub >> ~/.ssh/authorized_keys

で、OKです。

Windowsの場合は、TeraTermでリモートでログインして、id_rsa.pubファイルをWindow上にドラッグアンドドロップする、という方法があります。その他にも、例えば:

  • WinSCPでファイルを転送。
  • さくらVPSコントロールパネルの、「シリアルコンソール」からログオンして、コピペする。
  • TeraTerm上で、直接コピペ。

 

sshd_configの設定

設定内容は以下の通り。

  • 公開キー認証でのみログイン
  • rootはsshでのログイン不可
  • ポート番号は、標準の22番から変更
# ポートを22番から別の番号にする
Port 60022
# rootでのログインを拒否
PermitRootLogin no
# 公開キーによる認証を許可する
PubkeyAuthentication yes
# パスワード認証を拒否
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePam no
X11Forwarding no
PrintMotd no
AcceptEnv LANG LC_*
Subsystem       sftp    /usr/lib/openssh/sftp-server

/etc/servicesを編集して、sshのポート変更を反映しておきます。

# この文をコメントアウト
#ssh      22/tcp       # SSH Remote Login Protocol
    :
# 末尾に追加
ssh       60022/tcp

最後に、sshdを再起動します。

設定を間違えたときのために、現在開いているsshコネクションはそのままにしておいたほうが無難かもしれません。

 

ファイアウォール (UFW) を有効にする

Ubuntuには、ufwというiptablesをラッピングしたファイアウォール管理コマンドがあるので、それを使ってファイアウォールを設定します。

原則:

  • すべてのポートに対しての受信は不可(deny)に
  • 必要なポートのみ開く

ということにします。

  • ufwの状態を確認
    ⇒ 初期状態では起動していないはずです。
$ sudo ufw Status
Status: inactive
  • 受信をすべて拒否する
$ sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
  • sshポート(例: 60022/tcp) での受信を許可する。
$ sudo ufw allow 60022
Rules updated
  • ufwを有効にする
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
  • 状態も確認する
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
60022                      ALLOW       Anywhere
60022                      ALLOW       Anywhere (v6)
  • ローカル端末から接続

ローカル環境の端末からsshコマンドで接続できるか確認。

$ ssh localuser@xxx.yyy.zzz.aaa -i ~/.ssh/id_rsa -p 60022

または、

$ ssh localuser@newserver.example.jp -i ~/.ssh/id_rsa -p 60022

 

参考資料


0件のコメント

コメントを残す

メールアドレスが公開されることはありません。