কমান্ড লাইন আর্গুমেন্ট সহ সমস্ত কমান্ড কার্যকর করা লগ করার কোনও সহজ উপায় আছে?


11

এটি rrdtoolযে পাথটি পাচ্ছে তা ভুল কিনা তা দেখার জন্য আমি কীভাবে একটি নির্দিষ্ট ইনস্ট্যান্টেশন লগ করব তা সন্ধান করার চেষ্টা করছি ।

আমি জানি যে আমি শেল স্ক্রিপ্টে এক্সিকিউটেবলকে প্যারামিটারগুলিতে লগ করতে পারি, তবে আমি ভাবছিলাম যে এটির জন্য নিরীক্ষণের আরও কোনও কার্নেল-নির্দিষ্ট উপায় ছিল কিনা, সম্ভবত কোনও ফাইল সিস্টেম কলব্যাক যা কোনও নির্দিষ্ট / প্রোক / পিড / এক্সি যখন দেখবে একটি প্রদত্ত বাইনারি মেলে?


auditdকমান্ড-লাইন আর্গুমেন্ট রেকর্ড করার পাশাপাশি প্রোগ্রামটি চালানোর কোনও উপায় আছে কি ? serverfault.com/questions/765179/…
নীল

উত্তর:


16

হ্যাঁ, একটি কার্নেল সুবিধা রয়েছে: নিরীক্ষা সাবসিস্টেম। auditdডেমন লগিং নেই এবং কমান্ড auditctlলগিং নিয়ম স্থাপন করে। আপনি কিছু ফিল্টারিং সহ একটি নির্দিষ্ট সিস্টেমের সমস্ত কলগুলিতে লগ করতে পারেন। আপনি যদি নির্বাহিত সমস্ত কমান্ড এবং তার যুক্তিগুলি লগ করতে চান তবে execveসিস্টেম কলটিতে লগ করুন :

auditctl -a exit,always -S execve

সুনির্দিষ্টভাবে একটি নির্দিষ্ট প্রোগ্রামের অনুরোধটি সনাক্ত করতে, প্রোগ্রামে এক্সিকিউটযোগ্য একটি ফিল্টার যুক্ত করুন:

auditctl -a exit,always -S execve -F path=/usr/bin/rrdtool

লগগুলি প্রদর্শিত হয় /var/log/audit.logবা যেখানেই আপনার বিতরণ তাদের রাখে। অডিট সাবসিস্টেমটি নিয়ন্ত্রণ করতে আপনাকে রুট হওয়া দরকার।

একবার আপনি তদন্ত শেষ হয়ে গেলে, লগিং বিধি মোছার -dপরিবর্তে একই কমান্ড লাইনটি ব্যবহার করুন -aবা auditctl -Dসমস্ত নিরীক্ষার বিধি মোছার জন্য চালান ।

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


কেন -F path=/ust/bin/rrdtool? rrdtoolএমনকি সম্পর্কিত সফ্টওয়্যার কীভাবে হয় তা আমি পাই না ।
গ্রামীণ

@ গ্রেইম প্রশ্নটিতে বর্ণিত সমস্যাটি একটি ডাকে ট্র্যাক করছিল rrdtool। আপনি যদি সমস্ত প্রোগ্রামের আমন্ত্রণগুলি লগ করতে চান তবে -F path=…অংশটি ড্রপ করুন (আপনি অবশ্যই প্রচুর লগ পাবেন)।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

ডান ... প্রশ্নের প্রথম লাইন। ধন্যবাদ।
গ্রামীণ

এটি সব দুর্দান্ত, তবে আমি কীভাবে কনফিগারেশনটিকে প্রাথমিক অবস্থায় পুনরায় সেট করব? অন্যথায় এটি নতুন এবং নতুন প্রবর্তিত কমান্ডগুলির সাহায্যে লগটি পূরণ করা চালিয়ে যাবে ... বা এই auditctlআদেশটি কেবল পুনরায় চালু না হওয়া পর্যন্ত কার্যকর?
রুসলান

@ রুসালান কেবল auditctlপুনরায় চালু হওয়ার আগে পর্যন্ত এর প্রভাবটি টিকে আছে, তবে এটি একটি ভাল বিষয়, আমি আমার উত্তরে পুনরায় ছাড়াই এগুলি অপসারণের জন্য নির্দেশাবলী যুক্ত করেছি।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন' 25:25

6

আপনি স্নোপি ব্যবহার করতে পারেন ।

স্নুপি আরও হালকা ওজনের সমাধান কারণ এটি কার্নেলের সহযোগিতার প্রয়োজন হয় না। যা যা প্রয়োজন তা হ'ল ডায়নামিক লোডার (ডিএল) যা স্নোপি গ্রন্থাগারটি প্রিললোড করে, যে পথে নির্দিষ্ট করা আছে /etc/ld.so.preload

প্রকাশ: আমি বর্তমান স্নোপি রক্ষণাবেক্ষণকারী।


কেবলমাত্র কোনও নির্দিষ্ট শেল থেকে সরাসরি বা অপ্রত্যক্ষভাবে কমান্ডের জন্য লগিং করা সম্ভব?
আরভি

আমি নিশ্চিত না যে আমি আপনার প্রশ্নটি বুঝতে পেরেছি - আপনার অর্থ কি "শেল" নির্দিষ্ট প্রোগ্রাম হিসাবে ব্যবহৃত যা শেল (ব্যাশ, ড্যাশ, জেডএস ইত্যাদি) হিসাবে ব্যবহৃত হয়, বা আপনার অর্থ আপনি কেবল নির্দিষ্ট পিটিওয়াই লগ করতে চান? স্নুপি ফিল্টারিং কাঠামো সরবরাহ করে তবে বর্তমানে কেবলমাত্র কয়েকটি প্রাথমিক ফিল্টার প্রয়োগ করা হয়, এখানে তালিকার জন্য দেখুন: লিঙ্ক । আপনার যদি কোনও কংক্রিট ইউজকেস থাকে যা অন্যের জন্য প্রযোজ্য হতে পারে তবে দয়া করে বৈশিষ্ট্য অনুরোধে ব্যাখ্যা করুন এবং ওহ,
বিটিডাব্লু

আমি কেবল একটি নির্দিষ্ট পিটিওয়াই বোঝাতে চাইছি।
আরভি

পিটিওয়াই উপলব্ধ এটিএমের জন্য কোনও নির্দিষ্ট ফিল্টার নেই। যাইহোক, আপনি পিটিওয়াই ইভেন্টটি যা ঘটেছে তা সহ সমস্ত কিছুতে লগ করার জন্য স্নোপি ব্যবহার করতে পারেন এবং তারপরে আপনার সিলেগ ডেমনগুলিতে ফিল্টারিং করতে পারেন। আপনি কোনটি ব্যবহার করছেন তা আমি জানি না, তবে সিস্লগ-এনজি (উদাহরণস্বরূপ) রিজেক্স ম্যাচিং, ইতিবাচক বা নেতিবাচক করতে পারে।
বোস্টজান স্কুফকা

অবশ্যই ধন্যবাদ! সরঞ্জাম এবং পদ্ধতির সাধারণভাবে বেশ কার্যকর। আমার যা প্রয়োজন তা পেতে আমি সহজেই কিছু ফিল্টারিং করতে পারি।
আরভি

2

লিনাক্স কার্নেল "অডিট" সাবসিস্টেম আপনার যা প্রয়োজন তা করতে পারে।

যেমন আপনি যদি এই আদেশগুলি চালনা করেন:

auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve

তারপরে প্রতিটি সম্পাদন ইভেন্ট লগ হয় এবং তার চারপাশে প্রচুর তথ্য সরবরাহ করা হয়

যেমন এটি আমার চলমান আউটপুট tail /var/log/audit/audit.log

exit=0 a0=7f0e4a21e987 a1=7f0e4a21e6b0 a2=7f0e4a21e808 a3=8 items=2 ppid=906 pid=928 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="tail" exe="/usr/bin/tail" subj=kernel key=(null)
type=EXECVE msg=audit(1543671660.203:64): argc=2 a0="tail" a1="/var/log/audit/audit.log"
type=CWD msg=audit(1543671660.203:64):  cwd="/home/sweh"
type=PATH msg=audit(1543671660.203:64): item=0 name="/usr/bin/tail" inode=266003 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1543671660.203:64): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=273793 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PROCTITLE msg=audit(1543671660.203:64): proctitle=7461696C002F7661722F6C6F672F61756469742F61756469742E6C6F67

কিছু আকর্ষণীয় মান আছে যা দেখা যায়; উদাহরণস্বরূপ "auid" 500, যা আমার লগইন আইডি, যদিও "uid" শূন্য হয় ('আমি এর অধীনে চলেছি su)। সুতরাং যদিও ব্যবহারকারীর সাথে অ্যাকাউন্টগুলি স্যুইচ করা থাকতে পারে suবা sudoআমরা এখনও তাদের "অডিট আইডি" এ ফিরে যেতে পারি

এখন এই auditctlকমান্ডগুলি পুনরায় বুটে যাবে। আপনি এগুলি একটি কনফিগারেশন ফাইলে রাখতে পারেন (উদাহরণস্বরূপ /etc/audit/rules.d/ডিরেক্টরিতে, CentOS 7 এ)। সঠিক অবস্থানটি আপনার ওএস সংস্করণের উপর নির্ভর করবে। auditctlম্যানুয়েল পৃষ্ঠা এখানে সাহায্য করা উচিত।

সাবধান, যদিও ... এর ফলে প্রচুর লগ বার্তা উত্পন্ন হবে। আপনার ডিস্কে পর্যাপ্ত জায়গা রয়েছে তা নিশ্চিত করুন!

প্রয়োজনে নিয়মগুলি নির্দিষ্ট ব্যবহারকারী বা নির্দিষ্ট কমান্ডের মধ্যে সীমাবদ্ধ থাকতে পারে।

এবং সাবধান; কোনও ব্যবহারকারী যদি আদেশটি প্রয়োগের ক্ষেত্রে পাসওয়ার্ড রাখে (উদাঃ mysql --user=username --password=passwd) তবে এটি লগ হবে।

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