【小技】公開されている4D Webサーバーのセキュリティ評価をあげるには
【小技】公開されている4D Webサーバーのセキュリティ評価をあげるには
公式ブログ記事でも取り上げられていますが,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-」まで上げることができます。
しかし,「Aランク」を得るには,16 R6がサポートしている前方秘匿性がどうしても必要です。
さらに,Strict Transport Securityを有効にすれば,評価を「A+」ランクまで上げることができます。HTTPSでなければブラウザ接続を許さない(HTTPにダウングレードさせない),という設定です。
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番で取得することもできます。
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
セキュリティの設定は,デフォルトでもっとも安全なものになっていますので,その恩恵にあずかるには,ただバージョンアップをすれば良いことになります。しかし,対策が施されていない,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- 投稿数 : 487
登録日 : 2016/07/05
Permissions in this forum:
返信投稿: 不可