web-dev-qa-db-ja.com

.htaccessファイルでmod_securityを無効にするにはどうすればよいですか?

Apacheサーバーでmod_securityファイルを使用して.htaccessを無効にするにはどうすればよいですか?

私の個人ドメインでWordPress=を使用しており、コンテンツにコードブロックがあり、ホスティングプロバイダーによると、mod_securityでエラーが発生し、IPがmod_securityによりファイアウォールに入りました。

そこで、mod_securityファイルを使用して.htaccessを無効にします。

33
Gaurav Agrawal

これを行うことは可能ですが、ほとんどの場合、ホストはmod_security理由がある。自分のサイトでそれを無効にすることを彼らが承認することを確認してください。

とはいえ、これでうまくいくはずです。

<IfModule mod_security.c>
  SecFilterEngine Off
  SecFilterScanPOST Off
</IfModule>
44
Xyon

someサーバーおよびWebホストでは、.htaccessを介してModSecurityを無効にすることができますが、完全にのみです。個々のルールを無効にすることはできません。

サイト全体で無効にするのではなく、特定のURLに制限することをお勧めします。以下の<If>ステートメントで正規表現を使用して、一致するURLを指定できます...

### DISABLE mod_security firewall
### Some rules are currently too strict and are blocking legitimate users
### We only disable it for URLs that contain the regex below
### The regex below should be placed between "m#" and "#" 
### (this syntax is required when the string contains forward slashes)
<IfModule mod_security.c>
  <If "%{REQUEST_URI} =~ m#/admin/#">
    SecFilterEngine Off
    SecFilterScanPOST Off
  </If>
</IfModule>
6
Simon East

Mod_security 2.7.0+のこの質問を更新するために、--enable-htaccess-configフラグを付けてコンパイルしない限り、htaccess経由でmodsecを緩和する機能をオフにしました。ほとんどのホストは、このコンパイラオプションを使用しません。これは、セキュリティが緩すぎるためです。代わりに、httpd.confのvhostsがmodsecを制御するための重要なオプションです。

Htaccessを緩和してmodsecをコンパイルしても、使用可能なディレクティブは少なくなります。たとえば、SecRuleEngineは使用できません。許可されている場合、htaccessでデフォルトで使用できるリストを次に示します(ホストがAllowOverrideでこのリストをさらに制限する場合があることに注意してください)。

    - SecAction
    - SecRule

    - SecRuleRemoveByMsg
    - SecRuleRemoveByTag
    - SecRuleRemoveById

    - SecRuleUpdateActionById
    - SecRuleUpdateTargetById
    - SecRuleUpdateTargetByTag
    - SecRuleUpdateTargetByMsg

modsec公式wikiの詳細

2.xユーザーへの追加の注意:IfModuleは、古いmod_security2.cではなくmod_security.cを探す必要があります。

5
dhaupin

上記の解決策が機能しない場合、これを試してください:

<IfModule mod_security.c>
  SecRuleEngine Off
  SecFilterInheritance Off
  SecFilterEngine Off
  SecFilterScanPOST Off
  SecRuleRemoveById 300015 3000016 3000017
</IfModule>
2
manuel-84

サイトのルートディレクトリにある.htaccessファイルで、次の行を編集します。

<ifmodule mod_security.c>

SecFilterEngine Off
SecFilterScanPOST Off

</ifmodule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

SecFilterEngineのようなmod_securityルールとパーツを互いに離しておくだけです。 Apacheサーバーでの動作

1
OpenWebWar

NameCheapを含む一部のWebホストでは、.htaccessを使用してModSecurityを無効にすることはできません。唯一のオプションは、テクニカルサポートに連絡し、構成を変更するよう依頼することです。

1
Alex

共有ホスティング上のコンテンツを表示するために、単にエラーページをバイパスしようとしている人向け。 .htaccessファイルでリダイレクトを使用してみてください。それが406エラーである場合、UnoEuroでは、単にセキュリティを無効にしただけでは機能しないようでした。だから私は代わりにこれを使用しました:

ErrorDocument 406 /

その後、PHPを使用していつでもエラーステータスを変更できます。しかし、私の場合、そうすることは、WAFをバイパスしているため、SQLインジェクションへの扉を開くことになります。そのため、独自のセキュリティ対策を講じるか、できるだけ早くセキュリティを再度有効にする必要があります。

0
Vadim Cool