AWS EC2でAmazon Linux 2023をインストールした際にまずはじめにやっておく事の備忘録です。
インスタンスの使用用途は仮想通貨自動売買システムの稼働であり、取引所APIのSecretKeyを扱うという事もあってセキュリティ設定はそれなりのものを目指します。
※間違い等ありましたらご指摘いただけると嬉しいです。
全体の流れ
以下の流れでLinuxの設定を行っていきます
- システムアップデート
- 新規ユーザーの追加
- パスワードの設定
- ユーザーに権限を与える
- sshの設定
- 新規ユーザー以外はssh接続できないようにする
- ssh接続のエイリアス作成
それでは張り切っていきましょう!
Amazon Linux 2023初期設定
基本的にはコピペでOKなはずです。
まずは任意の方法でssh接続してください。
システムアップデート
sudo dnf update
システム上にインストールされているパッケージが最新の状態に更新され、既知のセキュリティ脆弱性が修正されます。
ユーザー追加とパスワードの設定
sudo adduser <新しいユーザー名>
sudo passwd <新しいユーザー名>
EC2のデフォルトユーザーは「ec2-user」となっており、このままではセキュリティ的にもあまりよろしくないので変更しパスワードを設定しておきます。
ユーザーに権限を与える
sudo usermod -aG wheel <新しいユーザー名>
wheelグループ(権限をもつユーザーグループの事)へ作成したユーザーを登録します。
これで先ほど作成したユーザーがsudo権限を得ました。
追加したユーザーでssh接続するための設定
新しいユーザーでSSH接続を許可するため、そのユーザーの.sshディレクトリに公開キーをコピーする操作をします。
sudo mkdir /home/<新しいユーザー名>/.ssh
sudo cp /home/ec2-user/.ssh/authorized_keys /home/<新しいユーザー名>/.ssh/
sudo chown -R <新しいユーザー名>:<新しいユーザー名> /home/<新しいユーザー名>/.ssh
sudo chmod 700 /home/<新しいユーザー名>/.ssh
sudo chmod 600 /home/<新しいユーザー名>/.ssh/authorized_keys
以下コマンドの意味を解説します。
- 新しいユーザーのディレクトリに.sshを作成
.sshディレクトリはssh接続の設定ファイルや鍵ファイルを保持するために使用されます。 - ec2-user/.sshにある公開鍵を新しいユーザーのディレクトリにコピー
authorized_keysファイルには、SSHで接続を許可する公開鍵が格納されています。この操作により、新しいユーザーも同じ公開鍵を使用してSSH接続できるようになります。 - ディレクトリとその中の全てのファイルの所有者とグループを新しいユーザーに変更
chown -Rコマンドは、指定したディレクトリ以下の全てのファイルとディレクトリに対して再帰的に所有権を変更します。 - ディレクトリの所有者(この場合は新しいユーザー)のみが読み書きおよびディレクトリの内容を表示できるように設定
これにより、他のユーザーがこのディレクトリにアクセスすることが防がれます。 - 新しいユーザーのみがauthorized_keysを読み書きできるように設定
sshの再起動と接続テスト
sshを再起動し設定を反映させ、新規ユーザーでログインできるのか再ログインして確かめます。
sudo systemctl restart sshd
exitコマンド、logoutコマンド、Ctrl + D キーのいずれかでsshからログアウトできるので、一旦ログアウトします。
exit
ログアウトしたら新規ユーザーでssh経由でログインできるか確認します。
最初にssh接続した際にAWSコンソールでコピペしたec2-user@の部分を新しい<新しいユーザー名>@にしてssh接続しましょう。
rootとユーザー以外がssh接続できないようにする
ここまでの設定だとroot、ec2-userもssh接続できてしまうので新規ユーザー以外はssh接続できないように設定します。
以下のコマンドを実行し、sshd_configにアクセスしsshの設定書き換えます。
sudo vi /etc/ssh/sshd_config
以下の箇所を探し修正します。
Iキーを押すとinsert(編集モード)になるので設定を書き換えましょう
# PermitRootLogin の prohibit-passwor を no に変更して#を外す
PermitRootLogin no
# 下記のうちどちらかの行を任意の行に追加
DenyUsers ec2-user # ec2-userのアクセスを拒否
AllowUsers <新しいユーザー名> # <新しいユーザー名>以外のアクセスを拒否
編集が完了したらescキーでinsertモードを終了し、:wqと入力してviエディタを終了させます
escキー
:wq
PermitRootLogin no でrootでのssh接続を拒否します。
DenyUsers は指定したユーザーを拒否し、AllowUsers は新しいユーザー以外を全て拒否する設定ですので、好きな方を選びましょう。
AllowUsersを使用する場合、許可するユーザー名を正確に指定しましょう。ユーザー名間違うと、どのユーザーでもSSH経由でサーバーにアクセスできなくなるため注意が必要です。
sudo systemctl restart sshd
最後にsshを再起動し、設定を反映させておきましょう。
これでsshの基本設定は完了です。
ssh接続のエイリアス作成
ssh接続のコマンドが長ったらしくて毎回打つのが面倒なので、エイリアスを作成し簡単に接続できるようにします。
※秘密鍵(pemファイル)が/.sshディレクトリにあること前提で進めます
.sshディレクトリ内のconfigファイルを探し以下のように記述します。(configが無ければ作りましょう)
Host <name> #好きな名前
HostName <123.123.123.123> #接続先のサーバーのホスト名またはパブリックIPアドレス
User <user> #ssh接続するユーザー
Port 22
IdentityFile ~/.ssh/<キー名>.pem #秘密鍵のパス
これで以下のようにコマンド操作をするだけでssh接続ができるようになりました。
ssh <name>
お疲れさまでした!これで基本的な設定は完了です。