.htaccess HTTP_HOST IP (Güvenlik) olduğunda erişimi engelle

May 31 2018

Sunucuma birçok saldırı yaptım. Çoğu, bir güvenlik açığı taramasıyla başlar ve ardından bir dizi POST isteği izler.

Yakında Cloudflare (WAF ve DDos) uygulayacağım. Bu, etki alanımdaki bir DNS aramasının sunucum yerine Cloudflare IP adresini göstereceği anlamına gelir. Yani sunucumun IP adresi bu konuda gizlenecek.

Bununla birlikte, saldırılar, dünyadaki tüm olası IP'lerden tek tek geçerek gelebilir. Sunucu günlüklerime baktığımda, bunun ÇOK OLDUĞUNU görüyorum. (1 sunucuma bağlı 3 IP'im var ve aynı saldırılar XXX.XXX.XXX.XX1'de, ardından XXX.XXX.XXX.XX2'de ve ardından XXX.XXX.XXX.XX3'te gerçekleşiyor)

En üst düzey .htaccess'im şuna benzer:

# deny all POST requests
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_METHOD} POST
    RewriteRule .* - [F,L]
</IfModule>


# deny unused request types
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_METHOD} ^(delete|head|trace|track) [NC]
    RewriteRule .* - [F,L]
</IfModule>


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

# END WordPress

Sorular:

  1. O yüzden ne eklemek gerekir [eğer HTTP_HOST = XXX.XXX.XXX.XX1 VEYA HTTP_HOST = XXX.XXX.XXX.XX2 VEYA HTTP_HOST = XXX.XXX.XXX.XX3] ardından trafik derhal engellenir?

  2. Bu yeni kodu .htaccess'in en üstüne koyabilir miyim? Şu anda orada olanı kıracak mı?

Yanıtlar

1 MrWhite May 31 2018 at 18:49

HostBelirli IP'ler için başlığı kontrol etmenize gerek yoktur , sadece Hostbir rakamla başlayanları kontrol edin . Örneğin, .htaccessdosyanızın en üstünde :

RewriteCond %{HTTP_HOST} ^\d
RewriteRule .* - [F]

LBayrağa ihtiyacınız yok F- ima ediliyor.

Ayrıca ek <IfModule mod_rewrite.c>paketleyicilere ihtiyacınız yoktur . WordPress'i olduğu gibi bırakın. (Her ne kadar bu da kesinlikle gerekli değildir.)

Ancak, bu tür bloklar ideal olarak içinde değil, sunucu / vitualhost düzeyinde gerçekleştirilmelidir .htaccess. <VirtualHost>Bu istenmeyen IP isteklerini yakalayan bir varsayılan yapılandırın .

Örneğin, yalnızca isme dayalı VirtualHosts kullandığınızı varsayarak , formun varsayılan bir VirtualHost ( diğer tüm VirtualHost'lardan önce olması gerekir) yapılandırabilirsiniz :

# Catch all other requests for non-specific hosts. eg IP address access
<VirtualHost _default_>
  ServerName default.example.com
  <Location />
  Require all denied
  </Location>
</VirtualHost>

Bu, başka bir "adlandırılmış" Sanal Konak ile eşleşmeyen tüm istekleri yakalar. _default_sadece bir takma addır *. Yukarıda belirtildiği gibi, bu <VirtualHost>kap gerekir diğer tüm öncesinde meydana <VirtualHost>sunucu yapılandırmasında kaplarda. İlk önce tanımlanmış olması onu "varsayılan" yapan şeydir.

ServerNameYönergesi gerçek dışında başka bir şey olarak tanımlanması gerektiğini sunucu adına sisteminizde. İhmal edilebilir, ancak sunucu yalnızca hesaplamaya çalışacaktır, bu da güvenilmez olduğu kanıtlanabilir.

Bu, gerçek Sanal Konaklarınızın (web sitenize hizmet eden) bu diğer isteklerle ilgilenmesini önler .


# deny all POST requests

Bu biraz aşırı görünüyor! Sitenizin hala çalışmasına şaşırdım mı?