tcpdump ছাড়াই tcp সংযোগ ডাম্প


17

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

তাই আমি ভাবছিলাম যে আমার অন্যান্য বিকল্পগুলি কী। আমি সার্ভারে রুট অ্যাক্সেস আছে।


আপনার কি সার্ভারে রুট অ্যাক্সেস আছে?
ব্যবহারকারী 9517

হ্যাঁ, আমার কাছে রুট অ্যাক্সেস আছে।
ইসহাক

11
আপনার কোম্পানির পলিসি স্থির করার বিষয়েও কাজ করা উচিত। যখন এটি আপনাকে আপনার কাজ করতে বাধা দেয়, নীতিটি নষ্ট হয়ে যায়।
মাইকেল হ্যাম্পটন

1
ঠিক আছে, পরিবর্তনের জন্য এটির মূলত একটি এফডিএ প্রয়োজনীয়তা নিয়ন্ত্রণ করুন - তাই আমি এই জীবনে কিছুই পরিবর্তন করব না :)
আইজ্যাক

উত্তর:


15

নিশ্চয়ই আছে তো python?

from socket import * 
from struct import unpack 
import sys 

INTERFACE = "eth0"
TARGET = "8.8.8.8" 

if __name__ == "__main__": 
  sock = socket(AF_PACKET, SOCK_DGRAM, 0x0800) 
  sock.bind((INTERFACE, 0x0800)) 
  while True: 
    data = sock.recvfrom(1500, 0)[0] 
    ip = inet_ntop(AF_INET, data[12:16]) 
    if ip == TARGET: 
      print "GOT TARGET" 
      sys.exit(1)

এটি "GOT TARGET" দিয়ে ফিরে আসবে আইপি ঠিকানাটি ম্যাচ ফিরে আসবে। যেহেতু হ্যান্ডশেকের সময় টিসিপিকে কিছু ফেরত পাঠাতে হবে, এটি নির্দিষ্ট টার্গেটের ঠিকানা থেকে কিছু পাওয়া উচিত। প্রোটোকলটি টিসিপি বা ইউডিপি হওয়া সত্ত্বেও এটি গুরুত্ব দেয় না (না আমিও পরীক্ষা করি না)।

টার্গেট এবং ইন্টারফেস পরিবর্তন করতে ভুলবেন না।


টিসিপি সিন প্যাকেট ধরতে কীভাবে আপনি এটি পরিবর্তন করতে পারেন? কারণ লক্ষ্যটি যদি না পৌঁছা যায় তবে চেষ্টা করা তবে ব্যর্থ সংযোগটি প্রদর্শিত হবে না।
ইসহাক

3
এই স্ক্রিপ্টটি কি নতুন সফ্টওয়্যার (তাই সিস্টেমে ইনস্টল করা হবে না)?
vi।

@ যুক্তি দিয়ে এই বিতর্কটি সহ আপনি যুক্তি দিতে পারেন যে কোনও শেল স্ক্রিপ্ট 'নতুন সফ্টওয়্যার'। এটি নির্ভর করে আপনি কীভাবে 'সফ্টওয়্যার' সংজ্ঞায়িত করেন।
ম্যাথু আইফে

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

1
খুব দুর্দান্ত, তবে এর জন্য আপনার এখনও উন্নত অনুমতি প্রয়োজন। আমি পেয়েছিsocket.error: (1, 'Operation not permitted')
গ্রান্ট বোম্যান

17

আমি সত্যিই tcpdump পেতে চেষ্টা করব। বলা হচ্ছে, কোনও আইপি-র জন্য একটি নির্দিষ্ট সংযোগ বিদ্যমান কিনা তা দেখার জন্য কয়েকটি বিকল্প হ'ল:

strace,:

[kbrandt@ny-kbrandt01: ~] strace -e trace=network nc 1.2.3.4 1234
...
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(1234), sin_addr=inet_addr("1.2.3.4")}, 16) = -1 EINPROGRESS (Operation now in progress)

lsof:

[kbrandt@ny-kbrandt01: ~] nc 1.2.3.4 1234 &
[1] 11434
[kbrandt@ny-kbrandt01: ~] lsof -p 11434
....
nc      11434 kbrandt    3u  IPv4 4543149      0t0     TCP 10.7.0.78:58886->1.2.3.4:search-agent (SYN_SENT)

netstat কমান্ড:

[kbrandt@ny-kbrandt01: ~] nc 1.2.3.4 1234 &
[1] 11486
[kbrandt@ny-kbrandt01: ~] sudo netstat -a -p | grep 11486
tcp        0      1 10.7.0.78:58891             1.2.3.4:search-agent        SYN_SENT    11486/nc

1
আমি উত্তর প্রত্যাশা ছিল যে ধরনের ছিল। দুর্ভাগ্যজনকভাবে স্ট্রেস ইনস্টল করা হয় না: /
আইজাক

আমি lsof চেষ্টা করব
আইজাক

1
আমি অনুমান করি যে মূল পোস্টারটি উত্তরটি পছন্দ করেছে তবে অদ্ভুতভাবে এটি তার প্রশ্নের উত্তর দেয় না ("... টিসিপি সংযোগ - আমি কোনও সার্ভার একটি নির্দিষ্ট আইপিতে অনুরোধগুলি প্রেরণ করার চেষ্টা করে কিনা তা দেখতে চাই ...) এগুলি হবে আপনাকে একটি নির্দিষ্ট প্রক্রিয়াটির জন্য নেটওয়ার্ক সংযোগের তথ্য দেয় ... সম্ভবত তিনি তা চান? আমার মতো যারা এখানে এসেছেন একটি মেশিন থেকে পরের দিকে টিসিপি সংযোগ সম্পর্কে তথ্য খুঁজছেন তারা কৌশলটি না করতে পারে But তবে বেশ কয়েকটি সংখ্যক দেখানোর জন্য প্রপস বিভিন্ন শেল কমান্ডের উদাহরণ যা আপনাকে আপনার নেটওয়ার্ক সংযোগ সম্পর্কে তথ্য সংগ্রহ করতে দেয়
মাইক এস

15

Iptables একটি ডিবাগ ক্ষমতা এবং এটি ট্র্যাফিক বিশ্লেষণের জন্যও ব্যবহার করা যেতে পারে।

সমাধানটি নীচের ইউআরএলে বর্ণিত হয়েছে।

Iptables এ নিয়ম ডিবাগ করা

আপনার পছন্দের কোনও ফাইলে ট্রেস আউটপুটটির লগিং সেট আপ করতে নিম্নলিখিত URL টি পড়াও মূল্যবান reading

http://backreference.org/2010/06/11/iptables-debugging/

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

আপনি নিম্নলিখিতটি আপনার স্ক্রিপ্টে একটি মৌলিক টেম্পলেট হিসাবে ব্যবহার করতে পারেন।

# Logging
log(){
SOURCE=a.b.c.d (IP address)
$IPT -A INPUT   -s $SOURCE -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "In: "
$IPT -A OUTPUT  -s $SOURCE -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "Out: "
$IPT -A FORWARD -s $SOURCE -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "Fw: "
$IPT -t nat -A POSTROUTING -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "Nat: "
}
#log  (remove comment to enable)

trace(){
iptables -t raw -A PREROUTING -p tcp  -j TRACE
iptables -t raw -A OUTPUT     -p tcp  -j TRACE
}
#trace (remove comment to enable)

8

আপনার কাজটি করার জন্য যদি আপনার নির্দিষ্ট সফ্টওয়্যার দরকার হয় এবং আপনাকে অনুমতি না দেওয়া হয় তবে আপনি একটি ভাল ব্যবসায়ের ক্ষেত্রে তৈরি করছেন না বা আপনার ধারণাগুলি সঠিক লোকদের কাছে বিক্রি করছেন না ... বা আপনি এই সিস্টেমের নিয়ন্ত্রণে নন .. ।

যদি আমাকে কিছু করার দায়িত্ব দেওয়া হয় এবং আপনার ক্ষেত্রে প্রয়োজনীয় ধরণের ডিবাগিং / সমস্যা সমাধানের তথ্য প্রয়োজন হয়, তবে আমি সঠিক সরঞ্জামটি ব্যবহার করব। সম্ভবত tcpdumpবা tshark। হ্যাঁ, সেগুলি সফ্টওয়্যারের টুকরো, তবে আমি সেগুলি আরও প্রয়োজনীয় প্রয়োজনীয়তা হিসাবে বিবেচনা করব । প্রকৃতপক্ষে, সেগুলি এমন ইউটিলিটি যা অস্থায়ীভাবে সিস্টেমে ইনস্টল করা বা লোড করা যায় এবং ঘটনা ছাড়াই অপসারণ করা যায় (অপসারণযোগ্য মিডিয়া কি বিকল্প? ... ইঙ্গিত )

তবে মুল বক্তব্যটি হ'ল কোম্পানির নীতিমালার কাছে এক ঝাঁকুনির কাজ সম্ভবত এই ব্যবহারের ক্ষেত্রে অনুমোদনের চেয়ে আরও বেশি প্রচেষ্টা গ্রহণ করবে।


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

:( পরিবর্তন-পরিচালনার বিষয়ে a কোনও রাজনৈতিক খেলা খেলার এবং পরিবর্তন / পরিচালনার প্রক্রিয়াটিকে দ্রুত ট্র্যাক করার জন্য ডাম্প থেকে উপভোগ করা ব্যক্তি / দলগুলিকে পাওয়ার কী উপায় আছে?
ইয়েওয়াইট

1
আমি ভীত নই - তবে যেহেতু গ্রাহক যার জন্য পরিবর্তন-পরিচালনা এবং tcpdump প্রয়োজন, তাকে সত্যগুলি গ্রহণ করতে হবে। আমি আশা করছিলাম যে কোনওভাবেই তাকে খুশি করতে পারি।
আইজাক

3
@ নিউইয়াইট: যে কোনও ভাল পরিবর্তন পরিচালনার নীতিমালায় সম্পূর্ণ প্রক্রিয়াটি থেকে পরিবর্তনগুলি সুনির্দিষ্ট বা শ্রেণির অব্যাহতি দেওয়ার ক্ষমতা থাকতে হবে। যদি এটি না হয় ....
স্কট প্যাক

2
আপনি কি স্থিরভাবে tcpdumpঅন্যত্র সংযুক্ত কোনও সংকলন করতে পারবেন না , এবং কেবল এটি / টেম্পিতে অনুলিপি করে সেখান থেকে চালাতে পারবেন?
চে

5

কাইল কিছু দুর্দান্ত বিকল্প প্রস্তাব। আরও একটি ব্যবহার করা হবে iptables:

[james@server ~]$ sudo iptables -I OUTPUT -d 1.2.3.4/32
...
[james@server ~]$ sudo iptables -L OUTPUT -n -v
Chain OUTPUT (policy ACCEPT 105 packets, 35602 bytes)
 pkts bytes target  prot opt in  out  source      destination
   87 33484 LOG     all  --  *   *    0.0.0.0/0   1.2.3.4     LOG flags 0 level 4

এটি মূলত একটি অ্যাকাউন্টিংয়ের নিয়ম। এটি স্পষ্টভাবে ট্র্যাফিকের অনুমতি বা অস্বীকার করে না, সুতরাং OUTPUT চেইনের জন্য ডিফল্ট নীতি ব্যবহৃত হয় (যা এসিসিপিটি-তে ডিফল্ট হয়)। যাইহোক, কোনও মেলানো প্যাকেট নিয়মের জন্য কাউন্টারগুলিকে বাড়িয়ে তুলবে।

বিকল্পের সাথে আপনি প্যাকেট সম্পর্কে বিশদভাবে লগ করতে পারেন -j LOG:

[james@server ~]$ sudo iptables -I OUTPUT -d 1.2.3.4/32 -j LOG
...
[james@server ~]@ dmesg | grep 1.2.3.4 | tail -1
IN= OUT=eth0 SRC=192.168.1.1 DST=1.2.3.4 LEN=100 TOS=0x10 PREC=0x00 TTL=64 ...

লগগুলি কার্নেল লগিং সুবিধায় যাবে, সুতরাং এটি ডেবিয়ান ডেরাইভেটিভগুলিতে রেড হ্যাট ডেরিভেটিভস এবং /var/log/kern.log- এ / var / লগ / বার্তাগুলিতে প্রদর্শিত হবে। এটি dmesgপ্রদর্শিত হিসাবে আউটপুট এ দৃশ্যমান হবে । tcpdumpতবে ভিন্ন , এটি প্যাকেটের সম্পূর্ণ বিষয়বস্তুগুলিতে লগ করবে না, কেবল প্যাকেটের শিরোনামের সামগ্রীগুলি the


আমি নিজেই iptables সম্পর্কে ভাবছিলাম, তবে ইনস্টল করা হয়নি: /। যাইহোক, দুর্দান্ত সমাধান।
ইসহাক

3

যেহেতু আপনার সার্ভারটি একটি নির্দিষ্ট আইপিতে সংযোগ করছে, তাই আমি অনুমান করি যে এটি কোনও বন্দরের সাথে হবে যা আপনিও জানেন?

যাই হোক না কেন, netstatবা ssআপনি যা চান তা করার জন্য ডিজাইন করা হয়েছে। আপনি উভয় আদেশ দিয়ে একই করতে পারেন:

netstat -n -t | awk '{print $5}' | grep A.B.C.D:n
ss      -n -t | awk '{print $5}' | grep A.B.C.D:n

যেখানে A.B.C.Dএকটি আইভিভি 4 ঠিকানা n উপস্থাপন করে এবং এমন একটি পোর্ট নম্বর উপস্থাপন করে যা আপনার সার্ভারটি দূরবর্তী দিকে সংযোগ করছে। উদাহরণ স্বরূপ:

ss      -n -t | awk '{print $5}' | grep 10.137.54.22:3389

অথবা, আপনি যদি জানতে চান যে সংযোগটি তৈরি হয়েছে:

ss      -n -t | awk '{print $5}' | grep -q 10.137.54.22:3389 && echo "CONNECTION MADE"

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

অবশেষে, আপনি আপনার পর্যবেক্ষণের সরঞ্জাম হিসাবে ব্যবহার করতে আপনার হৃদয়ের সামগ্রীতে এটিকে লুপ করতে পারেন:

while true; do
    ss -n -t | awk '{print $5}' | grep -q A.B.C.D:n && \
        echo "CONNECTION MADE" && \
        exit 0
    sleep 1
done

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