Apache'li bir sunucum var ve son zamanlarda mod_security2'yi kurdum çünkü bu konuda çok fazla saldırıya uğradım:
Apache sürümüm apache v2.2.3 ve mod_security2.c kullanıyorum
Bu hata günlüğündeki girişlerdi:
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
Access_log dosyasındaki hatalar:
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
Mod_security2'yi şu şekilde yapılandırmayı denedim:
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Mod_security2'deki şey SecFilterSelective'in kullanılamaması, bana hatalar vermesidir. Bunun yerine böyle bir kural kullanıyorum:
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Bu bile işe yaramaz. Artık ne yapacağımı bilemiyorum. Bir tavsiyesi olan var mı?
Güncelleme 1
Bu sorunu kimsenin mod_security kullanarak çözemediğini görüyorum. Şimdiye kadar ip-tabloları kullanmak, bunu yapmak için en iyi seçenek gibi gözüküyor, ancak dosyanın günlük kullanımda sıkça değiştiği için dosyanın çok büyük olacağını düşünüyorum.
2 çözüm daha buldum, birileri iyi olup olmadıklarına dair yorum yapabilir.
Aklıma gelen ilk çözüm, bu saldırıları apache hata kayıtlarımın dışında bırakmak. Bu, diğer acil hataları ortaya çıktıkça fark etmem için kolaylaştıracak ve uzun bir günlüğe tükürmek zorunda kalmayacak.
İkinci seçenek daha iyi olduğunu düşünüyorum ve bu doğru şekilde gönderilmeyen ana bilgisayarları engelliyor. Bu örnekte w00tw00t saldırısı ana bilgisayar adı olmadan gönderilir, bu nedenle doğru biçimde olmayan ana bilgisayarları engelleyebileceğimi düşünüyorum.
Güncelleme 2
Cevaplardan geçtikten sonra aşağıdaki sonuçlara vardım.
Apache için özel bir günlük kaydı yapmak, bazı gereksiz kaynakları tüketir ve gerçekten bir sorun varsa, muhtemelen herhangi bir eksiklik olmadan tam kütüğe bakmak isteyebilirsiniz.
Sadece isabetleri görmezden gelmek ve hata günlüklerinizi analiz etmenin daha iyi bir yoluna odaklanmak daha iyidir. Günlükleriniz için filtreler kullanmak bunun için iyi bir yaklaşım.
Konuyla ilgili son düşünceler
Yukarıda belirtilen saldırı, en azından güncel bir sisteminiz varsa makinenize ulaşamayacağından temelde endişelenmeyin.
Bir süre sonra gerçek olanlardan gelen tüm sahte saldırıları filtrelemek zor olabilir, çünkü hem hata günlükleri hem de erişim günlükleri çok büyük olur.
Bunun bir şekilde olmasını engellemek size kaynaklara mal olacak ve kaynaklarınızı önemsiz şeylere harcamamak iyi bir uygulamadır.
Şimdi kullandığım çözüm Linux logwatch . Bana günlüklerin özetlerini gönderir ve filtrelenir ve gruplandırılır. Bu sayede önemli olanı önemsizden kolayca ayırabilirsiniz.
Yardımlarınız için hepinize teşekkür ederim ve umarım bu yazı başkalarına da yardımcı olabilir.