163data.com.cn続き(やっぱりダメでした)

事前に情報を得たので、やっぱりか〜、という印象しかありませんが、httpsd.confにて163data.com.cnをDenyさせても、その後もそこからのアクセスが続いています。

というわけで、やはりIPアドレス(サブネットマスク)によるフィルタリングで対応することにしました。
IPアドレスではじくことにしたので、それならばhttpsd.confではなくiptablesで該当IPアドレス(サブネットマスク)からのアクセスをDROPさせるようにしてみようと思います。

さて、直近のアクセスログから、さしあたって大量にアクセスを繰り返しているのは

118.170.174.59.broad.wh.hb.dynamic.163data.com.cn
4.35.48.58.broad.wh.hb.dynamic.163data.com.cn

の二つ(正確には、*.*.174.59と*.*.48.58)。

以前調べた情報から、この頭の数字(オクテット)を反対に並べることでこのノードの所属するIPアドレスとなることはわかっています。つまり上ならば「59.174.170.118」がIPアドレスであり、下ならば「58.48.35.4」がそのIPアドレスとなる、というわけですね。

問題は、通常IPアドレスは動的に割り当てられるでしょうから、このIPアドレスを固定でアクセス禁止にしてもあまり実効性がない(であろう)ということ。
このIPアドレスを割り振っているネットワークそのものからのアクセス(そのドメインが163data.com.cnなわけです)をはじくようにしなければなりません。
そこで(とりあえずは)この二つのノードが所属するネットワークアドレスを検索しましょう。

それぞれwhoisコマンドで確認すると、上のinetnumは
59.174.0.0 – 59.175.255.255
で、下のinetnumは
58.48.0.0 – 58.55.255.255
となりました。

これが確認できたら、今度はこのネットワークのアドレス(つまりこのプロバイダが持っているネットワークアドレスの範囲)を、IPアドレス/ネットマスクで書き直します。

59.174.0.0 – 59.175.255.255
ということは、ビット列で書けば
00111011.10101110.00000000.00000000
00111011.10101111.11111111.11111111
までの範囲ということ。そして頭のビットが揃っているところまでがネットワークアドレスであり、それ以降はサブネットマスクとなりますから、この場合は
00111011.1010111x.xxxxxxxx.xxxxxxxxの部分がネットワークアドレスになります。
こいつを10進数に直すと、
59.174.0.0/15
となるわけですね。
念のためコチラで確認してみても、同じ値を取り出すことができましたから、方法は間違っていないと思います(確認したサイトの大本はコチラです)。

同じ手順で下を書き換えると、その範囲はビット列表記で
00111010.00110000.00000000.00000000
00111010.00110111.11111111.11111111
なので、共通部分は00111010.00110xxx.xxxxxxxx.xxxxxxxxとなり、これを10進数表記に戻すと
58.48.0.0/13
となるわけですね(これも念のため確認してみました)。

さしあたってこの二つをアクセス禁止対象にして、iptablesにその設定をかき込みます。
ただ、よくよくiptables設定用のスクリプトを思い返せば、INPUTのPOLICYは基本全てDROPで、必要に応じて(たとえばWEBならtcpの80番ポートのみ全てのIPアドレスから)アクセスできるようにしているのでした。
従って、ここで取り出したネットワークアドレスに対しても、TCP80番ポートへのアクセスだけを禁止すればよいはず。

そこで、この条件に合致するようにiptables用のスクリプトにアクセス拒否リストのセクションを作り、記入します。

#####
# ACCESS DENY(web)
#####
iptables -A INPUT -p tcp -s 59.174.0.0/15 -d $myhost –dport 80 -j DROP
iptables -A INPUT -p tcp -s 58.48.0.0/13 -d $myhost –dport 80 -j DROP

なおここで$myhostは変数としてきちんと定義してあります。

見方は言わずもがなですが、-sで指定したアドレスからの、私のサーバへのTCP80番ポートへのアクセス(つまりWEBサーバへのアクセス)はそのパケットをDROP(破棄)する、という命令を追加する、ということですね。

記入したらスクリプトを実行し、iptablesを確認します。

# iptables -L

してみて、その中に、

DROP       tcp  —  0.0.174.59.broad.wh.hb.dynamic.163data.com.cn/15  boota.mydns.jp      tcp dpt:https
DROP       tcp  —  0.0.48.58.broad.wh.hb.dynamic.163data.com.cn/13  boota.mydns.jp      tcp dpt:https

があればOKのはず(ipアドレスはドメイン名に切り替わって表示されました)。
最後にiptablesを保存して(コレをしないとサーバ再起動時に失われてしまいます)終了。

引き続き様子を見ることにしましょう!

boota

いろんなモノに、いろんな意味で、ヲタ。なのかも?

One thought to “163data.com.cn続き(やっぱりダメでした)”

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)