سؤال استعلامات LogParser الموصى بها لمراقبة IIS؟


مع نمو Stack Overflow ، بدأنا نلقي نظرة عن كثب على سجلات IIS الخاصة بنا لتحديد مشكلات عملاء HTTP - أشياء مثل العناكب المارقة، المستخدمين الذين لديهم مجموعة كبيرة من الصفحات لتحديث كل ثانية ، كاشطات ويب لمرة واحدة مكتوبة بشكل سيء ، مستخدمين خادعين يحاولون زيادة عدد الصفحات في زليون مرة ، وهكذا دواليك.

لقد أتيت مع عدد قليل LOGPARSER الاستعلامات التي تساعدنا على تحديد معظم الشذوذات والشذوذ عند الإشارة إلى ملف سجل IIS.

أعلى استخدام النطاق الترددي عن طريق URL

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 hits avgbyte serve
------------------------------------------------- - ---- ------- -------
/favicon.ico 16774 522 8756028
/content/img/search.png 15342 446 6842532

أهم النتائج حسب عنوان URL

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
------------------------------------------------- - ----
/content/img/sf/vote-arrow-down.png 14076
/content/img/sf/vote-arrow-up.png 14018

أعلى النطاق الترددي ويضرب به IP / وكيل المستخدم

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
العميل وكيل - totbytes الزيارات
------------- ------------------------------------- -------- --------- -----
66.249.68.47 Mozilla / 5.0 + (متوافق ؛ + Googlebot / 2.1 ؛ 135131089 16640
194.90.190.41 omgilibot / 0.3 ++ omgili.com 133805857 6447

عرض النطاق الترددي الأعلى بالساعة بواسطة IP / وكيل المستخدم

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
hr عميل user-totbytes يضرب
- ------------- ----------------------------------- ------ -------- ----
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 / وكيل المستخدم

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
hr عميل المستخدم وكيل يضرب totbytes
- ------------- ----------------------------------- ------ ---- --------
10 194.90.190.41 omgilibot / 0.3 ++ omgili.com 1503 29070370
12 66.249.68.47 Mozilla / 5.0 + (متوافق ؛ + Googlebot / 2.1 1363 13186302

سيكون {filename} بالطبع مسارًا إلى ملف سجل IIS ، مثل

c:\working\sologs\u_ex090708.log

لقد أجريت الكثير من عمليات بحث الويب للحصول على استعلامات IIS LogParser جيدة ووجدت القليل جدًا. هذه 5 ، أعلاه ، ساعدتنا بشكل كبير في تحديد العملاء المشكلة خطيرة. لكنني أتساءل - ما الذي نفتقده؟

ما هي الطرق الأخرى لشريحة وزرد سجلات IIS (ويفضل مع استعلامات LogParser) لإعطائهم للأخطاء الإحصائية؟ هل لديك أي استعلامات IIS LogParser جيدة تقوم بتشغيلها على الخوادم الخاصة بك؟ 


86
2017-07-25 11:19


الأصل


المشار إليه من قبل blog.stackoverflow.com/2009/07/podcast-63 - Brad Gilbert
في استعلام استخدام النطاق الترددي الأعلى هناك الكلمة الأساسية DISTINCT. ما فائدته؟ - Jakub Šturc


الأجوبة:


مؤشر جيد لأنشطة القرصنة أو هجمات أخرى هو عدد الأخطاء في الساعة. البرنامج النصي التالي بإرجاع التواريخ والساعات التي تحتوي على أكثر من 25 رمز خطأ عاد. اضبط القيمة حسب كمية الحركة على الموقع (وجودة تطبيق الويب الخاص بك ؛-)).

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

النتيجة يمكن أن شيء من هذا القبيل:

تاريخ ساعة حالة ErrorCount
---------- -------- ------ ------
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
...

الاستعلام التالي بالكشف عن عدد الزيارات غير المعتاد على عنوان URL واحد من عنوان IP واحد. في هذا المثال ، اخترت 500 ، ولكن قد تضطر إلى تغيير الاستعلام عن حالات الحواف (باستثناء عنوان IP الخاص بـ Google London على سبيل المثال ؛-)).

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
تاريخ عنوان IPAddress الزيارات
---------- ----------------------------------- ----- ---------- ----
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
2017-07-25 11:47



الاستعلام الثاني ، نقوم به بالفعل - لاحظ التجميع في العديد من الاستعلامات. بواسطة IP و User Agent ، هذا هو أفضل ما في العالمين ، حيث أنه إذا كان وكيل المستخدم خاليًا ، فهو نفس عنوان IP ، وإذا لم يكن الأمر كذلك ، فهذه معلومات أكثر. - Jeff Atwood
حسنًا جيف ، إن إضافة وكيل المستخدم أمر منطقي. عذرا ، مجموعة من الذاكرة السيئة قصيرة المدى واضطراب نقص الانتباه. :-) - splattne
استبدال having مع Limit n قد يجعل طريقة جيدة لضبط الاستعلام الأول - BCS


شيء واحد يمكن أن تفكر به لتصفية حركة المرور المشروعة (وتوسيع نطاقك) هو تمكين cs(Cookie) في سجلات IIS الخاصة بك ، قم بإضافة بعض التعليمات البرمجية التي تعيّن ملف تعريف ارتباط صغير باستخدام javascript ، وأضف WHERE cs(Cookie)=''.

نظرًا لقلة التعليمات البرمجية الخاصة بك ، يجب أن يكون لدى كل مستخدم ملف تعريف ارتباط إلا إذا قام بتعطيل ملفات تعريف الارتباط يدويًا (والتي قد تفعلها نسبة صغيرة من الأشخاص) أو ما لم يكن هذا المستخدم في الواقع بوتًا لا يدعم جافا سكريبت (على سبيل المثال ، wget ، httpclient ، وما إلى ذلك لا تدعم جافا سكريبت).

أظن أنه إذا كان لدى المستخدم كمية كبيرة من النشاط ، إلا أنه يقبل ملفات تعريف الارتباط وتم تمكين جافا سكريبت ، فمن المرجح أن يكون مستخدمًا شرعيًا ، في حين أنك إذا عثرت على مستخدم لديه عدد كبير من الأنشطة ولكن ليس هناك دعم لملفات تعريف الارتباط / جافا سكريبت ، هم أكثر عرضة ليكون بوت.


6
2017-07-25 17:26





عذرًا ، لا يمكنني التعليق بعد ، لذلك أُجبر على الإجابة.

هناك خطأ ثانوي باستخدام الاستعلام "استخدام النطاق الترددي العلوي حسب عنوان URL". على الرغم من أنك في معظم الأوقات ستأخذ طلباتك للصفحة وتضرب بحجم الملف ، في هذه الحالة ، بما أنك لا تولي اهتماما لأي معلمات طلب البحث ، فستواجه بعضًا من من أرقام غير دقيقة جدا.

للحصول على قيمة أكثر دقة ، ما عليك سوى إجراء SUM (SC-بايت) بدلا من ال MUL (Hits، AvgBytes) as ServedBytes.


6
2017-09-10 13:11





اندرس لوندستروم تم كتابة سلسلة من مقالات المدونات بخصوص استعلامات LogParser الشائعة.

كنت أستخدم هذه:


6
2017-10-28 14:12





هذا الشخص لديه حوالي 12 استعلامات مفيدة:

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


5
2017-08-09 15:07



وهذا الرجل (أنا) هو دائما البحث عن المزيد من الاستعلامات للنشر. - James Skemp


قد ترغب في البحث عن طلباتك الأطول (stems و / أو استعلامات) ، وتلك التي بها معظم وحدات البايت التي يتلقاها الخادم. وأحاول أيضًا تجربة تلك المجموعات من خلال وحدات البايت المستلمة و IP ، بحيث يمكنك معرفة ما إذا كان هناك تنسيق طلب محدد يتكرر على الأرجح بواسطة عنوان IP واحد.

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

سأقوم أيضًا بحساب عدد الزيارات لأي من مجموعة IP التي تطلبها لمدة ساعة أو دقيقة في اليوم ، أو تجميع عنوان IP الذي يطلبه في الدقيقة من الساعة للعثور على ما إذا كانت هناك زيارات متكررة بانتظام قد تكون نصوصًا برمجية. هذا من شأنه أن يكون تعديلا صغيرا على الضربات التي كتبها نص ساعة.

على أي مواقع غير برمجة ، فإن البحث عن سجلات الكلمات الرئيسية الخاصة بـ SQL يعد فكرة جيدة ، مثل الأشياء SELECT، UPDATE، DROP، DELETE والشذوذات الأخرى مثل FROM sys.tables، ORING أن معا والفرز عن طريق IP سوف تبدو في متناول يدي. بالنسبة لمعظم المواقع بما في ذلك هذه الكلمات ، نادرًا ما تظهر الكلمات في جزء الاستعلام من URI ، ولكن هنا قد تظهر بشكل شرعي في أجزاء ساق URI وبياناتها. أنا أحب عكس عناوين IP من أي ضربات فقط لمعرفة من الذي يشغل البرامج النصية premade. أنا أميل للرؤية .ru، .br، .cz و .cn. لا أقصد الحكم ، لكني أميل إلى منعهم من الآن فصاعدا. في دفاعهم ، عادة ما تكون هذه البلدان مأهولة بالسكان ، على الرغم من أنني حتى الآن لا أرى الكثير من القول .in، .fr، .us أو .au فعل المثل.

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

ملاحظة لا يمكنني التحقق من أن هذه الاستعلامات ستعمل بشكل صحيح. يرجى تعديلها بحرية إذا كانت بحاجة إلى الإصلاح.


4
2017-07-30 17:06





تم العثور على جميع هذه هنا (وهو عبارة عن دليل ممتاز لتعديل ملفات تعريف IIS الخاصة بك ، راجع للشغل):

20 احدث الملفات على موقع الويب الخاص بك

logparser -i: FS "SELECT TOP 20 Path، CreationTime من c: \ inetpub \ wwwroot *. * ORDER BY CreationTime DESC" -القيمة: -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

20 آخر الملفات المعدلة

logparser -i: FS "SELECT TOP 20 مسار ، LastWriteTime من c: \ inetpub \ wwwroot *. * ORDER BY LastWriteTime DESC" -القيمة: -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 (في حالة حذف أحصنة طروادة)

logparser "SELECT DISTINCT TO_LOWERCASE (cs-uri-stem) AS URL، Count () كما يضرب من السابق.log WHERE sc-status = 200 GROUP BY URL ORDER BY URL "-rtp: -1

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

أظهر أي عنوان IP يصل إلى نفس الصفحة أكثر من 50 مرة في يوم واحد

logparser "SELECT DISTINCT date، cs-uri-stem، c-ip، Count () كما يضرب من السابق.log GROUP BY date، c-ip، cs-uri-stem HAVING Hits> 50 ORDER BY Hits Desc "-راتب: -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
2017-08-06 20:58



نظرت إلى هؤلاء ولم أجدهم مفيدا بشكل خاص. هم في الغالب "العثور على حل وسط" وهذا ليس حقا هدفنا (نحن لم يتعرض للخطر) - Jeff Atwood


لا أعرف كيف أفعل ذلك مع LogParser لكن البحث عن سلاسل من الطلبات لأشياء مثل "phpMyAdmin" (أو غيرها من الفظائع الشائعة) التي تحصل على 404 قد تكون طريقة جيدة لتحديد الهجمات النصية.


0
2017-08-06 19:32



لا يتمثل الهدف في العثور على هجمات كتابية من هذا النوع ، ولكن عملاء غير مسؤولين / ذوي مشكلات متعلقة بالنطاق الترددي وحركة المرور. - Jeff Atwood
أود أن أقول إن أي عميل يحاول أن يؤذيني هو عميل مشكلة وأنا أفضل ألا أستخدمه باستخدام النطاق الترددي الخاص بي. - BCS