1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Transfer Family SFTPで使用される暗号化アルゴリズムと決定プロセス

Last updated at Posted at 2024-09-20

確認したい内容

Transfer FamilyでSFTP通信をする際、使用される暗号化アルゴリズムとその決定プロセス

構成

sftp01.png

  • SFTPサーバを作成する。
  • SFTPサーバは内部接続とするため、VPCエンドポイントが作成される。
  • SFTPサーバ内にマネージドユーザとしてsftp_userを作成する。
  • sftp_userにロジカルディレクトを使用してS3のフォルダを割り当てる。
  • EC2サーバ内でSSHのキーペア(keyとkey.pub)を作成する。
  • sftp_userに公開鍵(key.pub)を登録する。

EC2からsftp -v -i key sftp_user@xxxx.vpce.amazonaws.comコマンドを実行しTransfer Family経由でS3に接続する。

SFTP通信の流れ

最初にSFTP通信の流れを確認します。(SSH情報のバージョン交換等一部の処理を割愛して記載しています。)

sftp003.png

②③④でクライアント側、サーバ側で利用可能な暗号化アルゴリズムを比較しクライアント側の優先順位によって利用する暗号化アルゴリズムを決定します。暗号スイート(SshCiphers)、鍵交換アルゴリズム(SshKexs)、メッセージ認証コード(SshMacs)の3つを決定します。鍵交換アルゴリズムは緑色の箇所、暗号スイートとメッセージ認証コードは赤色の箇所で使用されます。

Tranifer Familyサーバ側の設定

サーバのセキュリティポリシーの設定で使用する暗号化アルゴリズムを制限することが可能です。

TransferSecurityPolicy-2024-01のSshCiphersの箇所を抜粋、暗号化スイートでは下記5つが使用可能です。

{
    "SecurityPolicy": {
        "Fips": false,
        "SecurityPolicyName": "TransferSecurityPolicy-2024-01",
        "SshCiphers": [
            "aes128-gcm@openssh.com",
            "aes256-gcm@openssh.com",
            "aes128-ctr",
            "aes256-ctr",
            "aes192-ctr"
        ],

クライアント側の設定

Amazon Linux 2023の例です。Ciphersの箇所を抜粋、見やすいように改行していますが実際のファイルは改行はありません。最初に書いてあるものほど優先度が高いです。

# cat /etc/crypto-policies/back-ends/openssh.config
Ciphers
aes256-gcm@openssh.com,
chacha20-poly1305@openssh.com,
aes256-ctr,
aes128-gcm@openssh.com,aes128-ctr

アルゴリズム決定のプロセス

sftp -vでデバックした際の情報の一部抜粋です。
クライアント側とサーバ側で共通する暗号化スイートの内、クライアント側で優先度が高いaes256-gcm@openssh.comが選択されていることが分かりました。

debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
debug1: kex: server->client cipher: aes256-gcm@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: aes256-gcm@openssh.com MAC: <implicit> compression: none
debug1: kex: curve25519-sha256 need=32 dh_need=32
debug1: kex: curve25519-sha256 need=32 dh_need=32
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY received

確認方法

SFTPサーバの接続情報はCloudWatchログに記録されます。下記のログから使用している暗号アルゴリズムの確認が可能です。

{
    "role": "●●●",
    "activity-type": "CONNECTED",
    "macs": "<implicit>,<implicit>",
    "ciphers": "aes256-gcm@openssh.com,aes256-gcm@openssh.com",
    "client": "●●●",
    "source-ip": "●●●",
    "resource-arn": "●●●",
    "home-dir": "LOGICAL",
    "user": "●●●",
    "kex": "curve25519-sha256",
    "session-id": "●●●"
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?