Iptables জন্য ডিবাগার


47

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

ইপিটেবলের জন্য ওয়্যারশার্কের মতো কিছু। অথবা এমনকি কোনও প্রোগ্রামিং ভাষার জন্য কোনও ডিবাগারের অনুরূপ কিছু something

ধন্যবাদ ক্রিস

দ্রষ্টব্য: এটি কোনও অভিনব জিইআইআই সরঞ্জাম হতে হবে না। তবে এটি কেবল প্যাকেজ কাউন্টার বা আরও কিছু প্রদর্শন করার চেয়ে আরও বেশি কিছু করতে হবে।

আপডেট: এটি প্রায় দেখে মনে হচ্ছে যেন আমরা অনুরোধ করা কার্যকারিতা সরবরাহ করে এমন কোনও কিছুই পাই না। যে ক্ষেত্রে: আসুন অন্তত একটি ভাল পন্থা যা লগ-ইন iptables- র উপর ভিত্তি করে খুঁজে - যা সহজে এবং বন্ধ পরিণত করা যাবে, এবং লেখার iptables- র নিয়ম redundantly প্রয়োজন হয় না (জন্য একই নিয়ম লিখতে থাকার -j LOGএবং -j ...)

উত্তর:


10

আমি সরাসরি সমাধানের কথা ভাবতে পারি না, তবে প্যাকেট ট্র্যাক করার উপায় সম্পর্কে আমি একটি রাউন্ড সম্পর্কে ভাবতে পারি।

  1. লগ উপসর্গ নির্দেশের সাথে প্রতিটি নিয়ম লগ করুন (--log-উপসর্গ "বিধি 34")
  2. স্ক্যাপি সহ একটি পরীক্ষার প্যাকেট বা প্যাকেট স্ট্রিম তৈরি করুন এবং টিওএস ফিল্ডটিকে অনন্য কিছুতে সেট করুন
  3. এই টিওএস সেটিংটির জন্য লগ ফাইল আউটপুট গ্রেপ করুন এবং দেখুন যে কোনও নিয়ম এটি লগ করেছে।

ধারণার জন্য ধন্যবাদ। দুর্ভাগ্যবশত, আমি যে নিয়ম লগ ইন করতে পারেন না (একটি সিস্টেম উপর, ডিস্ক সম্ভবত না ফাস্ট যে কাজ করতে যথেষ্ট হবে অন্য তারিখে, iptables লগিং কার্নেলের মধ্যে উপলব্ধ নয়।।)
ক্রিস Lercher

1
সফটপ্যানোরামা.অর্গ / লোগস / সিসলগ / পাইপ_ইনস্লস.লগ হিসাবে ফাইল হিসাবে একটি নামক পাইপ ব্যবহার করুন তবে যেহেতু আপনি আপনার কার্নেলটিতে লগইন করতে পারবেন না আপনি কিন্ড এসএল
হাকন

ধন্যবাদ, এটি সম্ভবত আমার সমস্যার সমাধান করবে না, তবে এটি জেনে রাখা সাধারণত ভাল লাগে যে পাইপিং সিসলগ সম্ভব হতে পারে - অন্য কোনও সময়ে কাজে আসতে পারে!
ক্রিস লেরচার

লগিং সম্পর্কিত একটি সম্পর্কিত প্রশ্ন: iptables কি একযোগে একাধিক প্যাকেট পরিচালনা করে (যাতে লগ এন্ট্রিগুলি আন্তঃলিখন করা যায়)? সেক্ষেত্রে, আমি মনে করি টিওএস ধারণাটি প্রচুর iptables LOG বিশ্লেষণের জন্য নিখুঁতভাবে আবশ্যক!
ক্রিস Lercher

আমি তার উত্তর জানি না। আমি আশা করি যে প্রতিটি ইন্টারফেস যদিও কমপক্ষে আইপটবেবলগুলি একযোগে পরিচালনা করা হবে।
হাকন

82

আপনার কাছে সাম্প্রতিক পর্যায়ে যথেষ্ট কার্নেল এবং iptables এর সংস্করণ থাকলে আপনি ট্র্যাক লক্ষ্য ব্যবহার করতে পারেন (কমপক্ষে ডেবিয়ান 5.0 এ অন্তর্নির্মিত বলে মনে হচ্ছে)। আপনার ট্রেসের শর্তগুলি যথাসম্ভব সুনির্দিষ্ট করে সেট করতে হবে এবং আপনি ডিবাগিং না করার সময় কোনও ট্র্যাকের নিয়মকে অক্ষম করতে হবে কারণ এটি লগগুলিতে প্রচুর তথ্য দেয় spe

ট্র্যাক
এই লক্ষ্যটি প্যাকগুলি চিহ্নিত করে যাতে কর্নেলটি প্রতিটি বিধি লগ করবে যা প্যাকেটগুলির সাথে মেলে যেমন সারণী, শৃঙ্খলা, নিয়মগুলি অতিক্রম করে। (লগিংয়ের জন্য ipt_LOG বা ip6t_LOG মডিউলটি প্রয়োজনীয়) কোনও ব্যবহারকারী নির্ধারিত চেইন এবং বিল্ট ইন চেইনের নীতির জন্য "নীতি" শেষে। এটি কেবল কাঁচা টেবিল ব্যবহার করা যেতে পারে।

আপনি যদি এই জাতীয় নিয়ম যোগ করেন

iptables -t raw -A PREROUTING -p tcp --destination 192.168.0.0/24 --dport 80 -j TRACE
iptables -t raw -A OUTPUT -p tcp --destination 192.168.0.0/24 --dport 80 -j TRACE

আপনাকে এরকম দেখায় এমন আউটপুট সরবরাহ করা হবে।

# cat /var/log/kern.log | grep 'TRACE:'
Mar 24 22:41:52 enterprise kernel: [885386.325658] TRACE: raw:PREROUTING:policy:2 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.12.152 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=80 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325689] TRACE: mangle:PREROUTING:policy:1 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.12.152 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=80 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325713] TRACE: nat:PREROUTING:rule:1 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.12.152 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=80 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325731] TRACE: nat:nat.1:rule:1 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.12.152 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=80 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325731] TRACE: mangle:INPUT:policy:1 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.32.10 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=3128 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325731] TRACE: filter:INPUT:rule:2 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.32.10 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=3128 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325731] TRACE: filter:in_world:rule:1 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.32.10 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=3128 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325731] TRACE: filter:in_world_all_c1:return:2 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.32.10 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=3128 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325731] TRACE: filter:in_world:rule:2 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.32.10 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=3128 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)
Mar 24 22:41:52 enterprise kernel: [885386.325731] TRACE: filter:in_world_irc_c2:return:2 IN=eth0 OUT= MAC=00:1d:7d:aa:e3:4e:00:04:4b:05:b4:dc:08:00 SRC=192.168.32.18 DST=192.168.32.10 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=30561 DF PROTO=TCP SPT=53054 DPT=3128 SEQ=3653700382 ACK=0 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405B40103030201010402)

8
ধন্যবাদ, এটি দুর্দান্ত! এটি আসলে সেরা উত্তর, আমি আশা করি আমি এটি গ্রহণ করতে পারি (এটি একটি অনুগ্রহমূলক প্রশ্ন ছিল, সুতরাং গৃহীত উত্তরটি সুনির্দিষ্ট)। যদিও আমি এটি আমার সমস্ত সিস্টেমে (কার্নেলের সীমাবদ্ধতার কারণে) ব্যবহার করতে পারি না, এমন কিছু সিস্টেমেও। এই উত্তরটি অগ্রগতির দাবিদার, কারণ আমি যা খুঁজছিলাম তা এটি সত্যই কাছে।
ক্রিস Lerher

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

এটি iptables মধ্যে প্যাকেটগুলি ট্রেস করার জন্য সত্যই জবাব। এটি খুব খারাপ যে কিছু সাম্প্রতিক কার্নেলগুলি এটি ডিফল্টরূপে সক্ষম করে না।
পিটার গ্রেস

কতক্ষণ আগে কার্নেল ট্র্যাক সমর্থন করে? আমি CentOS 6.4 এ সাফল্যের সাথে ব্যবহার করেছি তবে CentOS 6.2 এ নেই
সেবেলক

6

একটি পোস্টে তিনটি উত্তর:

1) স্ক্রিপ্ট দ্বারা ডিবাগ:

#!/bin/bash
debug() {
    if [ -n "$debug" ]; then
        $@ || echo -e "The command which launched the error:\n$@"
    else
        $@
    fi
}
debug=1
IPTABLES="debug /sbin/iptables"

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
....

2) সিস্লোগ দ্বারা ডিবাগ

এই ওয়েবসাইট থেকে: http://www.brandonhutchinson.com/iptables_fw.html

If you want to make a syslog entry of dropped packets, change:

# Drop all other traffic
/sbin/iptables -A INPUT -j DROP

To:

# Create a LOGDROP chain to log and drop packets
/sbin/iptables -N LOGDROP
/sbin/iptables -A LOGDROP -j LOG
/sbin/iptables -A LOGDROP -j DROP

# Drop all other traffic
/sbin/iptables -A INPUT -j LOGDROP


You may also want to configure the --log-level to log dropped packets to a separate file instead of /var/log/messages:

# Drop all other traffic
/sbin/iptables -A INPUT -j LOGDROP --log-level debug


/etc/syslog.conf change:

# Send iptables LOGDROPs to /var/log/iptables
kern.=debug                                             /var/log/iptables

Reload the syslogd service for the change to take effect.
/sbin/service syslog reload

3) কোনও ডিবাগ নেই, সুন্দর iptables সম্পাদনা:

এছাড়াও এটি সহায়ক হতে পারে: http://www.fwbuilder.org/


1
ধন্যবাদ। পয়েন্ট 1) এবং 3) iptables নিয়মগুলির মাধ্যমে নিম্নলিখিত প্যাকেটগুলির সাথে খুব বেশি কিছু করার নেই, তবে "--log-স্তর" এর উপর ভিত্তি করে লগ এন্ট্রিগুলি পুনঃনির্দেশ করার বিষয়টিটি সহায়ক হতে পারে, যদি অবশেষে আমাকে সত্যিই ফিরে যেতে হয় লগিং (যদি অন্য কোনও সমাধান না হয় তবে)।
ক্রিস Lerher

2

একই প্রশ্ন ছিল এবং জোরডাচি ট্র্যাক / আইপিটি_এলজি ইঙ্গিত করার সমাধান ছিল!

অতিরিক্তভাবে আমি একটি স্ক্রিপ্ট পেয়েছি যা বর্তমানে সক্রিয় iptables সমস্ত নিয়মের আগের LOG- বিধি সন্নিবেশ / মুছে ফেলে। আমি এটি চেষ্টা করে দেখতে পেলাম যে এটি একটি দুর্দান্ত সরঞ্জাম। - আউটপুট ট্র্যাক সমাধানের সাথে সমান - সুবিধা: এটি সক্রিয় iptables কনফিগারেশনে কাজ করে, এটি যেখানেই বোঝানো হয়েছিল তা বিবেচনা করে না। আপনি ফ্লাইতে লগিং চালু / বন্ধ করতে পারেন! আপনার কোনও ফায়ারওয়াল-স্ক্রিপ্টগুলি সংশোধন করার দরকার নেই যা ফায়ারওয়াল নির্মাতা বা সরঞ্জাম যা ব্যবহার করুন তা তৈরি করেছেন ... - অসুবিধা: কোনও পরিবর্তন ছাড়াই, স্ক্রিপ্টটি সমস্ত সক্রিয় নিয়মের জন্য লগ-বিধি তৈরি করে। পরিবর্তে, ট্র্যাকের বিধিগুলি ব্যবহার করার সময়, আপনি সম্ভবত ঠিকানা / পরিষেবা / সংযোগগুলিতে লগিংকে সীমাবদ্ধ করবেন যার জন্য আপনি এখন iptables প্রসেসিং তদন্ত করতে চান।

যাইহোক, আমি এপ্রোচ পছন্দ করি: টনি ক্লেটন থেকে কুডোস, একবার দেখুন: http://lists.netfilter.org/pipermail/netfilter/2003- মার্চ/043088.html

শুভেচ্ছা, ক্রিস


0

আমি নিয়মগুলি কীভাবে কাজ করে তা দেখতে এবং কী অনুপস্থিত বা ভুল তা খুঁজে পেতে সাধারণত প্যাকেট এবং বাইটস কাউন্টার ব্যবহার করি।

আপনি এগুলি "iptables -nvL" দ্বারা দেখতে পারেন।


2
আমি দেখতে পাচ্ছি যে লেখক কী চান; যদি আপনি ব্যস্ত ইন্টারফেসে আপনার আইপেটেবল বিধিগুলি পরীক্ষা করার চেষ্টা করছেন তবে কেবল কাউন্টারগুলি দেখা পুরোপুরি সাহায্য করবে না বিশেষত যদি প্যাকেটটি বেশ কয়েকটি নিয়মের সাথে মেলে এবং প্রক্রিয়াটিতে ব্যবহারকারী-সংজ্ঞায়িত চেইনগুলির চারপাশে ঝাঁপিয়ে পড়ে থাকে (যেমনটি সাধারণত যখন সাধারণ হয়) অযাচিত আইপি ঠিকানাগুলি এবং বন্যা সুরক্ষা বিধিগুলি ফিল্টার করে।
পিপি

@ পিপি: হুবহু, আপনি আমার মন পড়ছেন। @ ভিআই: ধন্যবাদ, এটি কিছু পরিস্থিতিতে সহায়ক হতে পারে এবং আমি কখনও কখনও এটি ব্যবহার করেছি। এখন আমার আরও শক্তিশালী কিছু দরকার।
ক্রিস Lerher

-2

আফাইক একটি আইপি প্যাকেট প্রথম ম্যাচ অবধি নিয়ম চেইনকে অতিক্রম করে। সুতরাং আমি এখানে আসলে সমস্যাটি দেখতে পাচ্ছি না। যদি তোমার থাকে:

  1. বিধি 1
  2. বিধি 2
  3. বিধি 3 এলওজি

এবং একটি প্যাকেট এটি লগ এ তোলে, এর অর্থ হ'ল নিয়ম 3 প্রথম মিলের নিয়ম।


সত্য না. প্যাকেট একাধিক নিয়মের সাথে মেলে এবং তারা তা করে। কোনও নিয়মের কোনও ক্রিয়া না থাকলে (যেমন -j DROPবা -j ACCEPT) এটি কেবল আরও শৃঙ্খলে আরও মিলছে।
পিপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.