Order Allow,Deny Allow from all Deny from 194.87.147.196
このレコード(ブロック)は、public_htmlフォルダー内の各サイトの各.htaccessファイルで1回だけ見つかります。 そして、たとえば194.165.16.76のようにIPによるすべてのサイトへのアクセスをブロックする場合、各ファイルで、「すべてから許可」行の後に新しい行が追加されます。
Deny from 194.165.16.76
質問:サーバー上に2つまたは3つのサイトではなく、さらに多くのサイトがある場合はどうすればよいですか?
これが私がこの問題を解決しようとした方法です。
検索コマンド
findコマンドは、どこからでも以下を実行する場合、指定されたフォルダーから開始して、すべての.htaccessファイルを再帰的に検索するのに役立ちます。
find ~/public_html -type f -name .htaccess
–Execパラメーター
次に、ファイルに対していくつかの操作を実行する必要があります。
- 「すべてから許可」という行を見つけます
- 「194.165.16.76から拒否」という行をその後に挿入します
findコマンドの-execオプションは、これに役立ちます。 特に、 ストリームエディターsedを使用しました。 つまり、特別な場合、特定の.htaccessファイルの場合、コマンドは私を助けます:
sed -i "/Allow from all/a Deny from 194.165.16.76" .htaccess
次に、findとsedを接続します:
find ~/public_html -type f -name .htaccess –exec sed -i "/Allow from all/a Deny from 194.165.16.76" {} \;
このコマンドを実行すると、bashはすべての.haccessファイルを検索し、「すべてからの許可」の直後に194.165.16.76からの拒否を挿入します。
Bashスクリプト
ルーチンの一部を削減しましたが、毎回同じ長いチームを募集しないように努めています。 次の内容で〜/ addblacklistipファイルをホームフォルダーに作成します。
#!/bin/bash me=`basename $0` if [[ $# -lt 2 ]]; then echo "Usage $me <start_path> <IP_address>" exit fi find $1 -type f -name .htaccess -exec sed -i "/Allow from all/a Deny from $2" {} \;
次に、コマンドを実行します。
chmod +x ~/addblacklistip
スクリプトを使用する準備ができました。 たとえば、IP 7.7.7.7のすべての.htaccessファイルをブロックするには、次のコマンドを実行します。
~/addblacklistip ~/public_html 7.7.7.7
備考と追加
あなたがすること-あなた自身とリスクで行う!
まず、実行するすべてのコマンドとスクリプトを何度も確認します。 特に.htaccessファイルに関しては。 第二に、サブフォルダーと.htaccessファイルを含むテストフォルダーを作成してすべてをチェックするのが面倒ではありません。
ロックセクションが異なって見える場合...
新しいブロッキングエントリを作成する場所に、キーワードを追加します(たとえば、#Add next IP here)。 次のようになります。
Order Allow,Deny Allow from all Deny from 194.87.147.196 #Add next IP here Deny from 194.87.147.196
そして、スクリプト行で:
find $1 -type f -name .htaccess -exec sed -i "/Allow from all/a Deny from $2" {} \;
文字列に置き換えます:
find $1 -type f -name .htaccess -exec sed -i "/#Add next IP here/a Deny from $2" {} \;
これで、キーエントリ#Add next IP here hereの後に新しいブロックエントリが表示されます。
すべてのサイトが〜/ public_htmlフォルダーではなく、〜/ wwwにある場合
次のパラメーターを使用してスクリプトを実行するだけです。
~/addblacklistip ~/www 7.7.7.7
ここで、7.7.7.7はブロックされたIPです。
追加するIPがたくさんある場合
いくら? 問題の分析と自動化のための別のトピックがあります。