🖥️
自宅サーバーのSSH/UFW設定
SSHの設定
インストール後のデフォルトの設定ではセキュリティ的によろしくないので設定を変更する
主に変更すること
- ポート番号(デフォルトの22番には攻撃が多い)
- rootログインの禁止(ユーザー名
root
でログイン試行してくるのが多い) - パスワード認証 → 公開鍵認証
- sshでログインできるユーザーを限定する
手順
- クライアント側(自分のノートPCとか)で鍵ペア生成
- サーバーに公開鍵をコピー
- サーバー側でsshdの設定を変更
- sshdを再起動
公開鍵をサーバーにコピーする前にsshdの設定を変えてしまうとサーバーに接続できなくなってしまうのでリモートで設定している人は注意
1.クライアント側で鍵ペア生成
アルゴリズムは ed25519
を指定する(現在最も安全?)
-f
オプションで保存先(鍵ファイル名)でわかりやすい名前をつけると良い
クライアント側
# 一般ユーザーで実行
ssh-keygen -t ed25519 -f ~/.ssh/id_myserver
2. サーバーに公開鍵をコピー
-i
オプションで先程作成した公開鍵(拡張子が.pub
のもの)を指定する
※ .pub
がついていない方のファイルは秘密鍵なので絶対に公開してはいけない
クライアント側
# 一般ユーザーで実行
ssh-copy-id -i ~/.ssh/id_myserver.pub 192.168.1.10
3. サーバー側でsshdの設定を変更
sshdサーバーの設定ファイルは /etc/ssh/sshd_config
sshクライアントの設定ファイル /etc/ssh/ssh_config
と間違えないように注意
ポート番号
を自分の好きなポート番号に置き換える
49152~65535
番のプライベートポートの中から選ぶとよい
サーバー側 /etc/ssh/sshd_config
# コメントアウト
# ポート番号を設定
Port ポート番号
# コメントアウト
# 公開鍵認証
PubkeyAuthentication yes
# コメントアウト
# パスワード認証を禁止する
# yes → no に変更する
PasswordAuthentication no
# 追加
# sshでログインできるユーザーを制限する
# この例では user1 と user2 を許可
AllowUsers user1 user2
4. sshdを再起動
sshdを再起動すると、sshd_config の変更がすべて反映される
現在sshで接続して作業している場合、設定に誤りがあると接続できなくなってしまうので注意
- 公開鍵がサーバーにコピーされているか
- 設定したポートが開放されているか(ファイアウォールの設定を確認)
を確認する
サーバー側
# sshdを再起動する(systemdを使っている場合)
sudo systemctl restart sshd
ファイアウォールの設定
ufwを使ってファイアウォールを設定する
外から内への通信はホワイトリスト方式で、内から外へはすべて許可する
サーバー側
# サービスの起動&有効化
sudo systemctl enable --now ufw
# ssh接続用のポート番号を許可する(ルールの追加)
sudo ufw allow ポート番号
# ufwを有効化する(ファイアウォールを開始)
sudo ufw enable
# ufwの状態を確認
# Status: active となっていればOK
sudo ufw status
その他の操作
サーバー側
# ルールの設定を確認
sudo ufw status numbered
# ルールを削除
# 上のルール設定確認でルール番号を確認しておく
sudo ufw delete ルール番号
Discussion