ঘন ঘন আইপি এর জন্য লগ ফাইলগুলি পার্সিং করা


12

সুতরাং, আমি লগ থেকে দুষ্টু আইপস টানতে ডিডিওএস আক্রমণ করার সময় একসাথে এটি হ্যাক করেছি। এটিকে আরও উন্নত করার জন্য কারও কোনও উন্নতি বা অন্যান্য পরামর্শ রয়েছে?

সাধারণ ধারণাটি এখানে:

  1. আইপি এর লগ ফাইল থেকে আউট টান
  2. তাদের বাছাই
  3. ইউনিক এবং তাদের গণনা
  4. আবার তাদের বাছাই

এবং স্ট্রিং ওপাইপস:
cut --delim " " -f7 /var/log/apache_access | sort | uniq -c | sort -rn > sorted-ips.txt


এটি নিশ্চিত নয় যে এটি ওয়েবমাস্টারগুলিতে আরও ভাল জিজ্ঞাসা করা হবে ... তবে যেহেতু এটি সবগুলি ইউনিক্স ব্যবহারগুলি এবং কমান্ড লাইনটি ব্যবহার করেছে ... আমি এখানে অনুভব করেছি যে এটি আরও উপযুক্ত হবে।
গ্যাবে

এখানে ভাল মনে হচ্ছে। এটি ইউনিক্স ভিত্তিক, এবং ওয়েব
স্টাফগুলির সাথে

উত্তর:


7

আমি সর্বদা এটি ব্যবহার করেছি:

tail -1000 /var/log/apache_access | awk '{print $1}' | sort -nk1 | uniq -c | sort -nk1

সঙ্গে tailআমি কতদূর ফিরে আমি সত্যিই যেতে চাই সীমা সেট করতে সক্ষম নয় নই - ভাল যদি আপনি (কারনের জন্য) লগ ঘোরান ব্যবহার করবেন না, দ্বিতীয় আমি ব্যবহার তৈরি করছি awk- যেহেতু সবচেয়ে লগ স্থান আমি সীমায়িত হয় ' যথাযথ $ভেরিয়েবল যুক্ত করে অতিরিক্ত তথ্য (সম্ভবত তারা কোন ইউআরএল, স্ট্যাটাস, ব্রাউজার ইত্যাদিতে হিট করছে) বের করার দক্ষতায় আমার আত্মত্যাগ করেছে । শেষ পর্যন্ত uniqএটির একটি ত্রুটি কেবল জোড়া ছোঁয়ায় কাজ করে - আইই:

A
A
A
A
B
A
A

উত্পাদন করবে:

4 A
1 B
2 A

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


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

-k1অপ্রয়োজনীয়, (1) কেবল একটি কী (2) sortপ্রথম শব্দটিকে যেভাবেই কী হিসাবে ব্যবহার করা শুরু করে।
লেকেনস্টেইন

7

মনে হচ্ছে আপনি ব্যর্থ 2 চাকা পুনরুদ্ধার করার মাঝখানে রয়েছেন ।

ব্যর্থ 2ban একটি চেহারা দিন। এটি সম্ভবত আপনি ইতিমধ্যে যা চান তা করে এবং যদি না হয় তবে এটি কাস্টমাইজ করা সহজ।


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

এটি সত্যিই দুর্দান্ত দেখায়, এবং জিপিএলও।
এলি ফ্রে

7

মার্কো Ceppi সম্পর্কে সঠিক awkএই জন্য একটি ভাল টুল হচ্ছে কিন্তু awk এছাড়াও চেয়ে ভাল টুল sortএবং uniqযেহেতু যে যুক্তি করার জন্য সরানো যাবে না awk। আপনি যদি কেবল 1000 লাইনগুলি টেলিং করছেন তবে এটি কোনও তাত্পর্যপূর্ণ করবে না তবে আপনি যদি একটি বিশাল মাল্টি জিগ লগ ফাইলটি দেখতে চান তবে এটি আরও দ্রুতগতিতে স্থানান্তরিত করতে দ্রুততরতার আদেশ হতে পারে awk

cat /var/log/apache_access | awk '{freq[$1]++} END {for (x in freq) {print freq[x], x}}' | sort -nআপনার যা প্রয়োজন তা করবে কিন্তু বড় ফাইলগুলির জন্য খুব দ্রুত। এটি আইপি ঠিকানায় কী হিসাবে আইপি ঠিকানা ব্যবহার করে এবং আইপিগুলি যতবার মান হিসাবে সংঘটিত হয় তার সংখ্যাটি ব্যবহার করে এটি আইপি-র একটি অ্যারে তৈরি করে k

চূড়ান্ততাটি আসে কারণ চূড়ান্ত আউটপুটটি বাছাই করা ছাড়া ডাবলু একটি ডেটা অতিক্রম করে এবং বেশিরভাগ কাজ করে। অন্য পদ্ধতিটি ব্যবহার করে, যদি আপনার ট্রান্সফার লগটিতে ১,০০,০০০ লাইন থাকে, awk সেই ১,০০,০০০ লাইনগুলিকে ১,০০,০০০ আইপি ছিটিয়ে দেয়, তবে সাজান পুরো ১,০০,০০০ আইপি ছাড়িয়ে যায়, এখন সাজানো ১,০০,০০০ আইপি ইউনিককে প্রেরণ করে যা একে একে আরও কমিয়ে আনে বাছাই করার আগে তথ্য পরিমাণ। 1,000,000 আইপিতে একাধিক পাসের চারপাশে পাইপিং / না করার পরিবর্তে, awk এক পাসে প্রায় সবকিছু করে।

আমার ল্যাপটপে একটি 5,513,132 লাইন অ্যাপাচি লগ (1.1 জিগস) ব্যবহার করা হচ্ছে, এখানে একটি গতির তুলনা করা হয়েছে:

  • 2 মি 45s cat ./apache_access | awk '{print $1}' | sort -nk1 | uniq -c | sort -nk1
  • 0 মি 40 cat ./apache_access | awk '{freq[$1]++} END {for (x in freq) {print freq[x], x}}' | sort -n

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