WordPressサーバのセキュリティの強化を図ります。主に、インターネットからの不正アクセス対策を行います。
記事の目次
サーバアクセスのセキュリティ強化
公開サーバは、インターネット上に晒されているため、サーバセキュリティ対策は必須です。
SSHのセキュリティ強化
サーバの設定や制御を行うためにサーバにアクセスする主な手段は、SSHになります。SSHのセキュリティを高めることでサーバセキュリティを向上させます。
SSHサーバのログ確認
SSHサーバのログを確認します。
$ sudo less /var/log/secure Jan 1 06:06:35 pubser001 sshd[22293]: Invalid user admin from 101.75.117.125 port 38643 Jan 1 06:06:35 pubser001 sshd[22293]: input_userauth_request: invalid user admin [preauth]
ログを見ると、ひっきりなしに不正アクセスが試みられているようです。SSHの不正アクセスに対するセキュリティ対策としては、以下の対応があります。
- パスワードでのログインを禁止し、鍵認証でのログインのみ許可する。
- rootユーザでのログインを禁止する。
- SSHのポート番号を変更する。
根本的対応として、上から2つ目までの対応を初期のサーバ構築時に実施済みですが、追加でポート番号の変更を行い、不正アクセスの削減を図ります。
SSHサーバのポート番号の変更
SSHサーバのポート番号をデフォルトの22から2222に変更します。まず、firewalldで2222番のポートへのアクセスを許可します。
$ sudo firewall-cmd --add-port=2222/tcp --zone=public --permanent $ sudo firewall-cmd --reload $ sudo firewall-cmd --list-all --zone=public | grep tcp
次に、SSHサーバの設定を変更して、SSHサーバのポート番号を変更し、設定ファイルを再読込します。
$ sodo vi /etc/ssh/sshd_config #Port 22 Port 2222 $ sudo systemctl reload sshd
22番ポートでアクセスできず、2222番ポートでアクセスできることを確認します。
$ ssh -l admin001 lab4ict.com ssh: connect to host lab4ict.com port 22: Connection refused $ ssh -p 2222 -l admin001 lab4ict.com $
サイトアクセスのセキュリティ強化
サイトアクセスのセキュリティ強化として、以下の対応を実施します。Qualys SSL LABSの「SSL Server Test」のサイトでテストを行い、根気よく一つ一つ対策を打つのがよさそうです。
- サイトアクセスのHTTPS化
- 不正なサーバ証明書の発行防止(DNS CAA)
- SSL/TLSプロトコルの制限
- 暗号化方式(Cipher Suite)の削除
- 暗号化方式(Cipher Suite)の追加
サイトアクセスのHTTPS化
サイトアクセスを全てHTTPSで暗号化することにより、通信内容の漏えいと改ざんを抑止することができます。サイトのHTTPS化は、本サイトの手順では、Let'encryptの導入により、サーバの初期構築時に対応済みです。
不正なサーバ証明書の発行防止(DNS CAA)
サーバ証明書を発行する認証局をDNSで指定することにより、他の認証局で不正なサーバ証明書が発行されることを防ぐことができます。Sakura InternetのDNSでは、CAAレコードを登録することができます。
DNS1レコード種別 | 設定値(例) |
---|---|
CAA | 0 issue "letsencrypt.org" |
CAA | 0 iodef "postmaster@lab4ict.com" |
SSL/TLSプロトコルの制限
SSL/TLSのプロトコルをTLS1.2のみに制限します。
$ sudo vi /etc/httpd/conf.d/ssl.conf #SSLProtocol all -SSLv2 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 $ sudo systemctl stop httpd.service $ sudo systemctl start httpd.service $ sudo systemctl status httpd.service
opensslコマンドで管理用のPCからテストします。
$ openssl s_client -connect lab4ict.com:443 -ssl3 $ openssl s_client -connect lab4ict.com:443 -tls1 $ openssl s_client -connect lab4ict.com:443 -tls1_1 $ openssl s_client -connect lab4ict.com:443 -tls1_2
暗号化方式(Cipher Suite)の削除
脆弱性が指摘されている暗号化方式(Cipher Suite)を削除します。RC4暗号の使用を不可に設定します。
$ sudo vi /etc/httpd/conf.d/ssl.conf SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4 $ sudo systemctl stop httpd.service $ sudo systemctl start httpd.service $ sudo systemctl status httpd.service
opensslコマンドで管理用のPCからテストします。
$ openssl s_client -connect localhost:443 -cipher RC4-SHA
暗号化方式(Cipher Suite)の追加
強度の強い暗号化方式(Cipher Suite)を追加します。Forward Securityを使用可にして、暗号化方式を全面的に見直して設定します。
$ sudo vi /etc/httpd/conf.d/ssl.conf #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4 SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4" ... SSLHonorCipherOrder on $ sudo systemctl stop httpd.service $ sudo systemctl start httpd.service $ sudo systemctl status httpd.service
opensslコマンドで管理用のPCからテストします。
$ openssl s_client -connect localhost:443 -cipher ECDHE-RSA-AES256-GCM-SHA384
おわりに
本稿では、WordPressサーバのセキュリティ強化を行いました。