উত্তর:
ম্যান পৃষ্ঠাতে একবার দেখুন iptables
। এটি এমন একটি লক্ষ্য দেখায় LOG
যা আপনার যা করতে পারে তা করতে পারে।
লগিং স্তরটি LOG
4 এ সেট করুন ।
# DROP everything and Log it
iptables -A INPUT -j LOG --log-level 4
iptables -A INPUT -j DROP
syslog.conf
এই বার্তাগুলি একটি পৃথক ফাইলে লেখার জন্য কনফিগার করুন।
# /etc/syslog.conf
kern.warning /var/log/iptables.log
সিসলগড পুনরায় আরম্ভ করুন।
Debian / Ubuntu-
$ sudo /etc/init.d/sysklogd restart
ফেডোরা / সেন্টওএস / rhel
$ sudo /etc/init.d/syslog restart
দ্রষ্টব্য: লগিংয়ের এই পদ্ধতিটিকে স্থির অগ্রাধিকার বলা হয়। তারা হয় সংখ্যা বা নাম (1,2,3,4, ..) বা (ডিইবিইউজি, ওয়ার্ন, ইনফো) ইত্যাদি।
যদি সুযোগটি ব্যবহার করে থাকেন তবে rsyslog
আপনি এর মতো একটি সম্পত্তি ভিত্তিক ফিল্টার তৈরি করতে পারেন:
# /etc/rsyslog.conf
:msg, contains, "NETFILTER" /var/log/iptables.log
:msg, contains, "NETFILTER" ~
তারপরে আপনার iptables নিয়মে আপনি লগ করতে চান তা যুক্ত করুন:
–log-prefix NETFILTER
বিকল্প হিসাবে আপনি এই ধরণের সম্পত্তি ফিল্টার ব্যবহার করে বার্তাগুলি লগ করতে পারেন:
:msg, startswith, "iptables: " -/var/log/iptables.log
& ~
:msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables: " -/var/log/iptables.log
& ~
দ্রষ্টব্য: এই ২ য় পদ্ধতিতে কোনও পরিবর্তন দরকার নেই iptables
।
/var/log/iptables
এবং এর মধ্যেও থাকবে /var/log/messages
। আমি এই তথ্য থেকে কেবল একটি অনুলিপি চাইiptables.log
এটি ধরে নেয় আপনার ফায়ারওয়াল ইতিমধ্যে লগ তৈরি করেছে, যেমন কোনও বুদ্ধিমান ফায়ারওয়াল উচিত। কিছু উদাহরণের জন্য এটির জন্য একটি সনাক্তকারী বার্তা প্রয়োজন যেমন স্ল্যামের উদাহরণে "নেটফিল্টার"।
rsyslog.d এ একটি ফাইল তৈরি করুন
vim /etc/rsyslog.d/10-firewall.conf
এটি সেন্টোস in-এ কাজ করে I আমি এবং আউট খুঁজে না পেয়ে এটি ফায়ারওয়াল থেকে এসেছিল কিনা তা যাচাই করতে জানি না ... সেন্টোস অদ্ভুত। পরবর্তী সংস্করণটি কাজ না করে এটি ব্যবহার করবেন না।
# into separate file and stop their further processing
if ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
এটি CentOS 7 এ কাজ করে এবং বার্তার সামগ্রীগুলিও পরীক্ষা করে (আপনার-জে LOG নিয়মের বার্তায় যা আছে তার সাথে "শোরওয়াল" প্রতিস্থাপন করুন):
# into separate file and stop their further processing
if ($msg contains 'Shorewall') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
এটি অন্যদের মধ্যে কাজ করে (উবুন্টু, দেবিয়ান, ওপেনসুস)। এবং এটি এটি করার সেরা উপায়। বার্তায় স্ট্রিংগুলির জন্য অনুসন্ধান করা হচ্ছে না:
# into separate file and stop their further processing
if ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then -/var/log/firewall
& ~
এবং এখানে একটি ডিফল্ট ওপেনসুএস মেশিনটি রয়েছে (যা আমি মনে করি প্রতিটি ডিস্ট্রো থাকা উচিত এবং অনুপস্থিত) (পার্থক্যটি "& ~" এর পরিবর্তে কেবল "স্টপ" বলে মনে হয়; সমস্ত সিস্টেম উভয় বাক্য গঠন সমর্থন করে না):
if ($syslogfacility-text == 'kern') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
stop
}
এবং উপরের সমস্তটির জন্য, লোগ্রোটেট.ডি ফাইলটিও ভুলে যাবেন না:
vim /etc/logrotate.d/firewall
ধারণকারী:
/var/log/firewall {
rotate 7
size 500k
postrotate
# before using this, run the command yourself to make sure
# it is right... the daemon name may vary
/usr/bin/killall -HUP rsyslogd
endscript
}