2016-04-24 4 views
2

ホームオートメーション用のホームWebサーバーをプログラミングしています。私は数回、私のサーバーのポートをスキャンするボットを見たことがあります。望ましくないスキャンに対するあらゆる活動の兆候を避けるために、私は '/'のような特定のURLに対して何らかの回答を生成することを避けようとしています。一般的なスキャンされたURLのサイレントモードを設定します。 私はvoid .routeデコレータ、エラーアドレッシングとボイドページを試しましたが、すべてが何らかの応答を生成しました。 Flask with Pythonではこれが可能ですか? 回避策はありますか? ありがとうFlask:特定のURLに対して何らかの回答を生成しないようにする方法

+0

は、 '/'特定のIPが有効な応答を受け取る有効なURLですか?これに多少接していれば、サーバをスキャンしているボットを心配している場合は、サーバ上でfail2banを実行することを検討するべきです。 – WreckeR

答えて

0

私が示唆しているのは、HTTP_410_GONEのようにスキャンしているURLのカスタムエラーコードを返すことです。

から:http://www.flaskapi.org/api-guide/status-codes/

ごフラスコアプリの前にnginxの入れ
@app.route('/') 
def empty_view(self): 
    content = {'please move along': 'nothing to see here'} 
    return content, status.HTTP_410_GONE 

と、このエラーコードを監視し、常にこれらのURLをヒットしているIPSを禁止開始するfail2banの設定を使用します。

から:https://github.com/mikechau/fail2ban-configs/blob/master/filter.d/nginx-404.conf

# Fail2Ban configuration file 
[Definition] 
failregex = <HOST> - - \[.*\] "(GET|POST).*HTTP.* 410 
ignoreregex = 
0

私はあなたとまったく同じニーズを持っていただけreturn404からと500ハンドラに決めた:

@staticmethod 
    @bottle.error(404) 
    def error404(error): 
     log.warning("404 Not Found from {0} @ {1}".format(bottle.request.remote_addr, bottle.request.url)) 

    @staticmethod 
    @bottle.error(500) 
    def error500(error): 
     log.warning("500 Internal Error from {0} @ {1}".format(bottle.request.remote_addr, bottle.request.url)) 

例はbottleのためですが、 flaskでそれを適応させることができます。

明らかに404をキャッチするのと同じように、スキャナーからの予期せぬ呼び出しによってスクリプトがクラッシュし、トレースバック情報が提供されない場合は、500と同じことをすることにしました。

関連する問題