Trao đổi với tôi

http://www.buidao.com

12/6/09

[Security] Server đang lắng nghe trên Port nào ?

Server đang lắng nghe trên Port nào ?

Có những điều tưởng chừng hết sức đơn giản nhưng luôn cần thiết cho bạn khi quản lý các hệ thống server. Cách thức nào để nhận biết các port nào đã được dùng và port nào đang ở tình trạng đang lắng nghe trên Server, chỉ một command đơn giản NETSTAT.

Lưu ý: NETSTAT command sẽ cho bạn biết bất kỳ port nào đã mở, hoặc đang lắng nghe nhưng nó không phải là công cụ rà ports trên các hệ thống - scanning tool! Khi thực hiện lệnh Netstat trên các hệ thống, kết quả sẽ như ví dụ bên dưới:

Mở command prompt và đánh lệnh:

C:WINDOWS>netstat -an |find /i "listening"


TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1084 0.0.0.0:0 LISTENING
TCP 0.0.0.0:2094 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
TCP 0.0.0.0:5000 0.0.0.0:0 LISTENING

Lệnh này thực hiện tìm tất cả các Port đang lắng nghe trên hệ thống , nếu muốn lưu lại trên C: và thuận tiện cho việc xem lại sau này chỉ cần thực hiện lệnh:

netstat -an |find /i "listening" > c:openports.txt

Sau đó tại Run, đánh lệnh notepad c:openports.txt

Nếu muốn tìm những Ports nào đã thiết lập kết nối trên hệ thống "established" , tưc là những port đang giao tiếp.., dùng lệnh sau:

C:WINDOWS>netstat -an |find /i "established"


TCP 192.168.0.100:1084 192.168.0.200:1026 ESTABLISHED
TCP 192.168.0.100:2094 192.168.0.200:1166 ESTABLISHED
TCP 192.168.0.100:2305 209.211.250.3:80 ESTABLISHED
TCP 192.168.0.100:2316 212.179.112.230:80 ESTABLISHED
TCP 192.168.0.100:2340 209.211.250.3:110 ESTABLISHED

Lưu ý: Trên Windows XP và Windows Server 2003, có thể dùng lệnh NETSTAT -O để lấy được danh sách tất cả các quy trình -process ID, đang vận hành tương ứng với mỗi connection:

C:WINDOWS>netstat -ao |find /i "listening"


TCP pro1:epmap pro1.dpetri.net:0 LISTENING 860
TCP pro1:microsoft-ds pro1.dpetri.net:0 LISTENING 4
TCP pro1:1025 pro1.dpetri.net:0 LISTENING 908
TCP pro1:1084 pro1.dpetri.net:0 LISTENING 596
TCP pro1:2094 pro1.dpetri.net:0 LISTENING 596
TCP pro1:3389 pro1.dpetri.net:0 LISTENING 908
TCP pro1:5000 pro1.dpetri.net:0 LISTENING 1068

Có thể dùng công cụ PULIST thuộc bộ công cụ W2K Resource Kit (Download here) để nhận dạng PID , xem quy trình nào sử dụng nó, và ai đả start nó. Ví dụ, bạn tìm ra được trên Computer bạn có một kết nối mở đến một địa chỉ IP ở xa trên TCP port 80, và bạn không hề có bất cứ Internet Explorer hoặc trình duyệt Browser nào đang mở. Bạn có tin rằng bạn vẫn có thể tìm ra quy trình nào đang vận hành trên kết nối này ?

C:WINDOWS>netstat -no

Active Connections

Proto Local Address Foreign Address State PID
TCP 192.168.0.100:2496 212.179.4.7:80 ESTABLISHED 1536

Bạn có thấy số quy trình PID là 1536 ?

Tiếp đó dùng tool PULIST đã download ở trên thực hiện lệnh FIND:

C:WINDOWS>pulist |find /i "1536"

Process PID User
LUCOMS~1.EXE 1536 DPETRIdanielp

Trong trường hợp này, quy trình LUCOMS~1.EXE được vận hành bởi user danielp (account đang đang dùng trong Lab này, chúng tôi đang Lab trên server DPETRI) và bạn có thể xác định quy trình này chính là chương trình cập nhật Symantec Live Update của Symantec.

Bạn cũng có thể dùng Task Manager để xác định các PID tương ứng.

1. Để dùng Task Manager để show ra các PID column , dùng CTRL+SHIFT+ESC để mở Task Manager.

2. Mở Processes tab, click View và chọn Select Columns.

3. Trong Select Columns , click để chọn PID và sau đó click Ok.

4. Bạn có thể sắp xếp cột PID để trình bày số PIDs theo thứ tự tăng hoặc giảm.

Để xem tất cả các Ports đóng, đã thiết lập, hoặc các ports đang sử dụng khác , dùng lệnh:

C:WINDOWS>netstat -a

Active Connections

Proto Local Address Foreign Address State
TCP pro1:epmap pro1.dpetri.net:0 LISTENING
TCP pro1:microsoft-ds pro1.dpetri.net:0 LISTENING
TCP pro1:1025 pro1.dpetri.net:0 LISTENING
TCP pro1:1084 pro1.dpetri.net:0 LISTENING
TCP pro1:2094 pro1.dpetri.net:0 LISTENING
TCP pro1:3389 pro1.dpetri.net:0 LISTENING
TCP pro1:5000 pro1.dpetri.net:0 LISTENING
TCP pro1:1084 srv1.dpetri.net:1026 ESTABLISHED
TCP pro1:2094 srv1.dpetri.net:1166 ESTABLISHED
TCP pro1:2365 srv1.dpetri.net:epmap TIME_WAIT
TCP pro1:2366 srv1.dpetri.net:1026 TIME_WAIT
UDP pro1:epmap *:*
UDP pro1:microsoft-ds *:*
UDP pro1:isakmp *:*
UDP pro1:1026 *:*
UDP pro1:1027 *:*
UDP pro1:1028 *:*
UDP pro1:1038 *:*
UDP pro1:1043 *:*
UDP pro1:1085 *:*
UDP pro1:1086 *:*
UDP pro1:1242 *:*
UDP pro1:ntp *:*
UDP pro1:1649 *:*
UDP pro1:1900 *:*
UDP pro1:2095 *:*
UDP pro1:2217 *:*
UDP pro1:ntp *:*
UDP pro1:1900 *:*

Chú ý: Bạn có thấy có một số trạng thái kết nối là “Time_Wait” không ?, tạm hiểu nó như thế này: TCP vẫn tạm thời giữ kết nối giữa 2 Computer trong một khoảng thời gian nhất định (TIME_WAIT) , sau khi 2 bên đã ngừng kết nối, điều này là cần thiết trước khi kết thúc hoàn toàn kết nối, để tránh tình trạng các packets bị chậm trể trong phiên truyền sẽ khởi tạo kết nối mới, với Time_wait chúng sẽ bị giữ lại và không được xem như một yêu cầu khởi tạo kết nối mới.

Trên XP/2003 có thể dùng -O:

C:WINDOWS>netstat -ao

Active Connections

Proto Local Address Foreign Address State PID
TCP pro1:epmap pro1.dpetri.net:0 LISTENING 860
TCP pro1:microsoft-ds pro1.dpetri.net:0 LISTENING 4
TCP pro1:1025 pro1.dpetri.net:0 LISTENING 908
TCP pro1:1084 pro1.dpetri.net:0 LISTENING 596
TCP pro1:2094 pro1.dpetri.net:0 LISTENING 596
TCP pro1:3389 pro1.dpetri.net:0 LISTENING 908
TCP pro1:5000 pro1.dpetri.net:0 LISTENING 1068
TCP pro1:1084 srv1.dpetri.net:1026 ESTABLISHED 596
TCP pro1:2094 srv1.dpetri.net:1166 ESTABLISHED 596
UDP pro1:epmap *:* 860
UDP pro1:microsoft-ds *:* 4
UDP pro1:isakmp *:* 680
UDP pro1:1026 *:* 1040
UDP pro1:1027 *:* 1040
UDP pro1:1028 *:* 680
UDP pro1:1038 *:* 908
UDP pro1:1043 *:* 624
UDP pro1:1085 *:* 596
UDP pro1:1086 *:* 596
UDP pro1:1242 *:* 1040
UDP pro1:ntp *:* 908
UDP pro1:1649 *:* 596
UDP pro1:1900 *:* 1068
UDP pro1:2095 *:* 976
UDP pro1:2217 *:* 1856
UDP pro1:ntp *:* 908
UDP pro1:1900 *:* 1068