Blog

  • AWS Lightsailでサーバーを構築-Webサーバー編

    〇XAMPPの設定
    以下を参考にした。他には古いバージョン用の設定が多くあるので注意

    https://bazubu.com/xampp-wordpress-23795.html

    XAMPPのダウンロード

    https://www.apachefriends.org/jp/download.html

    Apacheバージョンの確認
    C:\xampp\apache\bin>httpd.exe -v

    Server version: Apache/2.4.43 (Win64)
    Apache Lounge VC15 Server built: Apr 22 2020 11:11:00

    ・起動
    以下にXAMPP control Panelのショートカットをコピーする
    “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp”

    〇サーバー証明書の取得
    ・mod_md
    apacheのmod_mdモジュールでの作成、更新ができるらしいと聞いて試したが失敗
    Windowsでは動かないのかもしれない

    http://apache-http-server.18135.x6.nabble.com/mod-md-1-1-0-repeating-on-error-td5040498.html

    ・Windows用ツールをWindowsサーバーにインストール
    https://github.com/win-acme/win-acme/releases からwin-acme.v2.1.8.847.x64.trimmed.zip をダウンロードC:\Tooks\win-acmeに解凍。

    ・証明書を作成
    Apacheを立ち上げておく
    C:/xampp/apache/conf/certs フォルダーを作成しておく

    ACME.exeを起動
    最初は–testオプションを付けてステージングサーバーでテストする。
    本番サーバーは回数制限があるため、試行できない。

    Please choose from the menu: m
    How shall we determine the domain(s) to include in the certificate?: 2
    Enter comma-separated list of host names, starting with the common name: mydomain.com,www.mydomain.com
      Suggested friendly name '[Manual] mydomain.com', press to accept or type an alternative: <enter>
    How would you like prove ownership for the domain(s)?: 1
    Path to the root of the site that will handle authentication: C:/xampp/htdocs
      Copy default web.config before validation? (y/n) - no 
    What kind of private key should be used for the certificate?: 2 
    How would you like to store the certificate?: 2 Path to folder where .pem files are stored: C:/xampp/apache/conf/certs 
    Would you like to store it in another way too?: 5 
    Which installation step should run first?: 4 
    Enter email(s) for notifications about problems and abuse (comma seperated): postmaster@mydomain.com    
     Terms of service: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\LE-SA-v1.2-November-15-2017.pdf Open in default application? (y/n)
    Authorize identifier www.mydomain.com
    Authorizing www.mydomain.com using http-01 validation (FileSystem)
    Answer should now be browsable at http://www.mydomain.com/.well-known/acme-challenge/-XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Preliminary validation looks good, but the ACME server will be more thorough
    Authorization result: valid
    Requesting certificate [Manual] mydomain.com
    Store with PemFiles…
    Exporting .pem files to C:/xampp/apache/conf/certs
    Installing with None…
    Adding Task Scheduler entry with the following settings
    Name win-acme renew (acme-v02.api.letsencrypt.org)
    Path C:\Tools\win-acme.v2.1.8.847.x64.trimmed
    Command wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
    Start at 09:00:00
    Time limit 02:00:00
    Do you want to specify the user the task will run as? (y/n*) - yes
    Enter the username (Domain\username): xxxxxxxx\yyyyyyy
      Enter the user's password: zzzzzzzzz
    Adding renewal for [Manual] www.mydomain.com
       Next renewal scheduled at 20xx/xx/xx xx:xx:xx
       Certificate [Manual] mydomain.com created
    Running in mode: Interactive, Simple
    Target plugin IIS not available: No supported version of IIS detected.

    サーバー証明書はfrendry nameごとに作成され、自動更新もその単位で行われるようだ。

    タスクスケジューラにwin-acme renew (acme-v02.api.letsencrypt.org)タスクが追加されている。

     ・作成された証明書をhttpd-ssl.confで指定する

    SSLCertificateFile "conf/certs/mydomain.com-crt.pem"
    SSLCertificateKeyFile "conf/certs/mydomain.com-key.pem"
    SSLCertificateChainFile "conf/certs/mydomain.com-chain.pem"

    ・証明書の確認

    apacheを立ち上げて以下のサイトなどで確認する

    https://www.digicert.com/help/

    ・上記ツールでうまくいかないときは、下記のツールを用いて手動で作成する。

     Let’s Encrypt の証明書をブラウザ上で簡単取得   https://qiita.com/tappie/items/76881fdf7996c57a105a

     ここで作られた署名鍵、RSA秘密鍵をwin-acmeに入力することでアカウントを設定できる
     アカウントが設定できればwin-acmeで自動更新タスクをタスクスケジューラに登録できる

    〇MercuryMail

    C:\xampp\MercuryMail\LOGSに
    IMAP4,POP3,SMTPフォルダーを作成
    Mercuri.iniファイルの[Protocols]セクションでS,P,C,Iのみ有効にしておく

    ・メールサーバーの確認
    Microsoftリモート接続アナライザー:送信 SMTP メール

    https://testconnectivity.microsoft.com/

    Scott Kitterman’s SPF Testing Tools:ドメインのSPFレコードが有効かどうかを確認する。

    http://www.kitterman.com/spf/validate.html

    ・ポート25ブロックへの対応

    Host : smtp.gmail.com
    Server_Port : 465
    SMTP_Username: xxxxxx@gmail.com
    SMTP_Password: yyyyyyyyyyyyy 2段階認証にして、アプリパスワード(Windows)を生成したもの
  • AWS Lightsailでサーバーを構築-プロキシーサーバー編

    〇squidを稼働

    ・squid
     https://wiki.squid-cache.org/KnowledgeBase/Windows からインストール

     squid_reverse.confの作成(抜粋)

        acl localnet src yyy.yyy.yyy.yyy/32 # PPPoE グローバルIP
      http_port 8080
      logformat squid %tl %6tr %>a %Ss/%03>Hs %
        logfile_rotate 13    #ログを13世代保有する

     
    ・セキュリティの設定
     Lightsailのファイアウォールに以下を追加する

    カスタム TCP 8080 送信元IPアドレス

     インスタンスのWindowsファイアウォールにてsquis.exeにTCPプロトコルの8080ポートを開けた入力規則を追加する
     squidをインストールした時にSquid Cache Serverの名前でデフォルトの3128ポートが許可されているので変更する

    ・ログローテートの設定
    タスクスケジューラで以下を定期的に実行する

    C:\Squid\bin\squid.exe -k rotate

    ・キャッシュの設定

    squid.confファイルの設定

    cache_dir aufs /cygdrive/c/Squid/var/cache/squid 3000 16 256
    cache_mem 256 MB

     キャッシュディレクトリーが存在しないとエラーが出るので、いろいろ試してみたが解消しない。

     どうやらキャッシュ用フォルダーを作るオプション-zでの実行時に、指定したフォルダーに変更できないみたいだ。

     そこで、-zオプション実行時はカレントディレクトリーをキャッシュ用フォルダーC:\Squid\var\cache\squidにしてから実行するようにしたら、キャッシュが作らるようになった。

      C:\Squid\var\cache\squid> C:\squid\bin\squid.exe -z -F

    ・squidの起動

     サービスを再起動する。

  • AWS Lightsailでサーバーを構築-サーバー構築編

    Lightsailでは指定の構成で一か月間(インスタンス合計750時間)無料で使用できる

    サーバー構成 いずれも最小構成(無料使用枠対象)

    Linux/Unix 3/50 USD/月

    • 512 MB メモリ 1 コアプロセッサ 20 GB SSD ディスク 1 TB 転送*

    Windows 8.00 USD/月

    • 512 MB メモリ 1 コアプロセッサ 30 GB SSD ディスク 1 TB 転送*

    料金に含まれているもの

    • 静的IP (アドレスアカウントごとに5つ、1インスタンスには1個のみ?) インスタンスにアタッチされていない場合は別料金
    • 直観的なマネジメントコンソール
    • DNS管理 (アカウントごとに 3 つのドメインゾーン)
    • 1-click SSH ターミナルアクセス (Linux/Unix)
    • 1-click RDP アクセス (Windows)
    • 強力な API
    • 可用性の高い SSD ストレージ サーバーのモニタリング

    〇作成したインスタンス

    • Lightsail リソース名:Windows_Server_2016-1 512 MB RAM、1 vCPU、30 GB のSSD Windows Server 2016 東京、ゾーン A (ap-northeast-1a) プライベート IP:xxx.xxx.xxx.xxx

    〇StaticIPをAttach

    追加コストなしで 5 つまで管理でくるらしい ただし、1インスタンスに1個しかアタッチできない

    〇ファイアウォール:

    • SSH TCP 22 任意の IP アドレス,Lightsail ブラウザ
    • SSH/RDP HTTP TCP 80 任意の IP アドレス Apache
    • HTTPS TCP 443 任意の IP アドレス Apache RDP
    • TCP 3389 任意の IP アドレス,Lightsail ブラウザ
    • SSH/RDP カスタム TCP 25 任意の IP アドレス MercuryMail smtp
    • カスタム TCP 110 任意の IP アドレス MercuryMail pop3
    • カスタム TCP 143 任意の IP アドレス MercuryMail imap4
    • カスタム TCP 587 任意の IP アドレス MercuryMail smtp
    • カスタム TCP 8080 client IP squid

    〇日本語化

    サーバーの言語を日本語に変更

    • Start-Settings-Time & language-Region & language-Add a language-日本語
    • Country to region から Japan を選択。
    • Languages の 日本語をクリック、Set as Defaultをクリック。
    • Languates の 日本語をクリック、Optionsをクリック。
    • しばらく待って、Download language pack の Download ボタンをクリック。
    • ダウンロードが終われば、←をクリック。
    • サインアウトしてサインオン。
    • スタート-設定-音声認識、地域、日付-地域 からタイムゾーンを (UTC+09:00) 大阪、札幌、東京 へ変更。

    日付と時刻の形式を変更

    • 時刻(短い形式):HH:mm
    • 時刻(長い形式):HH:mm:ss

    〇Windows Updateを実行

    3時間ぐらい待っていたが終わらないので一晩放置 翌日、イベントで確認したら、8時間余りかかっていたらしい

    〇フォルダーオプションの変更

    • ホーム-Windows Update、回復-開発者向け機能を使う
    • 署名されたすべてのアプリをインストールし、高度な開発機能を使用することができます。;クリック
    • 開発者モードをオンにしますか?:はい
    • より開発者フレンドリな…:適用
    • PowerShellスクリプトを実行するには…:適用
    • スタート-右クリック-コントロールパネル-エクスプローラーのオプション
    • 全般-エクスプローラーで開く:PC
    • 全般-クリック方法:ポイントを選択し、…
      • プライバシー:最近使ったファイル、よく使うフォルダー:チェックを外す
      • 適用ボタン
    • 表示-詳細設定
      • すべてのフォルダーを表示:on
      • 開いているフォルダーまで展開:on
      • フォルダーの結合の競合を非表示にする:off
      • ログオン時に以前のフォルダーウィンドウを表示する:on
      • 暗号化や圧縮されたNTFSファイルをカラーで表示する:on
      • 常にアイコン…:on
      • 常にメニュー…:on
      • 保護されたオペレーティングシステムファイルを表示しない(推奨):off

    〇インターネットオプションの変更

    • スタート-右クリック-コントロールパネル-インターネットオプション
    • 全般-スタートアップ:前回のセッション…
    • 全般-タブ 新しいタブの…:on
      • タスクバーにタブの…:off
      • 新しいタブを開いたとき:空白ページ
      • プライバシー-詳細設定 ファーストパーティ:ダイアログ、サードパーティ:ブロック

    〇タスクバーの設定

    • 通知領域 システムアイコンのオン/オフの切り替え
      • 常にすべてのアイコンを…:オン


    〇サーバーマネージャーの設定

    • IEセキュリティの強化を無効にする
      • サーバーマネージャー、ローカルサーバー

    〇UACを無効化

    • ビルトインのAdministrator以外を管理者権限で実行する。
    • Server OS ローカルセキュリティポリシーセキュリティの設定-ローカルポリシー-セキュリティオプション-ユーザーアカウント制御:管理者承認モードですべての管理者を実行する:無効
    • これを行うと、Service Control Managerでイベント IDが7000 のエラーが出るため、UAC File Virtualization サービスを無効化する
      • 場所 HKLM\System\CurrentControllSet\Services\luafv
      • 名前 Start
      • 種類 DWORD
      • 値 2 → 4 に変更

    〇ローカルユーザーの作成

    • 設定-アカウント-他のユーザー
      • ユーザー名:xxxx
      • パスワード:xxxx
      • グループ:Users,Administrators

    ○シャドウコピー

    • Cドライブのプロパティからシャドウ コピーを選び、設定ボタンを押し、最大サイズとスケジュールを設定する。

    〇ツールの追加

    • sakura
    • WinMerge

    〇DNSの登録

    • Lightsailのホームから、ネットワーキング-DNS ゾーンの作成 登録済みドメインの入力;xxxxx.yyy
    • ネームサーバー
    • ns-1147.awsdns-15.org
    • ns-1780.awsdns-30.co.uk
    • ns-309.awsdns-38.com
    • ns-879.awsdns-45.net
    • レコードの追加
    • A @.mydomain.com 解決先 Windows_Server_2016-1_StaticIp-1 CNAME *.mydomain.com マップ先 mydomain.com
    • MX @.mydomain.com 優先度10 マップ先 mail.mydomain.com
    • TXT @.mydomain.com 応答 v=spf1 +ip4:xxx.xxx.xxx.xxx -all #メール送信用
    • TXT _dmarc.mydomain.com 応答 v=DMARC1;P=none;rua=mailto:postmaster@mydomain.com;ruf=mailto:postmaster@mydomain.com #メール送信用

    ・DNSレコード解析ツール

    https://willdosomeday.com/tools/dns.php

    ・MXレコード解析ツール

    https://mxtoolbox.com/

    〇ファイアウォールの設定

    • コントロールパネル-Windowsファイアウォール
    • パブリックネットワーク
      • Windowsファイアウォールが新しい…:on