狠狠撸

狠狠撸Share a Scribd company logo
OSPN
今さら聞けない人のための
厂厂贬超入门
日本仮想化技術株式会社
宮原 徹(@tmiyahar)
OSPN
本資料のライセンスについて
? 本資料はクリエイティブコモンズの「表示 -
継承 4.0 国際 (CC BY-SA 4.0) 」でライセン
スされています。
2
表示 — あなたは適切なクレジットを表示し、ライセンスへのリンク
を提供し、変更があったらその旨を示さなければなりません。あな
たはこれらを合理的などのような方法で行っても構いませんが、許
諾者があなたやあなたの利用行為を支持していると示唆するよう
な方法は除きます。
継承 — もしあなたがこの資料をリミックスしたり、改変したり、加工
した場合には、あなたはあなたの貢献部分を元の作品と同じライセ
ンスの下に頒布しなければなりません。
OSPN
本日の内容
SSHの基本について理解することを目標に関係
する知識についても解説します
? Linuxの管理者権限
? 公開鍵認証を使ったSSH接続
以下の環境を使って検証しています
? OS:AlmaLinux 9.2(ARM版)
? SSHクライアント:macOS版sshコマンド
3
OSPN
管理者権限
SSHの話に入る前に
root権限の取り扱いと
suコマンドやsudoコマンドを理解する
4
OSPN
なぜ管理者権限の話?
? SSHでリモートログインするのはシステム
管理が目的
? SSHはセキュアなユーザー認証や暗号化
通信でリモート作業を保護
? システム管理権限の適切な理解と設定が
無いとセキュリティを担保できない
5
OSPN
root権限の取り扱い
A. rootで直接ログイン
– sshdの設定で制御可能(PermitRootLogin)
– 公開鍵認証でrootとしてログインさせる
? パスワード認証は無効化
B. 一般ユーザーでログインさせる
a. suコマンドを実行してrootに変更
? 設定作業が多いインストール直後には向いている
? rootとして実行したコマンドは記録されない
b. sudoコマンドを実行してroot権限でコマンド実行
? コマンド実行履歴が/var/log/secureに記録される
OSPN
su コマンド実行の制限
? PAMを設定してsuコマンドの実行を制御
– trust:suコマンド実行時にrootパスワードを要求しない
– require:suコマンドを実行するにはwheelグループに所
属している必要がある
? /etc/pam.d/suを編集
– 設定のコメントアウトを外して保存すると即時有効
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficientpam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
参考
OSPN
sudo コマンドの制御
? /etc/sudoersで制御
– パーミッション400なので編集できない
– 編集にはvisudoコマンドを使用
? 実行ユーザーのパスワードが必要
– 設定でパスワード不要にできる
? sudoersの書式は以下の通り
ユーザー ホスト=(実行ユーザー) [NOPASSWD:] コマンド
%グループ ホスト=(実行ユーザー) [NOPASSWD:] コマンド
OSPN
/etc/sudoersの設定例
## Allow root to run any commands anywhere
root ALL=(ALL) ALL ←rootは何でもOK
(略)
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
↑wheelグループ所属は何でもOKだがパスワードが必要
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL ALL
↑wheelグループ所属は何でもOKでパスワードが不要
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
↑usersグループで実行できるコマンドを指定した形式
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
↑usersグループでこのホストだけで実行できるコマンドを指定した形式
9
このいずれかを有効に
することが多い
OSPN
公開鍵認証を使ったSSH接続
10
OSPN
SSHをしっかり理解しよう
? SSHは暗号化通信でリモートログインする
仕組み
– ファイル転送やX11プロトコル等の転送も可能
? パスワード認証、公開鍵認証、ホスト認証
などをサポート
– パスワード認証は危険
– 公開鍵認証を設定後にSSHサーバーでパス
ワード認証は無効に設定
11
OSPN
公開鍵認証の設定
1. 公開鍵?秘密鍵の生成
– ssh-keygenコマンドを実行
– 秘密鍵にパスフレーズを設定
– ~/.sshディレクトリに秘密鍵、公開鍵のペアが生成
2. 公開鍵をサーバーに設置
– ~/.ssh/authorized_keysに追加
– 所有権をログインするユーザー、パーミッションを
~/.sshは700、authorized_keysは600に設定
3. サーバーに接続
– sshコマンドを実行
– 初回のみホスト証明書の受け入れ確認
– 2回目以降は~/.ssh/known_hostsと照合
OSPN
公開鍵?秘密鍵の作成
% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tmiyahar/.ssh/id_rsa):(エンターキー)
Enter passphrase (empty for no passphrase):(パスフレーズは非表示)
Enter same passphrase again:(パスフレーズは非表示)
Your identification has been saved in /Users/tmiyahar/.ssh/id_rsa
Your public key has been saved in /Users/tmiyahar/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:E59fCUG1YBC8frrfcDCtyvTi9vNUQHcLuo7Zik/hSnE tmiyahar@Toru-MBP-16
↑フィンガープリントは公開鍵のハッシュ値
$ ls -l .ssh
合計 8
-rw------- 1 tmiyahar staff 2655 10 22 12:37 id_rsa ←秘密鍵
-rw-r--r-- 1 tmiyahar staff 574 10 22 12:37 id_rsa.pub ←公開鍵
13
OSPN
公開鍵の種類
? ssh-keygenコマンドの–tオプションで指定
? 選択可能な鍵
– dsa
– ecdsa
– ecdsa-sk
– ed25519
– ed25519-sk
– rsa
14
←FIDOとかに関係あるらしい
←TTSSHのデフォルトになったみたい
←ssh-keygenのデフォルトらしい
OSPN
公開鍵の設置
1. 接続先サーバにユーザーを作成
2. (passwdコマンドでパスワードを設定)
3. 作成したユーザーにsuコマンドで切り替え
4. ~/.sshディレクトリを作成
– 所有者は作成したユーザー
– パーミッションは700
5. ~/.ssh/authorized_keysファイルを作成
– 所有者は作成したユーザー
– パーミッションは600
6. 公開鍵(id_rsa.pub)の内容をauthorized_keysに追記
– 公開鍵の情報をどうやってサーバーに持って行く?
15
OSPN
サーバーに公開鍵を設置
# useradd sshuser ←ログインするユーザーを作成
# su - sshuser ←作業するユーザーを変更
$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh
$ touch autorized_keys
$ chmod 600 autorized_keys
$ cat id_rsa.pub >> autorized_keys
↑ファイルがあらかじめ配置されている前提だが、どうやっ
てファイルを持ってくるかが問題
16
OSPN
公開鍵のサーバへの転送
A) ターミナルに対してコピー&ペースト
– 公開鍵は単なるテキストなので
– 安全な接続を経由して行うこと
B) scpコマンドやsftpコマンドで転送
– SELinuxが有効な場合、/tmpなどに転送したファイル
をコピーして使わないこと
– 必ずcatコマンドでauthorized_keysに追記
C) ssh-copy-idコマンドを実行
– 転送からauthorized_keys配置まで自動実行
? クラウドの場合、あらかじめ登録しておく
17
OSPN
sshコマンドで接続
% ssh sshuser@192.168.156.101
The authenticity of host '192.168.156.101 (192.168.156.101)' can't be established.
ED25519 key fingerprint is SHA256:nKWsgCAF9YdR02YZKp0QqIk0/TDy/PzUJHCQnNCtxjM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.156.101' (ED25519) to the list of known hosts.
Enter passphrase for key /Users/xxx/.ssh/id_rsa ': (パスフレーズを入力。非表示)
[sshuser@server ~]$
? 初めて接続するサーバーはホスト証明書が送られ
てくる
? yesと入力することで~/.ssh/known_hostsに
記録される
? 次回以降はホスト証明書を照合
– 異なっている場合には警告を表示して接続させない
(サーバーのすり替えなどの防止)
18
OSPN
OpenSSHサーバの設定
? /etc/ssh/sshd_configを設定
– デフォルトのままではセキュリティ的にやや問題
– 特に以下の2点については設定変更が必要
– 設定後sshdサービスを再起動
① PasswordAuthentication
– パスワード認証の可否を設定
– 公開鍵認証を設定後、設定をnoに変更する
? 設定しないとパスワード総当たり攻撃の対象に
② PermitRootLogin
– 直接rootでログインすることの可否を設定
– noに設定し、一般ユーザーでログイン後にsuやsudoでroot
権限を取得するやり方が多い?
OSPN
最近のSSHサーバーの設定
? /etc/ssh/sshd_configの設定
– PermitRootLogin prohibit-password
– rootでのパスワード認証は許可されていない
? これとは別に/etc/ssh/sshd_config.d/01-
permitrootlogin.confが作成されている
– インストール時に「パスワードによるroot SSHログ
インを許可」をチェックしている場合
– sshd_configを修正するだけでなく01-
permitrootlogin.confも削除する必要がある
20
# This file has been generated by the Anaconda Installer.
# Allow root to log in using ssh. Remove this file to opt-out.
PermitRootLogin yes
OSPN
その他メモ
? 公開鍵認証の完全で詳細な仕組みは複雑すぎて
説明しにくい
– セッションID、共通鍵、電子署名等、複数の要素を同
時に処理しているため
– 興味がある人は自分で調べてみて
? Tera Termがバージョンアップ(V5)
– TTSSH V3でRSA鍵/SHA-2署名に対応
– AWSで嬉しいらしい
? 二段階認証とかもできるよ
– Google Authenticatorを使ったり
? いろいろ便利な使い方もあるみたいだけど、その
辺は自分で調べてみてね
21

More Related Content

厂厂贬超入门