AWS Transfer Familyで認証前後のカスタムメッセージを表示できるようになりました

2022.02.19

いわさです。

Transfer Familyで認証前と認証後にユーザーにカスタマイズしたメッセージを表示することができるようになりました。

AWS Transfer Family now supports login banners

認証前メッセージはFTPSとFTPで利用することができ、認証後メッセージはすべてのプロトコルで利用可能です。

SFTP

まずはTransfer Family for SFTPを構築してみます。
SFTPの場合はお手軽なマネージド認証機能が利用可能です。

ユーザーを作成してSSH公開鍵をアップロードしておくことくらいですね。

構築時に以下のカスタムメッセージを登録しておきます。

では、クライアントからアクセスしてみましょう。

$ sftp -i sftptest iwasa@s-hogehoge.server.transfer.ap-northeast-1.amazonaws.com
The authenticity of host 's-hogehoge.server.transfer.ap-northeast-1.amazonaws.com (35.75.235.11)' can't be established.
RSA key fingerprint is SHA256:
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 's-hogehoge.server.transfer.ap-northeast-1.amazonaws.com,35.75.235.11' (RSA) to the list of known hosts.
abc !!
ABC ??
~-@/+-#$%&'()
1234567890
Connected to s-hogehoge.server.transfer.ap-northeast-1.amazonaws.com.
sftp>

認証後のメッセージが表示されました。
改行もしっかりされていますね。

注意点としては、対応文字が英数記号の制限があるのでマルチバイト文字は利用できません。

また、文字数の上限も512文字なのでその点も覚えておきましょう。
めそ子のASCIIアートを登録しようとして失敗しました。

FTPとFTPS

こちらは認証前メッセージと認証後メッセージを確認してみましょう。

FTPSとFTPだけ。SFTPでは利用できないです。 以前のLambda統合機能を使ってTransfer Family for FTPを構築してみます。

メッセージを設定します。

本日時点で、マネジメントコンソール上では認証前メッセージしか登録できないようでした。
しかし、以下の確認画面では認証後のメッセージが表示されているので、近いうちに登録出来るようになると思います。

構築後に、VPC内からアクセスしてみましょう。

sh-4.2$ ftp vpce-0382985f3d2ac360a-renjn1fy.vpce-svc-0c6fc1c14ceb5b0d8.ap-northeast-1.vpce.amazonaws.com
Connected to vpce-0382985f3d2ac360a-renjn1fy.vpce-svc-0c6fc1c14ceb5b0d8.ap-northeast-1.vpce.amazonaws.com (172.31.32.245).
220 Service ready for new user.
Name (vpce-0382985f3d2ac360a-renjn1fy.vpce-svc-0c6fc1c14ceb5b0d8.ap-northeast-1.vpce.amazonaws.com:ssm-user): hoge
331-before message
331 User name okay, need password for hoge.
Password:
230 User logged in, proceed.
Remote system type is UNIX.
ftp>

メッセージが表示されましたね。

認証後のメッセージも確認したいところなので、本日はAWS CLIで登録出来るか試してみたいと思います。
なお、v1.22.58で対応していますが、v2最新のv2.4.19では対応していないのでご注意ください。

[root@ip-172-31-35-82 ~]# aws --version
aws-cli/1.22.58 Python/3.7.10 Linux/5.10.96-90.460.amzn2.x86_64 botocore/1.24.3
[root@ip-172-31-35-82 ~]# aws transfer update-server --server-id s-f210bcd0159945fbb --pre-authentication-login-banner hoge-before --post-authentication-login-banner hoge-after --region ap-northeast-1
{
    "ServerId": "s-f210bcd0159945fbb"
}
[root@ip-172-31-35-82 ~]# aws transfer describe-server --server-id s-f210bcd0159945fbb --region ap-northeast-1{
    "Server": {
        "Arn": "arn:aws:transfer:ap-northeast-1:123456789012:server/s-f210bcd0159945fbb",
        "ProtocolDetails": {
            "PassiveIp": "AUTO",
            "TlsSessionResumptionMode": "ENFORCED"
        },
        "Domain": "S3",
        "EndpointDetails": {
            "AddressAllocationIds": [],
            "SubnetIds": [
                "subnet-b461c1fc"
            ],
            "VpcEndpointId": "vpce-0382985f3d2ac360a",
            "VpcId": "vpc-3b4cab5d"
        },
        "EndpointType": "VPC",
        "HostKeyFingerprint": "SHA256:s8u2uxAztBCKiKk2xfTopgguq8kSIz1BX6ElyKAktJs=",
        "IdentityProviderDetails": {
            "Function": "arn:aws:lambda:ap-northeast-1:123456789012:function:hoge"
        },
        "IdentityProviderType": "AWS_LAMBDA",
        "LoggingRole": "arn:aws:iam::123456789012:role/service-role/AWSTransferLoggingAccess",
        "PostAuthenticationLoginBanner": "hoge-after",
        "PreAuthenticationLoginBanner": "hoge-before",
        "Protocols": [
            "FTP"
        ],
        "SecurityPolicyName": "TransferSecurityPolicy-2020-06",
        "ServerId": "s-f210bcd0159945fbb",
        "State": "ONLINE",
        "Tags": []
    }
}

DescribeServerで登録されていることが確認出来ました。
先程と同じようにFTPクライアントで認証してみます。

[root@ip-172-31-35-82 ~]# ftp vpce-0382985f3d2ac360a-renjn1fy.vpce-svc-0c6fc1c14ceb5b0d8.ap-northeast-1.vpce.amazonaws.comConnected to vpce-0382985f3d2ac360a-renjn1fy.vpce-svc-0c6fc1c14ceb5b0d8.ap-northeast-1.vpce.amazonaws.com (172.31.32.245).
220 Service ready for new user.
Name (vpce-0382985f3d2ac360a-renjn1fy.vpce-svc-0c6fc1c14ceb5b0d8.ap-northeast-1.vpce.amazonaws.com:root): hoge
331 hoge-beforeUser name okay, need password for hoge.
Password:
230 hoge-afterUser logged in, proceed.
Remote system type is UNIX.
ftp>

認証前後のメッセージが表示されましたね。
CLIからであれば登録出来るようです。

さいごに

本日はTransfer Familyの認証メッセージ機能を使ってみました。
プロトコルに応じて設定可能なメッセージ表示タイミングが違う点と、文字数や文字種の制限が結構あるので、設計の際はそのあたりに気をつけましょう。