Làm thế nào để biết quá trình nào có một cổng cụ thể mở trên Linux?


32

Tôi chạy nmap trên máy chủ của mình và thấy một cổng lạ mở. Tôi đang cố gắng tìm hiểu xem có cách nào để ánh xạ cổng đó tới một quy trình cụ thể không nhưng không biết có công cụ nào như vậy không.

Bất kỳ đề xuất?


Upvote cho câu trả lời số 1 trong Gogle tháng 6 năm 2018.
SDsolar

Câu trả lời:


57

Cũng như Netstat, được đề cập trong các bài viết khác, lệnh lsof sẽ có thể làm điều này tốt. Chỉ cần sử dụng này:

lsof -i :<port number>

và tất cả các quy trình sẽ được đưa ra. Tôi sử dụng nó trên OS X khá thường xuyên.

Bài viết quản trị Debian cho lsof


hấp dẫn. Tôi không biết về điều này. tuy nhiên, tôi đang xem xét điều này là kết quả của một nỗ lực hack. Máy là của một người bạn. bạn có thể telnet đến cổng vi phạm NHƯNG lsof VÀ netstat cả hai không tiết lộ cổng là mở.
jnman

cổng là 5631 mà theo / etc / services là pcanywheredata nên rất đáng ngờ.
jnman

Bây giờ, thật tuyệt, tôi không biết điều đó! Luôn luôn sử dụng netstat. Cảm ơn
buster

4
Nếu cả netstat và lsof đều không hiển thị cổng đang được sử dụng, nhưng máy đang phản hồi với nó, rất có thể đã có một bộ root được cài đặt. Tôi khuyên bạn nên di chuyển bất kỳ dữ liệu nào ra khỏi máy ở một nơi khác và sau đó gỡ bỏ nó.
Kamil Kisiel

6
Đây thực sự là một rootkit. Tôi đã thấy hành vi này trước đây và nó luôn luôn là một rootkit. Hệ thống của bạn bị xâm phạm và mọi công cụ bạn đang sử dụng đều không thể tin cậy được. Khởi động vào Live CD (có các tệp nhị phân đáng tin cậy chỉ đọc) và sử dụng nó để trích xuất dữ liệu, cài đặt của bạn, v.v ... Bất kỳ chương trình nào bạn có, bất kỳ tập lệnh nào bạn có, đều từ bỏ chúng. Đừng mang chúng. Đối xử với hệ thống như thể nó có bệnh phong, bởi vì nó / does /. Khi bạn đã hoàn tất, hãy khởi động nó từ quỹ đạo. Làm điều này càng sớm càng tốt. Ồ, và rút phích cắm kết nối mạng của bạn - từ chối quyền truy cập kẻ tấn công của bạn.
Avery Payne

23

Cảnh báo: Hệ thống của bạn bị xâm nhập.

Công cụ bạn cần là lsof, sẽ liệt kê các tệp (và ổ cắm và cổng). Nó rất có thể đã được cài đặt và rất có thể là phiên bản của kẻ tấn công, có nghĩa là nó sẽ nói dối bạn.

Đây thực sự là một rootkit. Tôi đã thấy hành vi này trước đây và nó luôn luôn là một rootkit. Hệ thống của bạn bị xâm phạm và bất kỳ công cụ nào bạn đang sử dụng có nguồn gốc từ cùng một máy đều không thể tin cậy được. Khởi động vào Live CD (có các tệp nhị phân đáng tin cậy chỉ đọc) và sử dụng nó để trích xuất dữ liệu, cài đặt của bạn, v.v ... Bất kỳ chương trình nào bạn có, bất kỳ tập lệnh nào bạn có, đều từ bỏ chúng . Đừng mang chúng . Đối xử với họ và hệ thống, như thể họ mắc bệnh phong, vì họ làm .

Khi bạn đã hoàn tất, hãy khởi động nó từ quỹ đạo .

Trò chơi hơn người, trò chơi kết thúc.

Làm điều này càng sớm càng tốt. Ồ, và rút phích cắm kết nối mạng của bạn - từ chối quyền truy cập kẻ tấn công của bạn.


1
Điều này nói lên tất cả thực sự. Chỉ ra những gì đã sai, làm phẳng máy chủ, khôi phục từ bản sao lưu tốt được biết đến cuối cùng. Cuộc sống quá ngắn để chơi game.
Rob Moir

2
Chỉ cần thêm: hãy chắc chắn rằng bạn biết ngày đột nhập, vì bạn có thể đang khôi phục cùng một rootkit mà bạn vừa xóa. Nếu không, yeah, khôi phục từ / trước / ngày đó.
Avery Payne

1
Đó là một hình ảnh vui nhộn. Tôi biết hệ thống bị xâm nhập (rất may nó không phải của tôi). Câu hỏi tôi tò mò hơn là theo dõi cách anh ấy bước vào ngay từ đầu. Tôi nghi ngờ thông qua php / j Joomla nhưng muốn hiểu làm thế nào / tại sao cổng này vẫn mở khi không có công cụ phát hiện bộ công cụ gốc nào hiển thị cổng đó.
jnman

1
lol @ "Ồ, và rút phích cắm kết nối mạng của bạn"
theman_on_osx

6
Trước khi bạn đi đến kết luận đó, có những lời giải thích khả dĩ khác cho các cổng không mong muốn được mở; chẳng hạn như một gói bạn đã cài đặt nhưng quên mất.
David J.

14
sudo netstat -lnp  

Liệt kê các cổng đang lắng nghe các kết nối đến và quá trình liên quan có cổng mở.


4

netstat -anp

"-P" bảo nó liệt kê ID tiến trình có cổng mở. -A bảo nó liệt kê các cổng nghe và không giải quyết tên. Trên các hệ thống bận rộn có thể tăng tốc độ nhanh như thế nào.

netstat -anp | grep "DANH SÁCH"

Điều đó sẽ chỉ cung cấp cho bạn các cổng mở.


4

Nếu bạn không thể thấy cổng mở bằng các công cụ hệ điều hành và bạn nghi ngờ có sự xâm nhập thì đó có thể là rootkit đã được cài đặt.

Rootkit có thể đã thay đổi các công cụ hệ thống để tránh các quy trình và cổng nhất định hoặc thay đổi các mô-đun hạt nhân.

Bạn có thể kiểm tra rootkit bằng một số công cụ tự động. 'Bộ tìm kiếm apt-cache' hiển thị như sau trong Ubuntu:

chkrootkit - rootkit detector
rkhunter - rootkit, backdoor, sniffer and exploit scanner
unhide - Forensic tool to find hidden processes and ports

Nếu bạn tình cờ có một rootkit, bạn có thể hoàn nguyên 'đã thay đổi' cho hệ thống của mình nhưng tôi khuyên bạn nên tìm hiểu cách thức xâm nhập được thực hiện và làm cứng hệ thống để nó không lặp lại.


Chúng không độc quyền với Ubuntu, bạn cũng có thể sử dụng chúng trong CentOS. Chỉ cần tìm gói hoặc tải xuống từ trang của họ.


Với đầu ra từ cổng đó, có vẻ như bạn đang chạy pcanywhere thực sự: "<Enter>" rất giống với "Vui lòng nhấn <Enter>", đó là thông báo chào mừng ở mọi nơi. Tôi không biết tại sao quy trình không hiển thị trong danh sách quy trình. Bạn đã root chưa

Bạn cũng có thể thử khởi động lại để xem đó có phải là quá trình một lần không.


bất kỳ đề nghị cho centos?
jnman

thật kỳ lạ, unide-tcp không hiển thị bất kỳ cổng đáng ngờ nào. chkrootkit / rkhunter đã báo cáo tất cả rõ ràng (nhưng chủ yếu là vì tôi đã xóa các thư mục đáng ngờ trước khi đặt câu hỏi này)
jnman

FWIW, rootkit đã tự cài đặt là apache trong / var / tmp / ... và /var/tmp/.ICE-Unix/* Cái thứ hai rất lén lút vì tôi không nhận thấy nó lần đầu tiên và tôi đã tự hỏi làm thế nào một quá trình bash tiếp tục sinh sản sau khi bị giết.
jnman

Hóa ra cracker đã cài đặt một công việc cron.
jnman

0

Để giải thích câu trả lời của @bjtitus, bạn có thể lấy một số thông tin rất chi tiết, ví dụ:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

Tôi có thể thấy ngay đó là mực là quá trình, nhưng thực tế là tôi squid-deb-proxyđang chiếm cảng.

Một ví dụ khác về ứng dụng java:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

Bạn có thể thấy trong lsof(LiSt Open Files) rằng đó là java, ít hữu ích hơn. Chạy pslệnh với PID chúng ta có thể thấy ngay đó là CrashPlan.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.