私はWebホスティング会社のシステム管理者インターンであり、これを行う方法を理解しようとしていますので、最善を尽くして説明します。
/etc/blockedipsと/etc/donotblockがあります。
毎時間実行されるcronで設定できるスクリプトを作成したいと思います。 2つのファイルをスキャンして比較し、a)警告を送信する(ウォッチドッグを使用する)b)ブロックされたIP内のIPを自動的に削除します。ブロックしてはいけないIPを常に追加する他の技術者が多いため、/donotblockでブロックしてはいけない項目と一致します。
私がスクリプトに初めて遭遇したので、私が経験している問題は、IPアドレスに対して簡単なgrepコマンドを簡単に実行できることです(たとえば、76.76.76.76は2つのファイル間で簡単に一致します)。方法 次の手順を実行します。
当社のIPブロックが99.10.10.0/24だとしましょう。私はすべてのアドレスを/donotblockに入れたくないので、スクリプトが99.10.10.*のすべてのIPと一致したいだけで、これを行う方法については空白で描画します。
誰もが正しい方向に私を指すことができますか?編集:サンプル
したがって、ファイルは次のようになります。
/etc/ブロックしない
私たち
26.225.128.0/18 43.150.128.0/20 44.50.142.0/24 73.16.32.0/20
他の人
184.123.20.10 184.123.20.11
それから
/etc/blocked_ips
76.45.23.1
/blocked_ipsにいくつかのスキルが追加されたとしましょう。
73.16.32.10、サブネット全体を構成するためにスクリプトで「73.16.32.*」を検索するようにしたいと思います。
シニアエンジニアと話をしながら、彼はスクリプトがdonotblockのものと一致するBlocked_ips内のIPを自動的に削除することを好みます。
ありがとう
答え1
Pythonnetaddr
パッケージを使用すると、IP範囲を繰り返すことができます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from netaddr import *
ipset = IPSet(['99.10.10.0/24'])
for ip in ipset:
print ip
出力:
99.10.10.0
99.10.10.1
99.10.10.2
...
99.10.10.253
99.10.10.254
99.10.10.255