SSL/TLS暗号化設定の覚書

  • 業務中に暗号化方式を確認するタイミングがあったのだがいまいちどれが何やら いまいちわからなかったので、少し書いて覚えることとしたい。

ガイドライン

SSLバージョン毎の脆弱性

  1. SSL2.0(1994)
  2. ダウングレード攻撃(最弱のアルゴリズムを強制的に使用させる)
  3. バージョンロールバック(SSL2.0を強制的に使用させる)

  4. SSL3.0(1995)

  5. POODLE(2014) 特定状況下でCBCモードを利用した際の、パディングチェックの脆弱性、回避策は現状なし

暗号アルゴリズム

鍵交換

  • RSA
  • DHE
  • ECDH
  • ECDHE

暗号化

  • RC4
  • Triple DES
  • AES
  • Camellia

Hash関数

暗号利用モード

ブロック暗号を利用して、ブロック長よりも長いメッセージを暗号化する

  • CBC(Cipher Block Chaining)

    • IBMが開発、平文の各ブロックは前の暗号文とのXORを取ってから暗号化される
    • 1ブロック前の暗号文を次の平文の暗号化にしようするため、暗号化の並列処理が不可
  • GCM(Galois/Counter Mode)

    • 認証付暗号
    • データ保護と認証の双方に利用可能  - ブロック長128ビットのブロック暗号に適用可能
    • 暗号化の並列処理が可能

覚え書き

セキュリティ対策機能ヘッダ

  • X-Frame-Options
  • X-Content-Type-Options
  • X-XSS-Protection

  • 設定例

    Apache HTTP Server(mod_headersモジュール使用)

    Header always append X-Frame-Options "SAMEORIGIN"; Header always append X-Content-Type-Options nosniff; Header always append X-XSS-Protection "1; mode=block";

Cookieを使用する場合のセキュリティ対策

  • Secure属性  HTTPSによる通信時のみCookieを webサーバに送信する
  • HttpOnly属性  webブラウザでクライアント側のスクリプト経由でCookieに保存されているデータを読み込みできなくなる

MIME タイプ

文書の性質や形式を示すために標準化されたもの IETF RFC 6838で定義及び標準化されている サーバが提供するファイルが、どのような種類のファイルであるのかをサーバ側で定めたもの

ブラウザは文書を処理する方法をきめるためにMIMEタイプを良く使用する サーバからの応答オブジェクトのヘッダーに正しくMIMEタイプを割り当てるように設定していることが重要

  • 構文

    top level type/subtype

  • text/plain text/html apolication/json application/javascript

利用される

静的解析に挑む前のおさらい

単語のおさらい

バイナリファイル

  • コンピュータ内に記録されているファイル全般のことを指して言う
  • 自分としては、実行ファイル(exe,dll,so,elf..)みたいなことを指すと思っていた

アセンブリ言語

  • 機械語を人間に読める形で表現した低水準言語
  • 静的解析では、デバッガを用いてこれらを読んで解析していく

ニーモニック

  • コンピュータが実行可能な機械語(マシン語)のプログラムを、人間が理解・記述しやすいように簡略化した英単語や記号の組み合わせに置き換えたもの

オペコード

  • 機械語の1個の命令の部分で、実行する操作 (operation) の種類を指定する部分のこと
  • 例: CPU→メモリ : PUSH     論理演算子  : AND、OR、XOR

オブジェクトコード

  • コンパイラソースコードを処理した結果生成される、コード生成の結果であるバイナリコードを含む中間的なデータ表現のファイル

アセンブラ

  • アセンブリ命令ニーモニックをオペコードに変換し、シンボル名をメモリ位置や他の実体に変換することでオブジェクトコードを生成する

ssg-5 firmwareアップデート

  • ・w・
    最近SSG-5を触る機会があったので、とりあえずメモを。
    ※とは言っても、以下のように販売+サポートは終了ですが。


  • Juniper NetworkのSSG/ISGシリーズ

    2015~2016年には販売が終了し、その後サポートが終了。

    http://www.juniper-ne.jp/blog/security/ssg-srx.html#SSGISG-2
    ちなみに、SSG5の後継機はSRX300。

     

  • 知らなかったこと
    ★イメージ認証キー
      ジュニパーネットワークス社では、不正に改ざんされた ScreenOSが
      インストールされないよう、ファームウェ アやブートローダ
      イメージ認証キーを設けている。
      2014 年 6 月以降に作成されたファームウェアおよ びブートローダでは、
      このイメージ認証キーが新しいものになっている。
      ※メインリリースでは、「6.3.0r18 以降」のバージョンが対象。
      これにより、以前のイメージ認証キーがインストールされている機器では、
      対象バージョンへのアップグレー ドが正常に完了しない可能性がある。
      ※確認方法
       コマンドを入力し、keyが「c」であれば旧イメージ認証キー
      ssg5-isdn-> exec pki test skey

      KEY1 N/A len =432
      308201ac02010002818100f~略~
      0c31e3f80b651 magic1 = f7e9294b magic2=0

      KEY2 N/A len =432
      308201ac02010002818100f~略~
      0c31e3f80b651 magic1 = f7e9294b magic2=0

      KEY3 N/A len =432
      308201ac02010002818100f~略~
      0c31e3f80b651 magic1 = f7e9294b magic2=0
      ssg5-isdn->

      




  • 手順
    GUI使用でサクサク設定

    1.イメージ認証キーの更新

    f:id:sefo1430:20170627004520p:plain


    2.firmwareのアップデート
    firmware update screenos」を選択し、「Load File」よりfirmwareを指定。
    f:id:sefo1430:20170627002054p:plain

    なんとこれだけ。

  • NATの設定
    「追記予定」

Linux Socket

  • ソケット層の関数群




  • Socketライブラリ

  • プロトコルファミリ
    ★AF_INET
      標準的なIPv4アドレスやホスト名を使用するための設定

    ★AF_IPX
     IPXを使用するための設定

    ★AF_PACKET
     デバイスレベルのパケットインターフェースを提供。
     L2フレーム付のパケットを取得できる。
     Linux2.2からの新機能。
     
  • ソケットタイプ

    ★SOCK_STREAM
      TCPを用いるための設定。

    ★SOCK_DGRAM
     UDPを用いるための設定。

 

参考サイト:

enakai00.hatenablog.com

ブラインドSQLインジェクション

  • 概要
    レスポンスに変化がない場合の、完全なブラインドSQLインジェクション
    について調べたことをメモ。


  • ブラインドSQLインジェクション
    以下2つの種類があるらしい。
    ★通常のブラインド
      ページ上にレスポンスはないが、HTTPのステータスコードやクエリのレスポンス結果を元に判別。

    ★完全なブラインド
      画面・HTTPステータス・クエリのレスポンスなど、いずれの結果にも差異がない場合に、コマンドの出力時間などを利用し判別するもの。


  • よく使用されるコマンド
    ★benchmark(試行回数 , 動作 )(MySQL
      本来は指定したSQLを指定回数だけ実行して処理にかかった時間を測定するためのもの。
      ※webサーバの処理能力を限界まで使用していしまうので注意がいるらしい。

    mysql> SELECT BENCHMARK(1000000, MD5(1));

      ※MD5('文字列' or 列名) :MySQLMD5を使用するためのコマンド。
      
     参考サイト:https://www.qoosky.io/techs/3a369dd466

    ★pg_sleep(seconds)(PostgreSQL
      ()内の数字の秒数だけコマンド実行を遅らせる。

    ★WAIT FOR DELAY '0:0:10'
      '時間:分:秒'の指定ができる。→ '時間:分:秒:xx'で1秒以下の指定も可。
    参考サイト:SQL Injection Cheat Sheet

【追記】mariadbのバージョンアップ【5.3 → 10.2】

  • 追記

    DBのエラー対応について
    前回のエラー対応時に、innodbを掴んだままのプロセスを調べ
    該当プロセスをkillすることで対応したが、あのやり方は危険頼しいので追記。

    ★DBを特定のプロセスが掴んだまま強制終了させると
     DBが壊れてしまう可能性があるので、対応としては最後の手段。
     前回のような場合は、wordpressか何かのアプリケーションがinnodb
     掴んだままになっていたので、そのアプリケーションを終了させdbを開放
     するのがベストとのこと。

    次回から気を付けよう。