多くの場合、Linux で IP アドレスをブロックする必要がある場合があります。たとえば、エンド ユーザーは、スパイウェアや IP 追跡から保護したい場合があります。システム管理者は、スパム IP アドレスによる企業メール サーバーへのアクセスを禁止したい場合があります。または、何らかの理由で特定の国による Web サービスへのアクセスを禁止したい場合があります。ただし、多くの場合、IP アドレス ブロック リストはすぐに数万の IP に達する可能性があります。これにどう対処すればよいでしょうか?
最も簡単な方法はyumをインストールすることですが、この方法のバージョンは比較的低く、使用されるモジュールパラメータなどがいくつか欠落しています。なので、あまりお勧めしません。
yum install ipset -y
yum install libmnl libmnl-devel kernel-devel libtool-devel -y
(新しいバージョンのインストール方法: git pull git://git.netfilter.org/libmnl.git) ./autogen.sh を実行します)
(注: libmnl のみをインストールすると、次のエラーが表示されます:
checking for libmnl... configure: error: Package requirements (libmnl >= 1) were not met: No package 'libmnl' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables libmnl_CFLAGS and libmnl_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. )
コンパイル時に、/lib/modules/2.6.32-431.el6 というプロンプトが表示される場合があります。 x86_64/source
調査の結果、ソフト リンク /lib/modules/2.6.32-431.el6.x86_64/build -->/usr/src/kernels/2.6.32-431.el6 であることが判明しました。 x86_64 は存在しません
解決策: ソフト接続を再確立します
ln -sb /usr/src/kernels/2.6.32-573.3.1.el6.x86_64 /lib/modules/2.6.32-431.el6.x86_64/build
./autogen.sh を実行すると、エラー メッセージが表示されます:
/usr/share/libtool/
が見つかりません解決策: libtool-devel をインストールしますツール パッケージを作成し、yum install libtool-devel
wget -P /usr/local/src http://ipset.netfilter.org/ipset-6.26.tar.bz2 cd /usr/local/src && tar xjf ipset-6.26.tar.bz2 && cd ipset-6.26 ./autogen.sh ./configure make make modules make install make modules_install
注: Linux カーネルが異なれば、使用するソース コード パッケージのバージョンも異なります
注: Linux カーネル ソース コード (バージョン >= 2.6.16 または >= 2.4.36)
コンパイルとインストール:
wget -P /usr/local/src http://ipset.netfilter.org/ipset-4.5.tar.bz2 cd /usr/local/src && tar xf ipset-4.5.tar.bz2 && cd ipset-4.5 make KERNEL_DIR=http://img.xue163.com/lib/modules/$(shell uname -r)/build #$(shell uname -r)使用shell命令获取 make KERNEL_DIR=http://img.xue163.com/lib/modules/$(shell uname -r)/build install
よく使用されるコマンド:
ipset list 查看ip集列表信息 ipset create pythontab hash:ip maxelem 1000000 创建一个IP集pythontab,指定类型为hash:ip,设置ip集最多存储IP数为1000000 ipset add pythontab X.X.X.X 增加一个ip地址到IP集pythontab中去 ipset add pythontab X.X.X.X/24 增加一个网段到IP集pythontab中去 ipset dell pythontab X.X.X.X 删除IP集中指定的IP地址 ipset list 查看当前所有list ipset save pythontab -f pythontab.txt 将IP集pythontab中的信息保存到当前文件目录下面的文件pythontab.txt中 ipset destroy pythontab 删除指定的IP集pythontab ipset restore -f pythontab.txt 将保存的pythontab.txt文件中的IP集信息重新导入到ipset中 其他命令参考 ipset --help iptable命令参考: iptables -I INPUT -m set --match-set pythontab src -p tcp --destination-port 80 -j DROP #拒绝ipset IP集pythontab中的地址访问服务器的80端口 service iptables save service iptables restart
これで、次の機能が確認できるはずです。 IP コレクション: IP ブラックリストの維持は面倒で時間がかかります。実際には、これを行うことができる無料または有料のサービスがたくさんあります。さらに、IP ブラックリストを IP セットに自動的に追加する方法を見てみましょう。無料のブラックリスト
次に、iblocklist2ipset というオープンソースの Python ツールを使用して、ブラックリストを IP セットに変換します
まず、pip をインストールする必要があります
次のコマンドを使用してインストールします。 iblocklist2ipset
$ pip install iblocklist2ipset
。Fedora などの一部のディストリビューションでは、次のコマンドを実行する必要がある場合があります:
$ python-pip install iblocklist2ipset
次に、iblocklist.com にアクセスして、P2P リスト (「level1」リストなど) の URL を取得します。
それをダウンロードして解凍し、たとえば pythontab.txt という名前の txt ファイルとして保存します。iblocklist2ipset はリストを取得するための URL のみをサポートしているため、pythontab.txt を Web サイトの任意のディレクトリに置きます。例: ipset directory
$ iblocklist2ipset generate --ipset pythontab "http://www.pythontab.com/ipset/pythontab.txt" > pythontab.txt
上記のコマンドを実行すると、pythontab.txt という名前のファイルが取得されます。その内容を表示すると、次のような内容が表示されます:
create pythontab hash:net family inet hashsize 131072 maxelem 237302 add pythontab 1.2.4.0/24 add pythontab 1.2.8.0/24 add pythontab 1.9.75.8/32 add pythontab 1.9.96.105/32 add pythontab 1.9.102.251/32 add pythontab 1.9.189.65/32
次の ipset コマンドを使用してこのファイルをロードできます:
$ ipset restore -f pythontab.txt
これで、自動的に作成された IP セットを表示できます:
$ ipset list pythontab
これにより、手動管理の必要がなくなります。トラブル。
centos で yum を使用してインストールされたバージョンは最新バージョンではないことに注意してください。-f パラメーターとブラックリスト ファイルのインポートがサポートされていない可能性があるため、最新バージョンをインストールするにはソース コード パッケージを使用することをお勧めします。以上がLinux での攻撃を防ぐために悪意のある IP アドレスをバッチでブロックする方法に関するケーススタディの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。