
كيفية مراقبة منافذ TCP و UDP في الوقت الفعلي
كيف يمكنني تحديد ما إذا كان المنفذ قيد الاستخدام في نظام Linux أو نظام مشابه لـ Unix؟ كيف يمكنني التحقق من المنافذ التي تستمع على خادم Linux؟ كيف يمكنني التحقق مما إذا كان المنفذ قيد الاستخدام على نظام التشغيل Linux باستخدام CLI؟
من المهم التحقق من المنافذ التي تستمع على واجهات شبكة الخادم. تحتاج إلى الانتباه إلى فتح المنافذ لاكتشاف الاختراق. بصرف النظر عن التطفل ، لأغراض استكشاف الأخطاء وإصلاحها ، قد يكون من الضروري التحقق مما إذا كان المنفذ قيد الاستخدام بالفعل بواسطة تطبيق مختلف على خوادمك. على سبيل المثال ، يمكنك تثبيت خادم Apache و Nginx على نفس النظام. لذلك من الضروري معرفة ما إذا كان Apache أو Nginx يستخدمان منفذ TCP رقم 80/443.
في مجال الشبكات ، وخاصة على مستوى نظام التشغيل لينكس، يعد المنفذ بنية منطقية تحدد عملية / تطبيقًا معينًا أو نوعًا من خدمة الشبكة وكل خدمة شبكة تعمل على نظام Linux تستخدم بروتوكولًا معينًا (الأكثر شيوعًا هو TCP ( بروتوكول التحكم في الإرسال ) و UDP ( بروتوكول مخطط بيانات المستخدم )) ورقم منفذ للتواصل مع العمليات أو الخدمات الأخرى.
netstat (نت ستات وتعني إحصائيات الشبكة) هي أداة سطر أوامر تعرض اتصالات الشبكة (الواردة والصادرة على حد سواء) وجداول التوجيه وعدد من إحصائيات واجهة الشبكة.
وهي متوفرة على أنظمة تشغيل Linux و Unix-like و Windows. يعد netstat أداة قوية ويمكن أن يكون أداة مفيدة لاستكشاف المشكلات المتعلقة بالشبكة وإصلاحها والتحقق من إحصائيات الاتصال.
في هذه المقالة القصيرة ، سنوضح لك كيفية سرد ومراقبة تشغيل منافذ TCP و UDP في الوقت الفعلي مع ملخص مقبس على نظام Linux.
إذا قمت بكتابة netstat -help ، فستحصل على إرشادات الاستخدام التالية.
أوامر Netstat
[root@wikikali~]# netstat -helpusage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}netstat [-vWnNcaeol] [<Socket> ...]netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]-r, --route display routing table-I, --interfaces=<Iface> display interface table for <Iface>-i, --interfaces display interface table-g, --groups display multicast group memberships-s, --statistics display networking statistics (like SNMP)-M, --masquerade display masqueraded connections-v, --verbose be verbose-W, --wide don't truncate IP addresses-n, --numeric don't resolve names--numeric-hosts don't resolve host names--numeric-ports don't resolve port names--numeric-users don't resolve user names-N, --symbolic resolve hardware names-e, --extend display other/more information-p, --programs display PID/Program name for sockets-o, --timers display timers-c, --continuous continuous listing-l, --listening display listening server sockets-a, --all display all sockets (default: connected)-F, --fib display Forwarding Information Base (default)-C, --cache display routing cache instead of FIB-Z, --context display SELinux security context for sockets<Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}{-x|--unix} --ax25 --ipx --netrom<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inetList of possible address families (which support routing):inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)x25 (CCITT X.25)[root@wikikali~]#
باستخدام اداة netstat
sudo netstat -tulpn
sudo netstat -t -u -l -p -n
sudo netstat --tcp --udp --listening --program --numeric
باستخدام اداة SS
sudo ss -tulpn
راقب البورتات المفتوحة TCP و UDP في الوقت الحقيقي
من المهم أيضًا الإشارة إلى أن الأمر netstat قد تم إهماله وبدلاً من ذلك أخذ الأمر ss مكانه في عرض إحصائيات أكثر تفصيلاً للشبكة.
باستخدام اداة netstat و watch
sudo watch netstat -tulpn
أو باستخدام اداة SS و watch
sudo watch ss -tulpn
اتصال مؤسس Established Connection
[root@wikikali~]# netstat -natu | grep 'ESTABLISHED'tcp 0 21 68.183.37.102:22 222.186.31.135:21714 ESTABLISHEDtcp 0 36 68.183.37.102:22 52.148.155.182:49859 ESTABLISHEDtcp 0 0 68.183.37.102:22 61.177.142.158:55481 ESTABLISHED
[root@wikikali~]# netstat -natu | grep 'ESTABLISHED' | grep 61.177.142.158tcp 0 1280 68.183.37.102:22 61.177.142.158:33932 ESTABLISHED
انتظار الاتصال Listening Connection
[root@wikikali~]# netstat -an | grep 'LISTEN'tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:111 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTENtcp6 0 0 :::111 :::* LISTENtcp6 0 0 :::80 :::* LISTENtcp6 0 0 :::22 :::* LISTEN
[root@wikikali~]# netstat -lActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 localhost:smtp 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTENtcp6 0 0 [::]:sunrpc [::]:* LISTENtcp6 0 0 [::]:webcache [::]:* LISTENtcp6 0 0 [::]:ssh [::]:* LISTENudp 0 0 0.0.0.0:805 0.0.0.0:*udp 0 0 0.0.0.0:sunrpc 0.0.0.0:*udp 0 0 localhost:323 0.0.0.0:*udp6 0 0 [::]:805 [::]:*udp6 0 0 [::]:sunrpc [::]:*udp6 0 0 ip6-localhost:323 [::]:*Active UNIX domain sockets (only servers)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ACC ] STREAM LISTENING 15108 /run/dbus/system_bus_socketunix 2 [ ACC ] STREAM LISTENING 8202 /run/systemd/journal/stdoutunix 2 [ ACC ] SEQPACKET LISTENING 12813 /run/udev/controlunix 2 [ ACC ] STREAM LISTENING 17542 public/pickupunix 2 [ ACC ] STREAM LISTENING 15165 /var/run/rpcbind.sockunix 2 [ ACC ] STREAM LISTENING 17546 public/cleanupunix 2 [ ACC ] STREAM LISTENING 15605 /var/lib/gssproxy/default.sockunix 2 [ ACC ] STREAM LISTENING 12706 /run/systemd/privateunix 2 [ ACC ] STREAM LISTENING 17549 public/qmgrunix 2 [ ACC ] STREAM LISTENING 17571 public/flushunix 2 [ ACC ] STREAM LISTENING 17553 private/tlsmgrunix 2 [ ACC ] STREAM LISTENING 17586 public/showqunix 2 [ ACC ] STREAM LISTENING 17556 private/rewriteunix 2 [ ACC ] STREAM LISTENING 17559 private/bounceunix 2 [ ACC ] STREAM LISTENING 17562 private/deferunix 2 [ ACC ] STREAM LISTENING 17565 private/traceunix 2 [ ACC ] STREAM LISTENING 17568 private/verifyunix 2 [ ACC ] STREAM LISTENING 17574 private/proxymapunix 2 [ ACC ] STREAM LISTENING 17577 private/proxywriteunix 2 [ ACC ] STREAM LISTENING 17580 private/smtpunix 2 [ ACC ] STREAM LISTENING 17583 private/relayunix 2 [ ACC ] STREAM LISTENING 17589 private/errorunix 2 [ ACC ] STREAM LISTENING 17592 private/retryunix 2 [ ACC ] STREAM LISTENING 17595 private/discardunix 2 [ ACC ] STREAM LISTENING 17598 private/localunix 2 [ ACC ] STREAM LISTENING 17601 private/virtualunix 2 [ ACC ] STREAM LISTENING 17604 private/lmtpunix 2 [ ACC ] STREAM LISTENING 17607 private/anvilunix 2 [ ACC ] STREAM LISTENING 17610 private/scacheunix 2 [ ACC ] STREAM LISTENING 15606 /run/gssproxy.sock
رقم المنفذ المستخدم بواسطة PID
[root@wikikali~]# netstat -anlp | grep 3937tcp6 0 0 :::80 :::* LISTEN 3937/httpdunix 3 [ ] STREAM CONNECTED 2442387 3937/httpd
كافة إحصائيات البروتوكولات
[root@wikikali ~]# netstat -sIp:731422 total packets received0 forwarded0 incoming packets discarded731399 incoming packets delivered787732 requests sent out16 dropped because of missing routeIcmp:5277 ICMP messages received120 input ICMP message failed.InCsumErrors: 6ICMP input histogram:destination unreachable: 193timeout in transit: 16echo requests: 5060echo replies: 29355 ICMP messages sent0 ICMP messages failedICMP output histogram:destination unreachable: 4295echo replies: 5060IcmpMsg:InType0: 2InType3: 193InType8: 5060InType11: 16OutType0: 5060OutType3: 4295Tcp:42 active connections openings35226 passive connection openings1693 failed connection attempts645 connection resets received2 connections established646705 segments received648037 segments send out99463 segments retransmited27377 bad segments received.150893 resets sentInCsumErrors: 27377Udp:74547 packets received4814 packets to unknown port received.56 packet receive errors74584 packets sent0 receive buffer errors0 send buffer errorsInCsumErrors: 56UdpLite:TcpExt:177 invalid SYN cookies received1693 resets received for embryonic SYN_RECV sockets316 TCP sockets finished time wait in fast timer3 packets rejects in established connections because of timestamp70248 delayed acks sent6 delayed acks further delayed because of locked socketQuick ack mode was activated 3082 times17 SYNs to LISTEN sockets dropped28179 packets directly queued to recvmsg prequeue.9802 bytes directly received in process context from prequeue72106 packet headers predicted94182 acknowledgments not containing data payload received40094 predicted acknowledgments332 times recovered from packet loss by selective acknowledgements8 congestion windows recovered without slow start by DSACK1173 congestion windows recovered without slow start after partial ack1029 timeouts after SACK recovery8 timeouts in loss state329 fast retransmits3 forward retransmits32 retransmits in slow start44785 other TCP timeoutsTCPLossProbes: 9763TCPLossProbeRecovery: 173254 SACK retransmits failed3144 DSACKs sent for old packets4 DSACKs sent for out of order packets695 DSACKs received1 DSACKs for out of order packets received44 connections reset due to unexpected data76 connections reset due to early user close6079 connections aborted due to timeoutTCPDSACKIgnoredNoUndo: 448TCPSpuriousRTOs: 5TCPSackShiftFallback: 465IPReversePathFilter: 11TCPRcvCoalesce: 32369TCPOFOQueue: 4313TCPOFOMerge: 4TCPChallengeACK: 2TCPSynRetrans: 43670TCPOrigDataSent: 208010TCPACKSkippedSeq: 12IpExt:InNoRoutes: 12InOctets: 133789295OutOctets: 151093769InNoECTPkts: 731338InECT1Pkts: 3InECT0Pkts: 1568InCEPkts: 108
معلومات توجيه Kernel
[root@wikikali ~]# netstat -rKernel IP routing tableDestination Gateway Genmask Flags MSS Window irtt Ifacedefault gateway 0.0.0.0 UG 0 0 0 eth010.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth068.183.32.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0link-local 0.0.0.0 255.255.0.0 U 0 0 0 eth0
[root@wikikali ~]# netstat -anlp | grep 80 | grep LISTENtcp6 0 0 :::80 :::* LISTEN 3937/httpd
netstat -Aan | grep $portnumber
rmsock $address_of_pcb tcpcb
قائمة واجهات الشبكة Network Interfaces
[root@wikikali ~]# netstat -iKernel Interface tableIface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgeth0 1500 793026 0 0 0 849443 0 0 0 BMRUlo 65536 6 0 0 0 6 0 0 0 LRU
الانصات المستمر Continuous Listening
خيار ممتاز عند استكشاف الأخطاء وإصلاحها او تعطل الخدمات ذات الصلة. لنفترض أن أحد التطبيقات يتعطل بشكل عشوائي كل بضع دقائق. لكن ، لست متأكدا متى بالضبط. يمكنك استخدام البارامتر -c التي ستظهر النتائج باستمرار.
[root@wikikali ~]# netstat -anlpc | grep 8080tcp6 0 0 :::8080 :::* LISTEN 11766/httpdtcp6 0 0 :::8080 :::* LISTEN 11766/httpdtcp6 0 0 :::8080 :::* LISTEN 11766/httpdtcp6 0 0 :::8080 :::* LISTEN 11766/httpd
يعد netstat أحد الأوامر المستخدمة على نطاق واسع بواسطة مسؤول النظام وآمل أن تعطيك الأمثلة المذكورة أعلاه فكرة عما يمكنك فعله به.