< この記事をシェア >
CentOSなどLinuxのiptablesで特定のIPやURL(文言を含む)のアクセスを遮断する方法とオプションまとめです。
WEBサイトには切っても切れない縁の不正アクセスやアタック。。
とってもやめてほしいものです。。
レンタルサーバーなどで運用していればサーバー屋さんがシャットアウトしてくれたりもしますが、VPSや自分のサーバーなどで運用しているとやっぱり来ちゃいます。
本来はルーターなどでカットするのが一番安全だと思いますが、ネットワーク機器がない場合はどうしてもサーバーで設定する必要があります。
そんなときはiptablesが手っ取り早い。
特定のIPやURL(文言を含む)のアクセスを遮断するiptablesの書き方です。
iptables 特定のIPや文言のアクセスを遮断する書き方
iptablesをviで編集
vi /etc/sysconfig/iptables
↑のコマンドでviでiptablesを開きます。
書き方のオプションいろいろ
オプション | 意味 |
---|---|
-p (–protocol) |
プロトコル(tcp、udp、icmp、all)を指定 |
-s (–source) |
IPアドレス[/mask] 送信元のアドレス。 IPアドレスorホスト名を記述(Anyの場合は、記載なしでOK) |
-d (–destination) |
IPアドレス[/mask] 送信先のアドレス。IPアドレスorホスト名を記述 |
-i (–in-interface) |
パケットが入ってくるインターフェイスを指定 |
-o (–out-interface) |
パケットが出ていくインターフェイスを指定 |
-j (–jump) |
条件に合ったときのアクションを指定 |
-m state –state | パケットの状態を条件として指定 (stateは、 NEW、ESTABLISHED、RELATED、INVALIDが指定できる) ※基本的にNEW(新規パケット) |
-m tcp –dport | 単発ポートを指定 |
-m multiport –dports | 複数ポートを指定 ※複数ポートは「,」で区切る |
特定のIP(または帯域)を遮断
-A INPUT -s 113.0.0.0/8 -j DROP
↑は113.X.X.XというIPからの0アクセスをDROP(遮断)するという内容になります。
IPの部分は113.1.2.3のように1つ、または113.0.0.0/8のようにサブネットで範囲を指定することもできます。
特定の文言(URLなど)を含むアクセスを遮断
-A INPUT -m string –string “/announce” –algo bm –to 60 -j DROP
↑は「/announce」という文字を含むアクセスを全てDROP(遮断)するという内容になります。
アタックのように超ランダムなIPから同じファイルへの大量アクセスはこれで遮断できます。
というのもこの記事を書くキッカケになったのが「announce.php」というBitTorrent?か何かで使うファイルに大量にアクセスを喰らったためでした。。
announce.phpというファイルはサーバー上にはなくて404を連発→サイトダウンとなってイラッとしたのでiptablesにこの記載を行いました。
iptablesのリスタート・保存
service iptables restart
iptables-save > /etc/sysconfig/iptables
一度iptablesをリスタートさせます。
その後、書いた設定がブッ飛ばないように保存コマンドを打っておきます。
ちなみにiptalesの中身を確認するのは↓のコマンドがラクでいいです。
iptables -nL
カンタンに設定できるのでまずはコイツで。
サイト運営者さんには切っても切れない縁のアタックや不正アクセス。。
まずは簡単なこのiptablesあたりを使ってみてくださいー。
< この記事をシェア >
\\どうかフォローをお願いします…//
このiptablesで特定のIPやURL(文言を含む)のアクセスを遮断する方法&オプションまとめの最終更新日は2015年1月23日です。
記事の内容に変化やご指摘がありましたら問い合わせフォームまたはusedoorのTwitterまたはusedoorのFacebookページよりご連絡ください。