概要
WordPressなどの特定のディレクトリに対して攻撃を仕掛けてくるIPアドレスやNWをブロックする方法についてメモします。
環境
以下で動作を確認しました。
- Ubuntu 20.04
- Apache 2.4
/etc/apache2/site-available/example.conf
など、バーチャルサイトを利用
さっくりとした手順
- バーチャルサイトのコンフィグのバックアップを取ります。
- コンフィグを追記します。
- 設定を反映します。
- 動作を確認します。
コンフィグファイルのバックアップ
- ディレクトリ移動
/etc/apache2/sites-available && pwd
- バックアップ
sudo cp -pi example.conf /path/to/backup/directory/example.conf.$(date +%Y%m%d)
バックアップするファイルやディレクトリは自分の環境に合わせます。
- バックアップ確認
diff -u example.conf /path/to/backup/directory/example.conf.$(date +%Y%m%d)
バックアップがなければ(エラーがなければ)バックアップはできています。
コンフィグの追記
/etc/apache2/site-available/example.conf
以下のように追記します。
<Directory "/var/www/html/example">
<RequireAll>
Require all granted
Require not ip 192.168.1.1
</RequireAll>
</Directory>
拒否対象のディレクトリや、IPアドレスは対象に合わせて修正してください。
動作確認に万全を期すなら、自分が用意できるアクセス元のIPアドレスを指定します。(その後、設定を削除します)
- 追記後の差分確認
diff -u /path/to/backup/directory/example.conf.$(date +%Y%m%d) /etc/apache2/site-available/example.conf
上記の追記内容が出ていることを確認します。
設定反映
- 設定ファイル確認
sudo apache2ctrl configtest
SyntaxOKを確認します。
- サービス再起動
sudo systemctl restart apache2.service
反映確認
- 対象ディレクトリがあるサイトにアクセスして、通常にアクセスできることを確認。
- 自分が用意できるアクセス元のIPアドレスを指定しているなら、そこからのアクセスができないことを確認。
今後の対応
- ネガティブリストではなくポジティブリストでの運用
- 別ファイルの参照
など、改良していきます。