今回は、Wordpressのwp-adminやwp-loginで管理者ログイン画面に行けないようにします。
セキュリティって大事ですよね。
何か起こった時に「ここまでやってたのにダメだった」って言い訳するための保険。
基本、ディフェンスよりオフェンスの方が有利なのでテンション下がります。
セキュリティ頑張ると何かと不便になるし・・・。
まぁ頑張ります。
課題
- wp-adminとかwp-loginとかで管理者ログイン画面に行けちゃうのって良いの?
どうなんでしょう。いくつか調べてみます。
「Proudly powered by WordPress」で検索してみました。(2020/7/26現在)
Google検索のトップに出てくる10サイト中8サイトがwp-adminで管理者ログイン画面に行けました。実に80%が未対応。セキュリティ意識なんてそんなもんなのかもしれません。
3年間放置した僕が言うのアレですけど。
よほど「Proudly powered by WordPress」の文字列を消すほうが大事です。
ユーザー名はデフォルトのまま。パスワードはpasswordとか123456とかだ覚えやすくて良いですね。
参考[最悪のパスワードランキング]。
気を付けてください。
ざっくり手順
ざっくりの手順について述べます。
- Teratermなどでインスタンスにつなぐ
- httpd-app.confで.htaccessを有効にする
- .htaccessのバックアップを取っておく
- .htaccessを変更する
- ウェブサーバー再起動
詳細手順
TeraTermなどでサーバーに接続
WordPressの使い方 – TeraTermで接続(AWS/Bitnami)参照。
httpd-app.confで.htaccessを有効にする
httpd-app.confを開く
sudo vi /opt/bitnami/apps/wordpress/conf/httpd-app.conf
こんな感じに編集
貼り付けができないという方はCtrlを押しながら右クリックで貼り付けてみてください(TeraTermの場合)。
AllowOverride None
↓
# AllowOverride None
AllowOverride All
Apacheリスタート
sudo /opt/bitnami/ctlscript.sh restart apache
htaccess.confを修正する
htaccess.confを修正する
vi /opt/bitnami/apps/wordpress/conf/htaccess.conf
以下の内容を追記する。
yoursitedomainはご自身のドメインを設定します。
僕のところであれば、"www.premium-tsubu-hero.net"
45jfvo9204は任意の文字列に変えれば良いと思います。
/wp-login.php?45jfvo9204でログイン画面に行きたければこのままで。
↓ 追記内容
<Directory "/opt/bitnami/apps/wordpress/htdocs">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^enter/?$ /wp-login.php?45jfvo9204 [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /wp-login.php?45jfvo9204&redirect_to=/wp-admin/ [R,L]
RewriteRule ^dashboard/?$ /wp-admin/?45jfvo9204 [R,L]
RewriteRule ^register/?$ /wp-login.php?45jfvo9204&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/enter
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/dashboard
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/register
RewriteCond %{QUERY_STRING} !^45jfvo9204
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=register
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?45jfvo9204 [R,L]
</IfModule>
</Directory>
こちらのTCD様のページを参考にさせていただきました。
こんなの僕一人の力じゃ書けない。感謝。
ウェブサーバー再起動
Apacheリスタート
sudo /opt/bitnami/ctlscript.sh restart apache
確認
wp-adminやwp-loginで管理者画面に行くかを確認。
not_foundに飛ばされてくれればOK。
後、/wp-login.php?45jfvo9204でログイン画面に行ければOK。
まとめ
色々プラグインがあるのですが、見てると.phpのファイル名を変えるものが多かったので、この方法を採用しました。
おわり
コメントを残す