it-swarm.asia

IIS izleme için önerilen LogParser sorguları?

Yığın Taşması büyüdükçe, sorunlu HTTP istemcilerini tanımlamak için IIS günlüklerimize - haydut web örümcekleri , sayfa her saniyeyi yenilemek için ayarlanmış, kötü yazılmış bir kerelik web kazıyıcılar, sayfayı artırmaya çalışan hileli kullanıcılar milyonlarca kez sayılır vb.

Bir IIS günlük dosyası) işaret ederken tuhaflık ve anormalliklerin çoğunu belirlememize yardımcı olan birkaç LogParser sorgu ile geldim.

URL ile en yüksek bant genişliği kullanımı

SELECT top 50 DISTINCT 
SUBSTR(TO_LOWERCASE(cs-uri-stem), 0, 55) AS Url, 
Count(*) AS Hits, 
AVG(sc-bytes) AS AvgBytes, 
SUM(sc-bytes) as ServedBytes 
FROM {filename} 
GROUP BY Url 
HAVING Hits >= 20 
ORDER BY ServedBytes DESC
 url, sunulan avgbyte çarptı 
 ------------------------------------ ------------- ----- ------- ------- 
/favicon.ico 16774 522 8756028 
/content/img/search.png 15342 446 6842532 

URL'ye göre en popüler isabetler

SELECT TOP 100 
cs-uri-stem as Url, 
COUNT(cs-uri-stem) AS Hits 
FROM {filename} 
GROUP BY cs-uri-stem 
ORDER BY COUNT(cs-uri-stem) DESC
 url isabetleri 
 -------------------------------------- ----------- ----- 
/content/img/sf/vote-arrow-down.png 14076 
/content/img/sf/vote- arrow-up.png 14018 

IP/Kullanıcı Aracısı ile en yüksek bant genişliği ve isabetler

SELECT TOP 30
c-ip as Client, 
SUBSTR(cs(User-Agent), 0, 70) as Agent, 
Sum(sc-bytes) AS TotalBytes, 
Count(*) as Hits 
FROM {filename} 
group by c-ip, cs(User-Agent) 
ORDER BY TotalBytes desc
 müşteri kullanıcı aracısı tobybayt isabetleri 
 ------------- --------------------- ------------------------ --------- ----- 
 66.249.68.47 Mozilla/5.0 + (uyumlu; + Googlebot/2.1; 135131089 16640 [.____. 194.90.190.41 omgilibot/0.3 ++ omgili.com 133805857 6447 [.____]

IP/Kullanıcı Aracısı ile saate göre en yüksek bant genişliği

SELECT TOP 30
TO_STRING(time, 'h') as Hour, 
c-ip as Client, 
SUBSTR(cs(User-Agent), 0, 70) as Agent, 
Sum(sc-bytes) AS TotalBytes, 
count(*) as Hits 
FROM {filename} 
group by c-ip, cs(User-Agent), hour 
ORDER BY sum(sc-bytes) desc
 ik istemci kullanıcı-aracı totbytes isabet 
 - ------------- ------------------ ----------------------- -------- ---- 
 9 194.90.190.41 omgilibot/0.3 ++ omgili .com 30634860 ​​1549 
 10 194.90.190.41 omgilibot/0.3 ++ omgili.com 29070370 1503 

IP/Kullanıcı Aracısı ile saate göre en çok yapılan isabetler

SELECT TOP 30
TO_STRING(time, 'h') as Hour, 
c-ip as Client, 
SUBSTR(cs(User-Agent), 0, 70) as Agent, 
count(*) as Hits, 
Sum(sc-bytes) AS TotalBytes 
FROM {filename} 
group by c-ip, cs(User-Agent), hour 
ORDER BY Hits desc
 ik istemci kullanıcı aracısı tobybaytlara çarptı 
 - ------------- ------------------ ----------------------- ---- -------- 
 10 194.90.190.41 omgilibot/0.3 ++ omgili .com 1503 29070370 
 12 66.249.68.47 Mozilla/5.0 + (uyumlu; + Googlebot/2.1 1363 13186302 

{Dosyaadı} elbette bir IIS günlük dosyasına (ör.

c:\working\sologs\u_ex090708.log

İyi IIS LogParser sorguları için çok sayıda web araması yaptım ve çok az değerli buldum. Bu 5, yukarıda, ciddi sorunlu istemcilerin tanımlanmasında bize çok yardımcı oldu. kayıp mıyız?

IIS günlükleri (tercihen LogParser sorguları ile) bunları istatistiksel anormalliklere ayırmak için dilimlemek ve zarlamak için başka hangi yollar vardır? Sunucularınızda çalıştırdığınız iyi IIS LogParser sorgularınız var mı?)

86
Jeff Atwood

Bilgisayar korsanlığı aktiviteleri veya diğer saldırıları gösteren iyi bir gösterge, saatteki hata sayısıdır. Aşağıdaki komut dosyası 25'ten fazla hata kodu olan tarihler ve saatler döndürür döndürdü. Değeri, sitedeki trafik miktarına (ve web uygulamanızın kalitesine ;-)) bağlı olarak ayarlayın.

SELECT date as Date, QUANTIZE(time, 3600) AS Hour, 
       sc-status as Status, count(*) AS ErrorCount
FROM   {filename} 
WHERE  sc-status >= 400 
GROUP BY date, hour, sc-status 
HAVING ErrorCount > 25
ORDER BY ErrorCount DESC

Sonuç böyle bir şey olabilir:

 Tarih Saat Durum Hatası Sayı 
 ---------- -------- ------ ------ 
 2009 -07-24 18:00:00 404 187 [.____. 2009-07-17 13:00:00 500 99 [.____. 2009-07-21 21:00:00 404 80 [.____] 2009-07-03 04:00:00 404 45 
 ... 

Sonraki sorgu bir bir IP adresinden tek bir URL'ye olağandışı yüksek sayıda isabet algılar. Bu örnekte 500'ü seçtim, ancak Edge vakaları için sorguyu değiştirmeniz gerekebilir (örneğin, Google Londra'nın IP adresi hariç ;-).)

SELECT DISTINCT date AS Date, cs-uri-stem AS URL,
      c-ip AS IPAddress, Count(*) AS Hits
FROM  {filename}
GROUP BY date, c-ip, cs-uri-stem
HAVING Hits > 500
ORDER BY Hits Desc
 Tarih URL IP Adresi Tıklamaları 
 ---------- -------------------------- --------- --------------- ---- 
 2009-07-24 /Login.aspx 111.222.111.222 1889 
 2009-07-12 /AccountUpdate.aspx 11.22.33.44 973 [.____. 2009-07-19 /Login.aspx 123.231.132.123 821 [.____] 2009-07-21 /Admin.aspx 44.55.66.77 571 
 ... 
19
splattne
6

Üzgünüm, henüz yorum yapamam, bu yüzden cevaplamak zorundayım.

'URL'ye göre en yüksek bant genişliği kullanımı' sorgusunda küçük bir hata var. Çoğu zaman bir sayfa için isteklerinizi almak ve dosya boyutuyla çarpmak iyi olurken, bu durumda, herhangi bir sorgu parametresine dikkat etmediğiniz için, -Çok yanlış numaralar.

Daha doğru bir değer için SUL (İsabetler, Ort. Bayt) olarak ServedBytes yerine bir SUM (sc-bytes) yapın.

6
James Skemp

Meşru trafiği filtrelemeyi (ve kapsamınızı genişletmeyi) düşünebileceğiniz bir şey, IIS günlüklerinizde cs(Cookie) 'i etkinleştirmek, küçük bir çerez ayarlayan biraz kod eklemek javascript kullanarak WHERE cs(Cookie)='' ekleyin.

Küçük kodunuz nedeniyle, her kullanıcı çerezleri manuel olarak devre dışı bırakmadıkça (insanların küçük bir yüzdesinin yapabileceği) veya bu kullanıcı aslında Javascript'i desteklemeyen bir bot değilse (örneğin, wget, httpclient) bir çereze sahip olmalıdır. vb. Javascript'i desteklemez).

Bir kullanıcının yüksek bir etkinlik hacmine sahip olması, ancak çerezleri kabul etmesi ve javascript etkinleştirmesi durumunda, meşru bir kullanıcı olma olasılığının daha yüksek olduğunu, ancak yüksek miktarda etkinlik içeren ancak çerez/javascript desteği olmayan bir kullanıcı bulursanız şüpheleniyorum. , bir bot olmaları daha olasıdır.

6
Adam Brand

Bu adamın yaklaşık bir düzine yararlı sorusu var:

http://logparserplus.com/Examples/Queries.aspx

5
Portman

En uzun isteklerinizi (saplar ve/veya sorgular) ve sunucu tarafından alınan baytları en çok olanları aramak isteyebilirsiniz. Ayrıca, alınan bayt ve IP'ye göre gruplanan bir denemek istiyorum, böylece muhtemelen bir IP tarafından tekrarlanan belirli bir istek biçimi olup olmadığını görebilirsiniz.

SELECT TOP 30
cs-uri-stem,
cs-uri-query,
c-ip as Client, 
SUBSTR(cs(User-Agent), 0, 70) as Agent, 
cs-bytes,
c-ip,
FROM {filename} 
WHERE cs-uri-stem != '/search'
ORDER BY LEN(cs-uri-query) desc

SELECT TOP 30
COUNT(*) AS Hits
cs-uri-stem,
cs-uri-query,
c-ip as Client, 
SUBSTR(cs(User-Agent), 0, 70) as Agent, 
cs-bytes,
c-ip,
FROM {filename} 
GROUP BY c-ip, cs(User-Agent), cs-bytes 
ORDER BY Hits desc

Ayrıca, bir saat ve bir dakika boyunca IP talep eden grup için isabetleri sayabilir veya komut dosyası olabilecek düzenli olarak tekrarlanan ziyaretler olup olmadığını bulmak için talep eden IP'yi saatin dakikası ile gruplayabilirim. Bu, saat senaryosuna göre isabetlerde küçük bir değişiklik olacaktır.

Programlama olmayan sitelerde, günlüklerinizi SQL anahtar kelimeleri için aramak da iyi bir fikirdir, SELECT, UPDATE, DROP, DELETE ve diğerleri FROM sys.tables gibi tuhaflıklar, birlikte yapmak ve IP ile saymak kullanışlı görünebilir. Bunlar da dahil olmak üzere çoğu site için, kelimeler URI'nin sorgu bölümünde nadiren görünür, ancak burada URI gövdesinde ve veri bölümlerinde yasal olarak görünebilirler. Sadece önceden hazırlanmış komut dosyalarını kimin çalıştığını görmek için herhangi bir isabetin IP'lerini tersine çevirmeyi seviyorum. .ru, .br, .cz Ve .cn Seçeneklerini görme eğilimindeyim. Yargılamak istemiyorum, ama bundan böyle onları engelleme eğilimindeyim. Savunmalarında, bu ülkeler genellikle çoğunlukla nüfuslu, ancak şimdiye kadar .in, .fr, .us Veya .au aynısını yapıyor.

SELECT TOP 30
c-ip as Client, 
SUBSTR(cs(User-Agent), 0, 70) as Agent, 
cs-uri-stem,
LOWER(cs-uri-query) AS q,
count(*) as Hits,
SUM(sc-bytes) AS BytesSent,
SUM(cs-bytes) AS BytesRecv
FROM {filename} 
WHERE q like '%select%' OR q like '%sys.tables%' OR etc... 
GROUP BY c-ip, cs(User-Agent) 
ORDER BY Hits desc

Not; Bu sorguların gerçekten doğru çalışacağını doğrulayamıyorum. Düzeltilmesi gerekiyorsa lütfen bunları serbestçe düzenleyin.

4
dlamblin

Bunların hepsi bulundu burada (IIS günlük dosyaları, btw) ayrıştırmak için mükemmel bir kılavuzdur:

Web sitenizdeki en yeni 20 dosya

logparser -i: FS "TOP 20 Yolu SEÇ, Yolu c:\inetpub\wwwroot * 'dan CreationTime. * CreationTime DESC İLE SİPARİŞ VER -rtp: -1

Path                                                        CreationTime
----------------------------------------------------------- ------------------
c:\inetpub\wwwroot\Default.asp                              6/22/2003 6:00:01
c:\inetpub\wwwroot\About.asp                                6/22/2003 6:00:00
c:\inetpub\wwwroot\global.asa                               6/22/2003 6:00:00
c:\inetpub\wwwroot\Products.asp                             6/22/2003 6:00:00

En son değiştirilen 20 dosya

logparser -i: FS "C:\inetpub\wwwroot * 'dan SON 20 Yolu, LastWriteTime SEÇİN. * LastWriteTime DESC TARAFINDAN SİPARİŞ VERİN" -rtp: -1

Path                                                        LastWriteTime
----------------------------------------------------------- ------------------
c:\inetpub\wwwroot\Default.asp                              6/22/2003 14:00:01
c:\inetpub\wwwroot\About.asp                                6/22/2003 14:00:00
c:\inetpub\wwwroot\global.asa                               6/22/2003 6:00:00
c:\inetpub\wwwroot\Products.asp                             6/22/2003 6:00:00

200 durum koduyla sonuçlanan dosyalar (truva atlarının silinmesi durumunda)

logparser "DISTINCT TO_LOWERCASE SEÇİN (cs-uri-stem) URL OLARAK, Say () AS HIT'DEN VAR. log NEREDEN sc-status = 200 URL İLE SİPARİŞ VER URL İLE" -rtp: - 1

URL                                      Hits
---------------------------------------- -----
/About.asp                               122
/Default.asp                             9823
/downloads/setup.exe                     701
/files.Zip                               1
/Products.asp                            8341
/robots.txt                              2830

Aynı sayfaya tek bir günde 50 defadan fazla gelen IP adreslerini göster

logparser "SELECT DISTINCT tarih, cs-uri-stem, c-ip, Sayım () AS Hits FROM ex. log GROUP BY tarihi, c-ip, cs-uri-stem HAVING Hits> 50 ORDER BY Hits Desc "-rtp: -1

date       cs-uri-stem                         c-ip            Hits
---------- ----------------------------------- --------------- ----
2003-05-19 /Products.asp                       203.195.18.24   281
2003-06-22 /Products.asp                       210.230.200.54  98
2003-06-05 /Products.asp                       203.195.18.24   91
2003-05-07 /Default.asp                        198.132.116.174 74
3
GregD

LogParser ile bunu nasıl yapacağımı bilmiyorum ama 404s olsun "phpMyAdmin" (veya diğer yaygın vunerablities) gibi şeyler için istek dizeleri arıyor komut dosyası saldırıları tanımlamak için iyi bir yol olabilir.

0
BCS