【小技】公開されている4D Webサーバーのセキュリティ評価をあげるには

Go down

【小技】公開されている4D Webサーバーのセキュリティ評価をあげるには

投稿 by miyako on 2018-01-26, 11:46 am

公式ブログ記事でも取り上げられていますが,4Dでは,Webサーバーのセキュリティ対策に取り組んでいます。

セキュリティの設定は,デフォルトでもっとも安全なものになっていますので,その恩恵にあずかるには,ただバージョンアップをすれば良いことになります。しかし,対策が施されていない,v14などのバージョンをWebサーバーとして使用している場合,4Dの設定やコーディングだけでは十分な対応ができないかもしれません。

セキュリティの設定がじゅうぶんでないと判断される例として,iOS 9.0以降およびmacOS 10.11以降のApp Transport Security (ATS) が挙げられます。これは,一定の条件を満たしていないサーバーに対する接続を防止する仕組みで,その条件によれば「前方秘匿性」と「TLS 1.2以上」が必須となっています。Webサーバーが条件を満たしていない場合,iOSアプリなどから接続することは原則的にできません。(アプリの開発者が例外を設定する余地が残されています)

公開されているWebサーバーのセキュリティを評価する,オンラインのサービスも存在します。

https://www.ssllabs.com/ssltest/

A以上の評価を得るには,証明書チェーンが有効でなければなりません。それで,証明書の認証局が中間証明書を使用しているのであれば,PEM形式(拡張子も.pem)の証明書ファイルをサーバーのcert.pemとkey.pemと同じフォルダーに置く必要があります。

注記:Let's Encrypt認証局の無料で自動化された手順を踏むこともできます。

http://kb.4d.com/assetid=77671
http://kb.4d.com/assetid=77708

しかし,v16の場合,どんなに手を尽くしても,評価は「Bランク」どまりです。TLSのバージョンはそこそこ良いのですが,暗号スイートと前方秘匿性の非サポートが評価を下げています。

暗号スイートは設定で変えられるので,RC4を除外すれば,評価を「A-」まで上げることができます。

Code:
 C_TEXT($ciphers)
 $ciphers:="ALL !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
 SET DATABASE PARAMETER(SSL cipher list;$ciphers)

しかし,「Aランク」を得るには,16 R6がサポートしている前方秘匿性がどうしても必要です。

さらに,Strict Transport Securityを有効にすれば,評価を「A+」ランクまで上げることができます。HTTPSでなければブラウザ接続を許さない(HTTPにダウングレードさせない),という設定です。

Code:
C_TEXT($vtCookie)
$vtCookie:="Strict-Transport-Security: max-age=31536000"
WEB SET HTTP HEADER($vtCookie)

http://kb.4d.com/assetid=77753

資料

https://blog.4d.com/higher-security-ranking-for-4d-web-sites/
日付:2018年1月22日
バージョン:4D v16 R6

概要:16 R6以降,前方秘匿性(Perfect Forward Secrecy, PFS)の設定がTLSモードで自動的に適用されるようになりました。また,脆弱性のあることが知られている,RC4アルゴリズムが排除されました。

https://ja.wikipedia.org/wiki/Forward_secrecy

https://blog.4d.com/more-security-for-your-4d-server/
日付:2017年10月9日
バージョン:4D v16 R5

概要:16 R5以降,TLS 1.2がサーバーのデフォルト設定となり,それよりも低いバージョンのTLS接続要求は拒否されるようになりました。

なお,ここではおもにWebサーバーについて言及されていますが,クライアント/サーバーやSQLの通信暗号化にも同じ設定値があてはまります。一方,4D Internet Commandsには適用されません。

〜これまでの経緯〜

現在「Rリリース」2回に1回の周期で最新版にアップグレードを実施しています。各バージョンのリリースノートをご覧ください。なお,OpenSSLのバージョン番号は非公開のデータベースパラメーター94番で取得することもできます。

Code:
$intValue:=Get database parameter(94;$textValue)

v16.1:OpenSSLのバージョンを1.0.2.kにアップグレードしました。

v16.0:OpenSSLのバージョンを1.0.2.hにアップグレードしました。

v15.3:OpenSSLのバージョンを1.0.2.jにアップグレードしました。(1.0.1系のサポートは,2016年の12月31日で終了しました)

v15:OpenSSLのバージョンを1.0.0dからb1.0.1lにアップグレードしました。(v14 R5まで使用されていた1.0.0系には脆弱性のあることが知られており,サポートは2015年の12月31日で終了しました)。なお,1,0.1系を採用したことにより,TLS 1.2が使用できるようになりました。

14 R5:中間者あるいはDoS攻撃に用いられる,安全ではないメカニズムや,128ビットより短い鍵やSSLv2または認証なしで発行された鍵を使用する暗号スイートの排除し,再交渉表示(拡張0xFF01)のサポートを追加しました。

https://ja.wikipedia.org/wiki/中間者攻撃
https://ja.wikipedia.org/wiki/DoS攻撃

14 R4:POODLE攻撃に対する防御として,SSL v2およびv3をハードコーディングで排除しました。

http://www.4d.com/jp/blog/poodle.html
http://www.4d.com/jp/blog/web-server-ssl.html

miyako

投稿数 : 258
登録日 : 2016/07/05

トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可