web-dev-qa-db-ja.com

/etc/hosts.denyを編集する

私は中国に支配されていますが、サーバーへのリクエストをブロックできない理由がわかりません。

// Host.deny

ALL: item.taobao.com
ALL: 117.25.128.*

しかし、ウェブサーバーのエラーログを見るとtail -f /var/log/Apache2/error.logリクエストはまだ許可されています。

質問:なぜ私の/etc/hosts.deny設定が機能しないのですか?

3
Jordan Davis
  1. このファイルの名前は、/etc/hosts.denyではなくHost.denyです。

  2. すべてのサービスがtcp-wrappersを使用しているわけではありません。たとえば、sshdはデフォルトではありません。 Apacheも同様です。

  3. iptablesを使用して、117.25.128/24からのすべてのパケットをブロックできます。例:

     iptables -I INPUT -s 117.25.128.0/24 -j DROP
    
  4. さらに、 fail2ban を使用してログファイル(Apacheのaccess.logやerror.logなど)を監視し、サーバーを攻撃しようとするIPアドレスを自動的にブロックできます。

Debian fail2banパッケージの説明から:

Fail2banは、ログファイル(/var/log/auth.log、/var/log/Apache/access.logなど)を監視し、既存のファイアウォールルールを更新することで、障害が発生しやすいアドレスを一時的または永続的に禁止します。

Fail2banを使用すると、iptablesまたはhosts.denyルールを使用してIPを禁止したり、単に通知メールを送信したりするなど、さまざまなアクションを簡単に指定できます。

デフォルトでは、さまざまなサービス(sshd、Apache、qmail、proftpd、saslなど)のフィルター式が付属していますが、他のテキストファイルを監視するように構成を簡単に拡張できます。すべてのフィルターとアクションは構成ファイルで提供されるため、fail2banを採用して、さまざまなファイルやファイアウォールで使用できます。

11
cas

元の質問は。私のDebianのApacheはlibwrapで設定されていないので、hosts.denyを参照しません。 [前の回答はすでにそれについて言及しています-現実には、tcpwrappersは、特にブラックリストに関しては、90年代のようにセキュリティの縮図ではありません]。デーモンとしてではなく、(x)inetdから実行する必要があります。これにより、(かなり)速度が低下します。

Apacheレベルでアクセスをブロック/許可することができ、Apacheのtcpラッパーは必要ありません(そのためのiptablesも必要ありません)。あなたはsshについて言及していませんが、私はsshサーバーを外部に直接開いたままにすることは決してありません。しかし、読み続けてください。

300以上のドメインを持つ仮想ホストがあり、taobao、baidu、そして多くの場合googleスパイダーでも同様の問題があります。特に、百度のクモは非常に攻撃的で持続的である可能性があります。

あなたがすでに理解しているように、それらにはサーバーのファームがあり、IPをブロックしても、他のいくつかのIPアドレスからすぐに再び表示されます。

手作業でIPアドレス/ネットブロックのリストを管理することは、まったく現実的ではありません。

私たちにとってうまくいくのは、modsecurityがユーザーエージェント文字列を永続的にブロックする一方で、mod_evasiveが乱用されているIPを一時的にブロックすることです。

この設定には、検索エンジンからのスパイダーの速度が低下するだけでなく、CMSでパスワードを推測しようとするゾンビを抑制できるという利点もあります。

Modsecurity.confの関連部分

SecRule REQUEST_HEADERS:User-Agent "Yandex" phase:1,deny,nolog,id:'6972'
SecRule REQUEST_HEADERS:User-Agent "ichiro" phase:1,deny,nolog,id:'6973'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider" phase:1,deny,nolog,id:'6974'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider/.*" phase:1,deny,nolog,id:'6975'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider-video" phase:1,deny,nolog,id:'6976'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider-image" phase:1,deny,nolog,id:'6977'
SecRule REQUEST_HEADERS:User-Agent "sogou spider" phase:1,deny,nolog,id:'6978'
SecRule REQUEST_HEADERS:User-Agent "YoudaoBot" phase:1,deny,nolog,id:'6979'
SecRule REQUEST_HEADERS:User-Agent "bingbot(at)Microsoft.com" phase:1,deny,nolog,id:'6980'
SecRule REQUEST_HEADERS:User-Agent "msnbot(at)Microsoft.com" phase:1,deny,nolog,id:'6981'
SecRule REQUEST_HEADERS:User-Agent "BLEXBot/1.0" phase:1,deny,nolog,id:'6982'
SecRule REQUEST_HEADERS:User-Agent "Bot.*" phase:1,deny,nolog,id:'6984'
SecRule REQUEST_HEADERS:User-Agent "AhrefsBot.*" phase:1,deny,nolog,id:'6985'

そして私たちのmod-evasive.conf

DOSHashTableSize 2048
DOSPageCount 10
DOSSiteCount 300
DOSPageInterval 2.0
DOSSiteInterval 1.0   
DOSBlockingPeriod 600.0   
DOSLogDir /var/log/Apache2/evasive
DOSWhitelist 127.0.0.1
DOSWhitelist 1xx.xxx.xxx.xx

私も非常に現実的な可能性を忘れていました。中国を扱っていない場合、またはホームサーバーを実行している場合は、国全体をブロックしてください。それらから生じる攻撃とマルウェアのレベルにより、多くの専門家がそれを行うことを正当化しています。

http://www.cyberciti.biz/faq/block-entier-country-using-iptables/

また、このかなり長い回答に脚注を追加するのを忘れました。多くの場合、この種の問題にはrobots.txtを使用するように職場で提案されます。重要なのは、robots.txtはリモートプログラムの提案にすぎないということです。不正なアクターは確かにそれらを無視し、他のWebクローラーがそれらを尊重することは保証されていません。私たちのテストから、たとえば、Baiduはそれらを尊重しないようです。 (robots.txtギャングに頼むのと同じです。私を殴るのではなく、くすぐってください)

3
Rui F Ribeiro