IPsecではいまだにsha1とかDHparam1024bitが主流っぽく映るのはなぜなのか。

Webの世界では sha-1はもはや安全ではなさそう、ということもあり、TLS証明書の標準はSHA-2(SHA256)へ移行しているし RSA 1024bitももはや安全ではないとして RSA 2048bitへの移行がほぼ終わっているようにうかがえる。

しかして、IPSecでは未だに DH Group2 (1024bit)や HMACとしてSHA1が利用されている。

はてさてなぜなんだろう(例えばAWSVPCにてIPSecを張ろうとして設定をダウンロードするとDH Group2のHMACはSHA1だったりする)

まさか標準になってないなんてことはないよね?と思って確認してみれば

http://www.ietf.org/rfc/rfc3526.txt http://www.ietf.org/rfc/rfc4868.txt http://www.ietf.org/rfc/rfc4869.txt と10年以上前に標準になっている。

はてさて。

IPSec は主としてmain mode で利用されており、別のIPアドレスから接続要求が来てもそもそもつながらない。というようなことはあるにせよ、sniffer が全パケットをsniffingしていれば、状況によっては。というところのような気もしつつ。

多くのNW機器がSHA1 まではハードウェアアクセラレータを載せているがSHA2に対応していないみたいな事情はあるのかもしれない。 しかし、さすがにMD5は利用されなくなっているし、暗号もAES128を利用するようにはなっているので、なんだかちぐはぐだなぁと思うわけです。

これなぜなんでしょ?

個人的な経験として、NW機器にtelnetではなくsshするようにしましょうと、RSA2048bit鍵を作ってまわったところ、機器によってはsshでログインするのに4,5秒かかって、当時cronでNW機器のデータを採取しているスクリプトタイムアウトが5秒とかでタイムアウトするようになっていた。みたいなことを経験してはいます。

aws rds の iam 認証 を試してみた時のメモ。

MySQL および Amazon Aurora に対する IAM データベース認証 - Amazon Relational Database Service

という資料にある通り、AWSのRDSでは IAM 認証を利用してDBにアクセスする方法があるのでそれを試した話。

まず、Tokenは長いです。

というのが前提。

Mac上のiTerm2で作業を行っていたのですが

コマンドライン: AWS CLI および mysql クライアント - Amazon Relational Database Service

に記載がある通り、TOKENを変数に入れておきそれを利用するような場合は普通にうまくいきます。

しかし、例えば、TOKEN生成はローカルで行い、踏み台サーバからRDSにアクセスするようなケースだと、それがうまくできないため

aws rds generate-db-auth-token \
   --hostname hostName  \
   --port 3306 \
   --region us-west-2 \
   --username jane_doe   

このようなことをローカルで行い、TOKENをクリップボードにコピーします。 つづいて、踏み台にログインし

mysql --host=hostName --port=portNumber --ssl-ca=[full path]rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password

のようなコマンドで、パスワード入力プロンプトを出してペーストするのが普通かなと思うのですが、この方法では再三試してもうまくいきませんでした。

しょうがないので

mysql --host=hostName --port=portNumber --ssl-ca=[full path]rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password="ここにTOKENをペースト"

このようなコマンドにすると、うまくいきます。

ただ、15分しか有効でないとはいうものの、出来れば表示したくないし、履歴が無駄に長くなるというのもあるので何とかしたいのでいい方法を探しています。

という話。

また、AWSのドキュメントにはMySQL クライアントの利用方法であって、 MariaDBのクライアントだと、--enable-cleartext-plugin オプションがなかったりする(CentOS7.5のmariadb v5.5.60とかv10.3.10とか)ので、その際は代わりに --default-auth=mysql_clear_password を利用しましょうという学びがありました。オプションを探すのに手間取ったので忘れないように。

mktempは便利だぞ

一時ファイル作成するのに便利なmktemp 実は、何も考えなくてもパーミッションを 600 で作ってくれるので、他のユーザから見られることがありません。

touchでいいのでは?という意見に対してはだいたいそう返します。確かにumask設定すれば良いことですが、 umaskなんていちいち設定してますか?というやつ。

また、 mktemp -dディレクトリを作ることもできます。 こちらもパーミッションは 700になりますので、この中では任意のファイルを作成しても安全です。

という豆知識