Vulnerability assessment & fix
15 Mar 2017Introduction
有一部分解決網路安全的做法很簡單,只要設定web server多一些header就可以了,說明可以參考這裡,設定方法可以參考這裡
Methods of Assessment
目前使用起來,有兩個站可以針對header掃瞄
設定完全之後,結果應該要類似下圖:
Apache Module mod_headers
由於要更改header,因此需要額外啟動這個module,細節可以參考官方文件
啟用的步驟寫在Dockerfile中,修改方法請參考之前的文件
Security Headers
增加的設定如下
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options SAMEORIGIN env=!REDIRECT_IS_embed
Header set X-Content-Type-Options nosniff
Header set Content-Security-Policy "default-src 'self' https://*.amazonaws.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.mouseflow.com"
Header set Strict-Transport-Security "max-age=15552000"
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header unset "X-Powered-By"
Header set Referrer-Policy "no-referrer"
Header set Public-Key-Pins "pin-sha256=\"8hqbhsMMFPaPA8t81pxqFer9+neHBcQvO7+TAKjWkb0=\"; pin-sha256=\"JSMzqOOrtyOT1kmau6zKhgT676hGgczD5VMdRMyJZFA=\"; max-age=2592000; includeSubDomains"
</IfModule>
HTTP Public Key Pinning
個人覺得比較複雜的是修改Public-Key-Pins
,這個header的內容是網站安全憑證的Subject Public Key Information (SPKI) fingerprint,個人覺得MDN的說明寫得比較清楚
在省錢的原則下,我們通常都會用免費的安全憑證,例如ACM,因此可以參考下圖的點法,把中繼憑證匯出
另外所謂的backup key
,指的是透過另一家簽發憑證的公司的中繼憑證,我們不一定有申請第二家憑證,所以省錢省事的方法,就是直接隨便找一個合法的中繼憑證,算出其fingerprint即可,以下是兩個憑證的算法:
$ cat Amazon.pem | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
writing RSA key
JSMzqOOrtyOT1kmau6zKhgT676hGgczD5VMdRMyJZFA=
$ cat TWCASecureSSLCertificationAuthority.cer | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
writing RSA key
8hqbhsMMFPaPA8t81pxqFer9+neHBcQvO7+TAKjWkb0=