AWS EC2のインスタンスを作った時にやっておく設定

最近EC2を触り始めたので設定メモでも残す。 ここの設定はプロトタイプを作る時の設定なので、正直言って緩い。ちゃんとしたサービスの場合はもうちょっとセキュリティ周りの設定を厳しくしたほうが良い。

セキュリティグループの設定

セキュリティグループはEC2インスタンスのすぐ外側の設定なので、サブネット内の他インスタンスに通信する時にも適応される。サブネット内のインスタンスに繋がらない、PINGも通らないって時は大体この設定がミスってる。

インバウンド

とりあえずSSHのみ f:id:hkou:20150516153159j:plain

アウトバウンド

全開放 f:id:hkou:20150516153223j:plain

インスタンス上の設定

CentOSを想定 SSHで接続して設定すると思うんだけど、ここで躓いたのがユーザー名、普通のAMIなら「ec2-user」、たまーに「root」でしか接続できないAMIもある。ちなみにCentOS7は「centos」だった。面倒臭いので「ec2-user」で統一して欲しい

rootパスワードの設定

初期状態でrootにパスワードが設定されていないので、設定しておく。

$ sudo su -
$ passwd
パスワード入力

SSHパスワードログイン不許可設定

パスワード認証を不許可

#sudo vi /etc/ssh/sshd_config 

PasswordAuthentication no
ChallengeResponseAuthentication no

設定を反映するためにSSHを再起動

#sudo systemctl restart sshd

日本語ロケールに変更

# localectl set-locale LANG=ja_JP.utf8

設定が反映されたことを確認する

# localectl status
   System Locale: LANG=ja_JP.utf8
       VC Keymap: us
      X11 Layout: us

SELinuxの無効化

これも嵌った。インスタンス間のSSHが出来なくて小一時間悩んだ挙句原因がこれだったのはかなり疲れた

以下のコマンドを入力して現在のSELinuxの設定を表示する。「Enforcing」を表示されたら有効になっている

# getenforce
Enforcing

SELinuxの一時無効化

# setenforce 0

SELinuxの一時有効化

# setenforce 1

上記の設定だけだとrebootしたときに設定が元に戻るので永続化するために設定ファイルを変更する

vi /etc/selinux/config

SELINUX=enforcing
↓
SELINUX=disabled

時刻をJSTにする

元々の設定を一応バックアップしておく

# sudo cp /etc/localtime /etc/localtime.bk

Japanをコピー

# sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime