スポンサーリンク
スポンサーリンク

さくらインターネットVPS(9680円/年)+ さくらインターネットドメイン(3,220円/年) + Linux + Nginx + SiteGuard + Asp.net Core + SQLite 本番環境構築手順

.NET CoreASP.NET CoreC#ChartCSSDapperHTMLJavaScriptLinux・ShellNginxOpenSSLSITEGUADSQLiteVisual StudioVPS レンタルサーバインターネットオープンソースセキュリティ対策ツール・サービスデータベース開発方式

前回作成した さくらインターネットVPS(880円/月) + Linux + Nginx + SiteGuard + Asp.net Core + SQLite 本番環境構築手順 を、ホスト名ではなくドメイン名でインターネットに公開する手順を作成しました。
今回構築した https://unikktle.com は、今後も機能を追加して行こうと思っています。

 

  1. さくらVPS 契約
      1. 契約
      2. サーバー設定
  2. さくらVPS コントロールパネル
      1. サーバ情報/ネットワーク情報 確認
  3. OSインストール
    1. ISOファイル
      1. ISOファイルダウンロード
      2. WinSCP設定
      3. ISOファイルアップロード
    2. OSインストール
      1. VNCコンソール
      2. 言語選択
      3. インストール先
      4. ソフトウェアの選択
      5. ネットワークとホスト名
      6. rootパスワード
      7. ユーザーの作成
      8. インストール開始
  4. ssh接続確認
      1. Puttyからログインできることを確認
      2. PuTTYの環境設定を変更して使い易くしておく
  5. NetworkManager設定
      1. 使わないNICを削除
      2. 状態を確認
      3. メモ
  6. SELinux設定
      1. ツールをインストール
      2. ポリシー変更
      3. 確認
      4. ポリシー変更
      5. 確認
      6. メモ
  7. ファイアウォール設定
      1. 設定変更
      2. 確認
      3. メモ
  8. ssh接続ポート番号変更
      1. 設定変更
      2. 確認
  9. ssh接続確認
      1. OS再起動
      2. PuTTYで接続
  10. ssh接続 公開鍵/秘密鍵キー設定
      1. 公開鍵/秘密鍵 作成
      2. public key(公開鍵)をLinux に登録
      3. PuTTYでログイン後 キーファイルを変換
      4. パスワード認証禁止に設定
      5. PuTTY接続を秘密鍵認証に切り替える
      6. WinSCPの接続設定を秘密鍵認証に切り替える
  11. OS更新
      1. 更新
      2. 確認
  12. 必要なツールをインストール
      1. SELinux無効化
      2. インストール
      3. SELinux有効化
      4. Javaメモ
  13. SiteGuard その1
      1. 前準備
      2. SiteGuard インストール
      3. シグネチャ更新URL 変更
  14. Nginx その1
      1. Nginx用のユーザ追加
      2. 関連フォルダ作成
      3. ビルド/インストール
      4. サービス登録
      5. Nginx接続確認
      6. メモ
  15. SiteGuard その2
    1. SiteGuardセットアップ
      1. セットアップ実行
      2. 接続確認
    2. SiteGuard設定(Webコンソール)
      1. ログイン
      2. 基本設定
      3. 高度な設定
      4. ライセンス情報
      5. 更新設定
  16. ASP.NET Core
      1. フォルダ作成
      2. ASP.NET Coreインストール
  17. デプロイ(発行)
    1. ローカルの開発PCで作業
      1. 発行設定
      2. 発行
      3. 発行されたファイルを調整
      4. Linuxへアップロード
    2. Linuxで作業
      1. アップロードしたフォルダを移動
      2. WEBアプリ起動テスト
      3. Webサービス登録
      4. WEBサービス接続テスト
  18. Nginx その2
      1. nginx.conf 編集前
      2. nginx.conf 編集
      3. 接続確認
  19. Nginx その3
      1. バーチャルホストconfファイル作成
      2. 接続確認
  20. ドメイン
    1. ドメイン取得
    2. ドメインコントロールパネル 設定
      1. 取得したドメインと さくらVPSのIPを紐付ける
    3. Linux設定
      1. バーチャルホストconf設定
  21. https化
      1. SSL証明書(Let’s Encrypt)取得手順を確認
      2. snapd
      3. certbot
      4. Nginx 確認
      5. https接続確認
  22. OS再起動後 接続確認
      1. OS再起動
      2. https接続確認
      3. OSの状態を確認
  23. さくらVPS パケットフィルタ
      1. 設定
      2. 確認
  24. セキュリティ診断
      1. Qualys SSL Labs
      2. ViewDNS.info

さくらVPS 契約

契約

今回採用した契約は「1G 石狩」。「512MB」だとLinuxのOSを動かすだけでメモリが枯渇し、CPUが1CoreだけだとOSの動きが悪い、東京大阪石狩リージョンでは石狩が最も安い。
 https://vps.sakura.ad.jp/

 

サーバー設定

 

sshキー設定は無し。

 

デフォルトのままで良い。

 

確認し契約終了。

 

さくらVPS コントロールパネル

サーバ情報/ネットワーク情報 確認

契約したさくらVPSのコントロールパネルを開く。
https://secure.sakura.ad.jp/auth/login?url=https://secure.sakura.ad.jp/menu/service/

 

「ネットワーク」を確認しメモしておく。

 

OSインストール

外部公開する Linuxサーバーを構築する場合、最近の主流は CentOS ではなく Rocky Linux。
同じRHEL系統ですが CentOS より Rocky Linux の方が堅牢。

ISOファイル

サービス提供会社がカスタマイズしたOSを使うのは好きじゃないので、Rocky Linux 専用サイトから ISOファイルをダウンロードし、VPSへアップロードしてインストールします。

ISOファイルダウンロード

https://rockylinux.org/download

 

WinSCP設定

WinSCPの環境設定を変更して使い易くしておく。

 

ISOファイルアップロード

ISOファイルをVPSへアップロードする為のSFTPアカウント取得

 

発行されたSFTPアカウントをメモしておく。

 

発行されたSFTPアカウントを使い、WinSCPでSFTP接続し、「ISO」フォルダ配下に ISOファイルをアップロードする。
 ※アップロードが終わるまで7時間かかりました。

 

アップロード後、「内容確認」をクリック。

 

「OS再インストール」をクリック。

 

OSインストール

VNCコンソール

「VNCコンソールを起動」をクリック。

 

boot時は なにもせず暫く待つ

 

言語選択

言語選択で日本語を選択し、「続行」をクリックて少し待つ。
 ※反応が悪いことがある。

 

インストール先

「インストール先」をクリック。

 

「カスタム」を選択し「完了」クリック。

 

「/」を選択状態にして「-」をクリック。

 

全て削除。

 

「ここをクリックすると自動的に作成します」をクリック。

 

自動作成された設定そのまま「完了」クリック。

 

「変更を許可する」クリック。

 

「インストール先」がエラーになっていないことを確認。

 

ソフトウェアの選択

「ソフトウェアの選択」クリック。

 

「最小限のインストール」のみ選択、その他は全て未選択で「完了」クリック。

 

「ソフトウェアの選択」が「最小限のインストール」になっていることを確認。

 

ネットワークとホスト名

「ネットワークとホスト名」クリック。

 

「ホスト名」に「さくらVPSコントロールパネル > ネットワーク > 標準ホスト名」を入力し「適用」をクリック。
※「ens3」に対応するネットワークインターフェースは「eth0」。

メモ

 

「設定」をクリック。

 

「IPv4設定」は「メソッド」を「手動」に変更し各値を入力。

メモ

 

「IPv6設定」は使わないので「メソッド」を「無視」に変更。

 

他のタブはデフォルト設定のまま、「保存」クリック。

 

「オン」に切り替え「接続済み」になるのを確認。

 

「完了」をクリック。

 

rootパスワード

「rootパスワード」クリック。

 

パスワードを入力し「完了」をクリック。

 

ユーザーの作成

「ユーザーの作成」をクリック。

 

ユーザー名とパスワードを入力し「完了」クリック。
 ユーザ名: u
 パスワード: p
 ※サンプルなので ID/パスワード は簡素な1文字にしています。

 

インストール開始

「インストールの開始」をクリック。

 

インストールが完了したら「システムの再起動」をクリック。

 

OSインストール時は、シャットダウン後に自動起動しないので、さくらVPSコントロールパネルからOSを起動する。

 

VNSコンソールで、OSが起動し、rootユーザーでログインできることを確認。

 

ssh接続確認

Puttyからログインできることを確認

IPアドレスとポート番号を入力。
設定は「Save」で保存しておき、次回からは「Load」して「Open」で接続。

メモ。

 

一般ユーザでログイン。
 ユーザ名: u
 パスワード: p

 

rootに変更。「$」が「#」に変われば成功。

 

PuTTYの環境設定を変更して使い易くしておく

Windowsサイズを広げておく。

 

フォントを「MSゴシック」に変更、サイズを大きくして見易くしておく。

 

自動切断防止設定。
 ※さくらVPSだと数分の報知で自動切断される。

 

文字コードはUTF8に。

 

NetworkManager設定

使わないNICを削除

ens4 ens5 は使わないNICなので削除。

メモ。

 

状態を確認

OS再起動後、ssh接続できるか確認。

 

NICの状態を確認。

 

メモ

NetworkManager の不要なログを止めたい。
 https://blog.neoflow.jp/linux/3229/

無効化。

有効化する場合。

ログ確認。

 

SELinux設定

ツールをインストール

 

ポリシー変更

SELinux のポリシーに新しいsshポート番号を追加。

 

確認

SELinux が許可しているポート番号を確認する。

 

ポリシー変更

localhostのリバースプロキシ接続を許可。

 

確認

OS再起動後でもssh接続できるか確認。

 

メモ

※22ポートは削除できない。

SELinuxを無効化する場合(disabled)。

SELinuxの状態確認。

 

ファイアウォール設定

設定変更

httpのポートを開放。 ※Let’s Encript のSSL証明書更新処理がhttpポートを使う。

 

httpsのポートを開放。

 

ping/icmpに応答させない。

 

IPv6は使わないので dhcpv6-client を削除。

 

cockpitは削除。

 

forwardを無効化。

 

PuTTYからLinuxに接続している接続元IPアドレスを確認。

 

接続元IPアドレスに限定して必要なポートを開放。

 

ssh接続のデフォルトポート番号(22)は削除。

 

ファイアウォールを再起動。

 

確認

設定内容を確認。
 ※最終的な状態。

 

エラーが無いことを確認。

 

「runnning」でファイアウォールが有効になっていることを確認。

 

「enalbed」で自動起動になっていることを確認。

 

メモ

一時的に無効化。

 

ssh接続ポート番号変更

設定変更

sshd 設定変更。

新しいポート番号を追加。
rootでのログイン禁止を追加。

 

sshd を再起動。

 

確認

エラーがないか確認。

 

ssh接続確認

ここまでのネットワーク設定でssh接続できるか再確認。

OS再起動

 

PuTTYで接続

PuTTYで 10001 ポートに接続できるか確認。

 

PuTTYで 22ポートに接続できなくなっていることを確認。

 

ssh接続 公開鍵/秘密鍵キー設定

公開鍵/秘密鍵 作成

PuTTYgenで公開鍵/秘密鍵を作成。

 

「Generate」をクリック。

 

マウスの動きで乱数生成を行うので,進捗バーが Maxになるまで、ウインドウ上で適当にマウス を動かす。

 

「key passphrase」を入力し、「public key」で公開鍵をファイル保存、「private key」で秘密鍵をファイル保存する。
 key passphrase: p
 public key: id_rsa.pub
 private key: id_rsa.ppk

 

public key(公開鍵)をLinux に登録

WinSCPをパスワード認証で接続。

 

public keyファイルを、ログインユーザのホームディレクトリにアップロード。
 id_rsa.pub

 

PuTTYでログイン後 キーファイルを変換

一般ユーザー(ログインユーザ)へ切り替え。

 

確実にホームディレクトリに移動。

 

ディレクトリ作成。

 

自分以外のアクセスを禁止。

 

変換。

 

公開鍵リスト作成。

 

自分以外の読み書きを禁止。

 

変換元ファイルを削除。

 

確認。

 

パスワード認証禁止に設定

rootユーザーに切り替え。
パスワード認証を禁止に変更。
 「PasswordAuthentication no」を追加。

 

sshサービス再起動。

 

PuTTY接続を秘密鍵認証に切り替える

古い設定を Loadし名前を変えて Save。

 

キーファイルを設定。
 id_rsa.ppk

 

Saveで保存し、sshkeyファイル接続専用の設定を増やす。

 

秘密鍵でログイン出来るか確認。
 login as : u
 PassPhrase for key : p

 

WinSCPの接続設定を秘密鍵認証に切り替える

「パスワード」入力欄はブランクで良い。

 

キーファイルを設定。
 id_rsa.ppk

 

保存。

 

ログイン。接続時にパスフレーズを入力しログインできるか確認。

PassPhrase for key : p

 

OS更新

更新

OSをyumでアップデート。

 

OS再起動。

 

確認

OSバージョン確認。

 

必要なツールをインストール

SELinux無効化

SELinuxを一時的に無効化。

 

インストール

各ツールを1つずつインストール。

 

SELinux有効化

SELinuxを有効化。

 

Javaメモ

OpenJDKは無償で、SiteguardもOpenJDKをインストールする手順になっているので、他のJDKは検討しない。

バージョン確認。

 

SiteGuard その1

前準備

VPS SiteGuard Server Edition(WAF)。
 https://manual.sakura.ad.jp/vps/server/etc/siteguard.html

 

マニュアルをダウンロード。
 https://manual.sakura.ad.jp/cloud/securearea/siteguardserveredition.html

 

ダウンロードしたマニュアルを開いて作業。
 siteguard-server-edition-700-3_nginx.pdf

パスワード、URL、ライセンス情報をローカルにメモしておく。
 https://manual.sakura.ad.jp/cloud/securearea/siteguardserveredition.html

 

SiteGuard インストール

ワークフォルダ作成。

 

SiteGuardのソースをダウンロード。

https://manual.sakura.ad.jp/cloud/securearea/siteguardserveredition.html

 

ソースを解凍。

 

SiteGuard本体をインストール。
 SiteGuardインストール先ディレクトリ:/opt/jp-secure/siteguardlite 

 

シグネチャ更新URL 変更

シグネチャ更新URL取得。
 https://manual.sakura.ad.jp/cloud/securearea/siteguardserveredition.html

 

シグネチャ更新URLを変更。

 

Nginx その1

Nginx用のユーザ追加

Nginxの実行ユーザ作成。
 ※nologinを指定しているので、コンソールからnginxuserユーザでログインすることはできない。

 

ユーザーの確認。

 

関連フォルダ作成

バーチャルホスト用設定ファイルの保存先 … sites-available。
有効にするバーチャルホストのリンク設定先 … sites-enabled。
sites-availableディレクトリには全てのバーチャルホスト用設定ファイルを保存します。
sites-enabledディレクトリには有効にするバーチャルホストの設定ファイルに対してシンボリックリンクを設定していきます。
sites-enabledのシンボリックリンクが設定されているバーチャルホストが有効になるイメージです。

 

ビルド/インストール

Nginx、OpenSSL、ソースダウンロード。

 

tarファイルを解凍。

 

Nginxのソースコードを修正。
 ※httpレスポンスからNginx情報を削除し、Nginxを使っていることを判別させない。
 ※これ以上空にするとWEBブラウザでHTMLを処理できない不具合が発生しハマる。ここまで減らせていればNginxを使っているのはバレないので良しとする。

static u_char ngx_http_server_string[] = “Server: nginx” CRLF;
static u_char ngx_http_server_full_string[] = “Server: ” NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = “Server: ” NGINX_VER_BUILD CRLF;

static u_char ngx_http_server_string[] = “Server: ” CRLF;
static u_char ngx_http_server_full_string[] = “Server: ” CRLF;
static u_char ngx_http_server_build_string[] = “Server: ” CRLF;

 

configureコマンド実行。

Configuration summary。

 

Nginxインストール。

 

組み込みモジュールの確認。

 

サービス登録

サービスファイルを作成。