আইআইএস পর্যবেক্ষণের জন্য প্রস্তাবিত লগ পার্সার অনুসন্ধানগুলি?


86

স্ট্যাক ওভারফ্লোটি বাড়ার সাথে সাথে আমরা এইচটিটিপি ক্লায়েন্টগুলি সনাক্ত করার জন্য আমাদের আইআইএস লগগুলিকে ঘনিষ্ঠভাবে পর্যবেক্ষণ করতে শুরু করেছি - দুর্বৃত্ত ওয়েব মাকড়সার মতো জিনিস , ব্যবহারকারীরা প্রতি সেকেন্ডে রিফ্রেশ করার জন্য একটি বড় পৃষ্ঠা সেট করেছেন, দুর্বলভাবে লিখিত এক-স্ক্র্যাপ স্ক্র্যাপার, কৌশল ব্যবহারকারীরা পৃষ্ঠা বৃদ্ধি করার চেষ্টা করে এমন এক মিলিয়ন বার গণনা করে এবং আরও এগিয়ে।

আমি কয়েকটি লগ পার্সার ক্যোয়ারী নিয়ে এসেছি যা আইআইএস লগ ফাইলের দিকে নির্দেশ করার সময় আমাদের বেশিরভাগ বিজোড়তা এবং অস্বাভাবিকতা সনাক্ত করতে সহায়তা করে।

ইউআরএল দ্বারা শীর্ষ ব্যান্ডউইথ ব্যবহার

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 পরিবেশন করা औसतগুলি হিট করে
--------------------------------------------------------- ---- ------- -------
/favicon.ico 16774 522 8756028
/content/img/search.png 15342 446 6842532

ইউআরএল দ্বারা শীর্ষ হিট

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
ইউআরএল হিট
--------------------------------------------------------- ----
/content/img/sf/vote-arrow-down.png 14076
/content/img/sf/vote-arrow-up.png 14018

শীর্ষস্থানীয় ব্যান্ডউইথ এবং আইপি / ব্যবহারকারী-এজেন্ট দ্বারা হিট

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
ক্লায়েন্ট ব্যবহারকারী-এজেন্ট টোটবাইটস হিট
------------- ------------------------------------- -------- --------- -----
66.249.68.47 মজিলা / 5.0 + (সামঞ্জস্যপূর্ণ; + গুগলবোট / 2.1; 135131089 16640
194.90.190.41 ওমগিলিবোট / 0.3 ++ ওমগিলি.কম 133805857 6447

আইপি / ব্যবহারকারী-এজেন্ট দ্বারা ঘন্টা বর্ধিত শীর্ষ ব্যান্ডউইথ

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
এইচআর ক্লায়েন্ট ব্যবহারকারী-এজেন্ট হিট
- ------------- ----------------------------------- ------ -------- ----
9 194.90.190.41 ওমগিলিবোট / 0.3 ++ ওমগিলি.কম 30634860 ​​1549
10 194.90.190.41 ওমগিলিবোট / 0.3 ++ ওমগিলি.কম 29070370 1503

আইপি / ব্যবহারকারী-এজেন্ট দ্বারা ঘন্টা দ্বারা শীর্ষে হিট

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
এইচআর ক্লায়েন্ট ব্যবহারকারী-এজেন্ট টোটবাইটে হিট
- ------------- ----------------------------------- ------ ---- --------
10 194.90.190.41 ওমগিলিবোট / 0.3 ++ ওমগিলি.কম 1503 29070370
12 66.249.68.47 মজিলা / 5.0 + (সামঞ্জস্যপূর্ণ; + গুগলবোট / 2.1 1363 13186302

অবশ্যই {ফাইলের নাম আইআইএস লগফাইলে যেমন একটি পথ হতে পারে

c:\working\sologs\u_ex090708.log

আমি ভাল আইআইএস লোগপার্সার ক্যোয়ারীর জন্য প্রচুর ওয়েব অনুসন্ধান করেছি এবং মূল্যবান কিছু খুঁজে পেয়েছি। উপরে এই 5, গুরুতর সমস্যা ক্লায়েন্টদের সনাক্ত করতে আমাদের প্রচুর পরিমাণে সহায়তা করেছে। তবে আমি ভাবছি - আমরা কী মিস করছি?

আইআইএস লগগুলিকে (বিশেষত লোগপার্সার ক্যোয়ারী সহ ) আইটিআইএস লগগুলি টুকরো টুকরো করে কাটানোর জন্য অন্যান্য কোন উপায় রয়েছে যা তাদের পরিসংখ্যানগত অসংগতির জন্য কাটাতে পারে? আপনি আপনার সার্ভারগুলিতে চালিত কোনও ভাল আইআইএস লোগপার্সার ক্যোয়ারী রয়েছে?



শীর্ষস্থানীয় ব্যান্ডউইথ ব্যবহারের ক্যোয়ারিতে DISTINCT কীওয়ার্ড রয়েছে। এটা কি জন্য ভাল?
জাকুব Šturc

উত্তর:


19

হ্যাকিং ক্রিয়াকলাপ বা অন্যান্য আক্রমণগুলির জন্য একটি ভাল সূচক হ'ল প্রতি ঘন্টা প্রতি ত্রুটির সংখ্যা। নিম্নলিখিত স্ক্রিপ্টটিতে 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

ফলাফল এরকম কিছু হতে পারে:

তারিখ আওয়ারের স্থিতি ত্রুটি
---------- -------- ------ ------
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
...

পরবর্তী ক্যোয়ারী একটি আইপি ঠিকানা থেকে একক ইউআরএলগুলিতে অস্বাভাবিক পরিমাণে হিটগুলি সনাক্ত করে । এই উদাহরণে আমি 500 টি বেছে নিয়েছি, তবে আপনাকে প্রান্তের মামলার জন্য ক্যোয়ারী পরিবর্তন করতে হতে পারে (উদাহরণস্বরূপ গুগল লন্ডনের আইপি ঠিকানা বাদ দিয়ে ;-)।)

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
তারিখ ইউআরএল আইপিএড্রেস হিট
---------- ------------------------------------ ----- ---------- ----
2009-07-24 / লগিন.এএসপিএক্স 111.222.111.222 1889
২০০৯-০7-২০১৮ / অ্যাকাউন্ট অ্যাকাউন্টআপডেট.অ্যাসপেক্স 11.22.33.44 973 .4
2009-07-19 / লগিন.এএসপিএক্স 123.231.132.123 821
2009-07-21 / অ্যাডমিন.এএসপিএক্স 44.55.66.77 571
...

দ্বিতীয় ক্যোয়ারী, আমরা ইতিমধ্যে করেছি - বেশ কয়েকটি প্রশ্নের মধ্যে গ্রুপিং নোট করুন। আইপি এবং ব্যবহারকারী এজেন্ট দ্বারা, এটি উভয় বিশ্বের সেরা, যেহেতু যদি ব্যবহারকারী এজেন্ট নাল হয়, তবে এটি আইপি হিসাবে একই, এবং যদি না হয়, তবে এটি আরও তথ্য।
জেফ আতউড

ঠিক আছে জেফ, ব্যবহারকারী-এজেন্ট যুক্ত করে বোঝা যায়। দুঃখিত, খারাপ স্বল্প সময়ের স্মৃতি এবং মনোযোগ ঘাটতি ডিসঅর্ডারের সংমিশ্রণ। :-)
স্প্ল্যাটনে

প্রতিস্থাপন havingএকটি সঙ্গে Limit nএকটি ভালো উপায় জন্য সুর প্রথম ক্যোয়ারী করা হতে পারে
বিসিএস

6

বৈধ ট্র্যাফিক ফিল্টার আউট করার জন্য আপনি যে জিনিসটি বিবেচনা করতে পারেন (এবং আপনার ক্ষেত্রকে প্রশস্ত করুন) তা হ'ল cs(Cookie)আপনার আইআইএস লগগুলিতে সক্ষম হওয়া, জাভাস্ক্রিপ্ট ব্যবহার করে একটি ছোট্ট কুকি সেট করে এমন একটি বিট কোড যুক্ত করা এবং যুক্ত করা WHERE cs(Cookie)=''

আপনার সামান্য বিট কোডের কারণে, প্রতিটি ব্যবহারকারীর হাতে একটি কুকি থাকা উচিত যদি না তারা ম্যানুয়ালি কুকিজ অক্ষম করে (যা কিছু লোকেরা করতে পারে) অথবা ব্যবহারকারী যদি না এমন বট না হয় যা জাভাস্ক্রিপ্ট সমর্থন করে না (উদাহরণস্বরূপ, উইজেট, httpclient , ইত্যাদি জাভাস্ক্রিপ্ট সমর্থন করে না)।

আমি সন্দেহ করি যে যদি কোনও ব্যবহারকারীর উচ্চমাত্রার ক্রিয়াকলাপ থাকে তবে তারা কুকিজ গ্রহণ করে এবং জাভাস্ক্রিপ্ট সক্ষম করেছে, তবে তারা বৈধ ব্যবহারকারী হওয়ার সম্ভাবনা বেশি থাকে, আপনি যদি উচ্চ ক্রিয়াকলাপের একটি ব্যবহারকারী খুঁজে পান তবে কোনও কুকি / জাভাস্ক্রিপ্ট সমর্থন নেই , তাদের বট হওয়ার সম্ভাবনা বেশি।


6

দুঃখিত, এখনও মন্তব্য করতে পারে না তাই আমি জবাব দিতে বাধ্য হলাম।

'ইউআরএল দ্বারা শীর্ষস্থানীয় ব্যান্ডউইথ ব্যবহার' ক্যোয়ারী সহ একটি ছোটখাটো বাগ রয়েছে। আপনি বেশিরভাগ সময় কোনও পৃষ্ঠার জন্য আপনার অনুরোধগুলি গ্রহণ করা এবং ফাইলের আকার দ্বারা গুণমান ঠিক করবেন, এই ক্ষেত্রে, যেহেতু আপনি কোনও প্রশ্নের প্যারামিটারগুলিতে মনোযোগ দিচ্ছেন না, তাই আপনি কিছুটা সামান্য কিছুতে যেতে যাচ্ছেন - প্রতিটি ভুল নম্বর।

আরও সঠিক মানের জন্য, কেবল সার্ভডবাইটস হিসাবে MUL (হিটস, অ্যাভিজিবিটস) এর পরিবর্তে একটি সুম (স্কিট -বাইটস) করুন ।


6


4

আপনি আপনার দীর্ঘতম অনুরোধগুলি (কান্ড এবং / বা কোয়েরি) এবং সার্ভারের দ্বারা প্রাপ্ত বেশিরভাগ বাইট সহ সন্ধান করতে পারেন। আমি পেয়েছি এমন একটিও চেষ্টা করেছি যা প্রাপ্ত বাইট এবং আইপি অনুসারে গ্রুপ করে দেয়, যাতে আপনি দেখতে পারেন যে কোনও নির্দিষ্ট অনুরোধের ফর্ম্যাটটি সম্ভবত একটি আইপি দ্বারা পুনরাবৃত্তি হয়েছে কিনা।

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

আমি দিনের এক ঘন্টা এবং মিনিটের জন্য আইপি অনুরোধের গোষ্ঠীর জন্য হিটগুলিও গণনা করতাম, বা স্ক্রিপ্টগুলি হতে পারে এমন কোনও নিয়মিত পুনরাবৃত্তি পরিদর্শন আছে কিনা তা সন্ধানের জন্য ঘন্টাটির মিনিটের সাথে অনুরোধ করা আইপি গ্রুপ করে ফেলব। এটি হিট বাই আওয়ার স্ক্রিপ্টে একটি ছোট্ট পরিবর্তন হবে।

কোনো অ-প্রোগ্রামিং সাইটগুলিতে, আপনার লগ অনুসন্ধানের জন্য SQL কীওয়ার্ড জন্য একটি ভাল ধারণা, ভালো জিনিস হয় SELECT, UPDATE, DROP, DELETEমত এবং অন্যান্য oddities FROM sys.tablesএকসঙ্গে এবং আইপি দ্বারা গণনা, oring কুশলী মনে হবে। এগুলি সহ বেশিরভাগ সাইটের ক্ষেত্রে, শব্দগুলি খুব কমই যদি ইউআরআইয়ের কোয়েরি অংশে উপস্থিত হয় তবে এখানে তারা বৈধভাবে ইউআরআই স্টেম এবং ডেটা অংশগুলিতে উপস্থিত হতে পারে। আমি প্রিমেড স্ক্রিপ্টগুলি কে চালাচ্ছি তা দেখার জন্য যে কোনও হিটের আইপিগুলি উল্টানো পছন্দ করি। আমি দেখতে ঝোঁক .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

পিএস আমি যাচাই করতে পারি না যে এই প্রশ্নগুলি আসলে সঠিকভাবে চলবে। যদি তাদের ফিক্সিংয়ের প্রয়োজন হয় তবে নির্দ্বিধায় এগুলি সম্পাদনা করুন।


3

এগুলি এখানে এখানে পাওয়া গেল (যা আপনার আইআইএস লগফাইসগুলি বিটিডব্লু করার জন্য একটি দুর্দান্ত গাইড):

আপনার ওয়েবসাইটে 20 টি নতুন ফাইল

লগপার্সার -i: এফএস "শীর্ষ 20 পথ নির্বাচন করুন, সি থেকে ক্রিয়েশনটাইম: \ ইনপটপ \ wwwroot *। * ক্রিয়েশনটাইম ডিইএসসি অর্ডার" -আরটিপি: -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 অতি সম্প্রতি সংশোধিত ফাইল

লগপার্সার -i: এফএস "শীর্ষ 20 পথ নির্বাচন করুন, সি থেকে লাস্ট রাইটটাইম: \ ইনপটপ \ wwwroot *। * লাস্ট রাইটটাইম 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 টি স্ট্যাটাস কোডের ফলস্বরূপ ফাইলগুলি (ট্রোজান মোছার ক্ষেত্রে)

লগ পার্সার "নির্বাচন করুন নির্বাচন করুন_আমি-স্টেম) হিসাবে ইউআরএল, গণনা ( ) হিসাবে হিট হিসাবে প্রাক্তন। লোগো যেখানে ইউএসএল দ্বারা অর্ডার দ্বারা 200 গ্রুপ" -rtp: -1

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

একই পৃষ্ঠাতে একই দিনে হিট এমন কোনও আইপি ঠিকানা দেখান যা একই দিনে 50 বারের বেশি হয়

লগপার্সার "সিলেক্ট ডিসটিন্টের তারিখ, সিসি-ইউরি-স্টেম, সি-আইপি, গণনা ( ) হিসাবে হিট হিসাবে প্রাক্তন। লগ গ্রুপের মাধ্যমে তারিখ, সি-আইপি, সিসি-ইউরি-স্টেম হিট হিট> 50 টি অর্ডার হিট ডেস্ক" -আরটিপি: -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

আমি এগুলি দেখেছি এবং তাদের বিশেষভাবে সহায়ক মনে করি না। তারা বেশিরভাগই "আপসটি সন্ধান করুন" এবং এটি সত্যই আমাদের লক্ষ্য নয় (আমাদের সাথে কোনও আপস করা হয়নি)
জেফ

0

লগ-পার্সার দিয়ে এটি কীভাবে করা যায় তা আমি জানি না তবে "পিএইচপিএমআইএডমিন" (বা অন্যান্য সাধারণ ভুনারব্লটিস) এর মতো জিনিসের জন্য অনুরোধগুলির স্ট্রিংগুলি খুঁজছি যা 404 গুলি স্ক্রিপ্টেড আক্রমণ সনাক্ত করার জন্য ভাল উপায় হতে পারে।


লক্ষ্যটি সেই ধরণের স্ক্রিপ্টেড আক্রমণগুলি খুঁজে পাওয়া নয়, তবে ব্যান্ডউইথ এবং ট্র্যাফিক সম্পর্কিত বেআইনী / সমস্যার ক্লায়েন্ট।
জেফ অ্যাটউড

2
আমি যে ক্লায়েন্ট আমাকে আঘাত করার চেষ্টা করছে তা সমস্যা ক্লায়েন্ট এবং আমি আমার ব্যান্ডউইথটি তাদের ব্যবহার না করে বলব।
বিসিএস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.