最初の生産的で安全なWebサーバーを構築する方法

このガイドでは、最初の安全なサーバーを作成するためのいくつかのベストプラクティスについて説明します。 プロセス全体を段階的に分析し、その結果、アプリケーションの製品で完全に使用できるサーバーを取得します。 もちろん、これは網羅的なガイドではありません。 安全なサーバーとは、新しいリソースと無限の改善を絶えず検索することです。 ただし、この資料を使用して、独自のインフラストラクチャの作成を開始できます。



Amazon EC2を使用してテストを実行しますが、Amazon LightSail、Digital Ocean、Vultrまたは別のサービスを利用できます。 すべて同じように構成されているので、好きなものを選択してください。







公開および秘密SSHキーを作成する



最初に、サーバーのインストール時に一部のホストが必要とするキーペアを作成します。 Amazonでサーバーを起動するときに独自のキーペアを作成する場合は、この手順と他の手順をスキップできます。



ssh-keygenを使用してSSHキーを作成します。



$ ssh-keygen -t rsa -b 4096
      
      





その結果、id_rsaとid_rsa.pub(秘密鍵と公開鍵)の2つのファイルを取得します。 秘密鍵を誰とも共有しないでください。



キーを作成するための詳細な手順については、 こちらを参照してください



Amazonに公開キーをインポートする



新しく作成した公開キーをAmazonプラットフォームにインポートします。



  1. Amazon管理コンソールに移動します。
  2. [AWSサービス]→[コンピューティング]> [EC2]をクリックします
  3. 左側のメニュー[ネットワークとセキュリティ]→[キーペア]をクリックします
  4. 「鍵ペアのインポート」をクリックして、公開鍵(id_rsa.pub)をロードします


独自の仮想マシンを作成する



Ubuntuを実行している仮想マシンをAmazon EC2にインストールします。 設定の詳細については、次を参照してください



  1. Amazon管理コンソールに移動します。
  2. AWSサービス→コンピューティング→EC2をクリックします
  3. 開始するインスタンスを選択します。
  4. 画像のいずれかを選択します。 私たちの場合、SSDドライブを備えたUbuntu Server 16.04 LTS(HVM)になります(ただし、最適なものを選択できます)。
  5. (ニーズに応じて)仮想マシンを選択します。 「レビュー」と「起動」をクリックします。
  6. 新しいタブを開き、作成した公開キーをAmazonにインポートします。
  7. ここでは、「既存のキーペアを選択するか、新しいキーペアを作成する」ように求められます。 [既存のキーペアを選択]をクリックします。 以前にダウンロードしたキーを選択します。
  8. 「インスタンスの起動」をクリックします。
  9. 作成したばかりの仮想マシンのリンクをクリックします。


注意:以下のステップのいくつかは、Amazonホーム画面で設定できます。 ただし、これは他のサービスに使用できる一般的なガイドなので、デフォルト設定について説明します。



新しいサーバーに接続する



SSH経由で仮想マシンにアクセスします。



ターミナルに書き込みます:



 $ ssh <USR>@<IP-ADDRSS> -p 22 -i <PATH-TO-PRIVT-KEY>
      
      







新しいユーザーにアクセスを許可します



「ウィザード」という名前の新しいユーザーアカウントを作成します。



 $ sudo adduser wizard
      
      





「ウィザード」にsudoを実行する許可を与えます。 ファイルを開きます。



 $ sudo nano /etc/sudoers.d/wizard
      
      





そして内容を設定します:



 wizard ALL=(ALL) NOPASSWD:ALL
      
      





ディレクトリを作成します。



 $ mkdir /home/wizard/.ssh # create authorized_keys file and copy your public key here $ nano /home/wizard/.ssh/authorized_keys $ chown wizard /home/wizard/.ssh $ chown wizard /home/wizard/.ssh/authorized_keys
      
      





公開鍵(PATH-TO-PUBLIC-KEY)をコピーして、リモートインスタンス/home/wizard/.ssh/authorized_keysに貼り付けます。 アクセス許可を設定します。



 $ chmod 700 /home/wizard/.ssh $ chmod 600 /home/wizard/.ssh/authorized_keys
      
      





セキュリティを提供します



すべてのインストール済みパッケージを更新します。



 $ sudo apt-get update $ sudo apt-get upgrade
      
      





SSHポートを22から2201に変更します。ファイアウォール(ufw、複雑でないファイアウォール、気取らないファイアウォール)を構成するには、ファイル/ etc / ssh / sshd_configを開きます。



 $ sudo nano /etc/ssh/sshd_config
      
      





このデータを変更します。



 Port 2201 PermitRootLogin no PasswordAuthentication no # add this to avoid problem with multiple sshd processes ClientAliveInterval 600 ClientAliveCountMax 3
      
      





SSHサービスを再起動します。



 $ sudo service ssh restart
      
      





着信SSH(ポート2201)、HTTP(ポート80)、およびNTP(ポート123)接続のみがスキップされるように、Uncomplicated Firewall(UFW)を構成します。



 # close all incoming ports $ sudo ufw default deny incoming # open all outgoing ports $ sudo ufw default allow outgoing # open ssh port $ sudo ufw allow 2201/tcp # open http port $ sudo ufw allow 80/tcp # open ntp port : to sync the clock of your machine $ sudo ufw allow 123/udp # turn on firewall $ sudo ufw enable
      
      





サーバーのクロックを構成する



UTCをローカルタイムゾーンとして設定します。



 $ sudo dpkg-reconfigure tzdata
      
      





[上記のいずれでもない]オプションを選択し、再度UTCを選択します。



キーを切断し、SSHエージェントに追加します



無効にするには、次を入力します。



 $ exit
      
      





そして、キーを追加します。



Amazonにポート許可を追加する



これはAmazonで行う必要があります。 Amazonでも使用するSSHポートを設定します。



  1. Amazon管理コンソールに移動します。
  2. [AWSサービス]> [コンピューティング]> [EC2]をクリックします
  3. 左側のメニュー[ネットワークとセキュリティ]→[セキュリティグループ]をクリックします
  4. 仮想マシンに関連するセキュリティグループを選択します。
  5. [アクション]> [受信ルールの編集]をクリックします
  6. [ルールの追加]をクリックして設定:タイプ:カスタムTCP、ポート範囲:2201、ソース:0.0.0.0/0および説明:SSH


新しいデータとつながる



これで、新しいユーザーとして新しいポートでサーバーに接続できます。



 $ ssh wizard@<IP-ADDRESS> -p 2201 -i <PATH-TO-PRIVATE-KEY>
      
      





これで、アプリケーションを提供する準備ができたサーバーができました。



All Articles