5 cách dễ dàng để kiểm tra các cổng đang mở trên Linux
Các cổng mạng mở là các điểm vào mạng dễ dàng nhất của bạn. Đôi khi, có thể có các dịch vụ không mong muốn chạy trên các cổng có thể nhìn thấy bên ngoài từ internet. Trong trường hợp các dịch vụ này dễ bị tổn thương, mạng của bạn sẽ thường xuyên bị đe dọa tấn công vì hàng ngày toàn bộ internet đang được quét hàng loạt để tìm các dịch vụ dễ bị tấn công trên các cổng mở.
Tìm hiểu cách bạn có thể quét và xem các cổng đang mở trên hệ thống Linux của mình để bạn có thể bảo vệ mạng của mình khỏi các mối đe dọa.
Mục Lục
Cổng mạng là gì?
Các cổng mạng là các điểm truy cập hợp lý của hệ thống có thể được sử dụng làm kênh để lưu trữ nhiều dịch vụ. Một cổng được biểu thị bằng một số nguyên 16 bit, vì vậy, số cổng cao nhất là 65535.
Bạn có thể nghĩ về các cổng giống như cửa sổ và cửa ra vào của một ngôi nhà—về cơ bản là tất cả các điểm vào khác nhau của một ngôi nhà hoặc máy tính. Các cổng có ba loại: cổng hệ thống (1-1023), cổng đã đăng ký (1024-49151) và cổng tạm thời hoặc cổng động (49152-65535).
Khi bạn khởi động một ứng dụng yêu cầu kết nối với internet, nó sẽ sử dụng các cổng động để truyền và nhận dữ liệu qua mạng. Tuy nhiên, khi bạn khởi động máy chủ web hoặc máy chủ SSH, nó thường liên kết với các cổng hệ thống hoặc cổng đã đăng ký.
Đối với các máy chủ web phục vụ HTTP, cổng hệ thống mặc định là 80 và đối với SSH là 22. Các quy định này chẳng hạn như phạm vi của các cổng được phát triển bởi Cơ quan cấp số được gán Internet (IANA). Bạn có thể xem qua RFC liên quan đến các cổng để có danh sách đầy đủ tất cả các cổng và chức năng của chúng.
Điều quan trọng là bạn phải biết các cổng dễ bị tấn công nhất để bạn có thể đảm bảo chúng được đóng hoặc bảo vệ.
1. Kiểm tra các cổng mở bằng netstat
netstat là một tiện ích phổ biến mà bạn có thể sử dụng để xem thống kê mạng của hệ thống Linux của mình. Nó là một phần của gói công cụ mạng.
Gói công cụ mạng hiện không được dùng nữa do nhà phát triển không bảo trì đúng cách. Đây cũng là lý do tại sao bạn có thể gặp phải lỗi “ifconfig: command not found” khi chạy lệnh ifconfig phổ biến trên Linux.
Vì vậy, trên các hệ thống hiện đại, trước tiên bạn có thể phải cài đặt gói công cụ mạng, sau đó bạn sẽ có thể chạy lệnh netstat. Đây là cách kiểm tra các cổng đang mở với netstat:
netstat -tuln
Giải thích lệnh:
- -t hiển thị các cổng TCP.
- -u hiển thị các cổng UDP.
- -l hiển thị các cổng nghe. Thay cái này bằng Một nếu bạn muốn xem tất cả các cổng, bất kể trạng thái của chúng.
- -N hiển thị giá trị số của các cổng thay vì phân giải thành tên dịch vụ. Ví dụ: hiện port 22 thay vì SSH, tức là dịch vụ chạy trên port.
2. Kiểm tra các cổng mở bằng ss
ss là tương đương hiện đại của công cụ netstat. Bạn sẽ thấy điều này được cài đặt sẵn trong tất cả các bản phân phối Linux hiện đại. Cú pháp kiểm tra các cổng đang mở với ss giống hệt với netstat.
Đây là cách kiểm tra các cổng đang mở với ss:
ss -tuln
Giải thích lệnh:
- -t hiển thị các cổng TCP.
- -u hiển thị các cổng UDP.
- -l hiển thị các cổng nghe. Thay cái này bằng Một nếu bạn muốn xem tất cả các cổng, bất kể trạng thái của chúng.
- -N hiển thị giá trị số của các cổng thay vì phân giải thành tên dịch vụ. Ví dụ: hiện port 21 thay vì FTP, tức là dịch vụ chạy trên port.
3. Kiểm tra các cổng đang mở bằng Nmap
Nmap là một trong những công cụ phổ biến nhất trong an ninh mạng và kết nối mạng. Đó là một cái tên chủ yếu khi nói đến thử nghiệm thâm nhập an ninh mạng. Trường hợp sử dụng chính của nó là quét cổng, vì vậy bạn không chỉ nhận được thông tin về các cổng đang mở trong hệ thống của mình mà còn biết liệu chúng có dễ bị tấn công hay không.
Hơn nữa, nếu bạn muốn kiểm tra các cổng đang mở trong một hệ thống từ xa đã thiết lập IDS/IPS và có sẵn tường lửa, đừng lo lắng vì Nmap cũng có thể vượt qua tường lửa và IDS/IPS bằng các công tắc phù hợp.
Hãy xem hướng dẫn toàn diện này về Nmap dành cho người mới bắt đầu để khám phá các tính năng đa dạng của Nmap và cách sử dụng chúng. Mặc dù bạn có thể, nhưng không nên cố gắng vượt qua tường lửa vì nó không hoàn toàn đáng tin cậy, vì vậy tốt nhất là bạn SSH vào máy chủ từ xa và sau đó chạy Nmap cục bộ trên đó.
Đây là lệnh để kiểm tra các cổng đang mở với Nmap:
nmap -sTU -sV <ip-address> -T 5 --min-rate 9000 --min-parallelism 9000 --initial-rtt-timeout 50ms --max-rtt-timeout 3000ms --max-retries 50 -Pn --disable-arp-ping -n --script vuln,exploit,auth -v -oX <filename>
Giải thích lệnh:
- -sTU đặt loại quét thành Kết nối TCP và quét UDP.
- -T 5 đặt mẫu thời gian thành tích cực để quét nhanh chóng (không được khuyến nghị trên hệ thống không được bảo vệ vì nó có thể dẫn đến một cuộc tấn công DoS).
- -sV bật quét dịch vụ.
- –tỷ lệ tối thiểu 9000 yêu cầu Nmap gửi 9000 gói mỗi giây.
- –initial-rtt-timeout 50ms yêu cầu Nmap ban đầu đợi 50 mili giây để nhận phản hồi đối với mỗi gói SYN mà nó gửi.
- –max-rtt-thời gian chờ 3000ms yêu cầu Nmap đợi tối đa 3000 mili giây để nhận phản hồi.
- –min-song song 9000 đặt số tập lệnh chạy đồng thời tối thiểu là 9000.
- –max-thử lại 50 yêu cầu Nmap thử lại 50 lần để kết nối với một cổng.
- -pn vô hiệu hóa thăm dò ping.
- –disable-arp-ping vô hiệu hóa thăm dò ARP.
- -N vô hiệu hóa độ phân giải DNS.
- –script vuln,khai thác,auth chạy ba tập lệnh để kiểm tra các loại lỗ hổng khác nhau trong các cổng được phát hiện.
- -v trả về một đầu ra dài dòng.
- -con bò đực lưu kết quả vào một tệp XML.
- -6 Tham số tùy chọn để quét địa chỉ IPv6.
4. Kiểm tra các cổng đang mở với lsof
Lệnh lsof trong Linux được sử dụng để liệt kê các tệp đang mở. Tuy nhiên, nếu bạn thêm một vài công tắc vào nó, bạn sẽ có thể thấy các cổng và kết nối internet đang mở trên máy cục bộ của mình. Đây là cách kiểm tra các cổng đang mở với lsof:
lsof -i -n
Giải thích lệnh:
- -Tôi liệt kê tất cả các tệp mạng và internet.
- -N không giải quyết tên máy chủ.
5. Kiểm tra cổng mở bằng netcat
netcat là một tiện ích dòng lệnh cho phép bạn đọc và ghi từ và tới các kết nối TCP/UDP. Lưu ý rằng đây chỉ là một tính năng của netcat. Bạn có thể kiểm tra trang hướng dẫn của nó bằng cách sử dụng người đàn ông mèo lệnh để khám phá tất cả các tính năng của nó và cách sử dụng chúng.
Đây là cách bạn có thể sử dụng netcat để quét các cổng đang mở:
nc -zv <ip-address> <start_port-end_port> | grep -v "refused"
Giải thích lệnh:
- -z đặt netcat ở chế độ máy quét.
- -v trả về một đầu ra dài dòng.
- grep -v “từ chối” trả về các dòng đầu ra không có từ “từ chối”. Điều này là để ngăn thiết bị đầu cuối bị tắc với thông báo “kết nối bị từ chối” khi netcat không nhận được đầu ra từ một cổng.
- 2>&1: Đây là một công tắc tùy chọn mà bạn có thể cần bật để grep hoạt động khi chạy netcat ở chế độ dài dòng. netcat trả về đầu ra cho thiết bị lỗi chuẩn (ký hiệu là 2). Vì vậy, để grep đầu ra, bạn phải chuyển hướng thiết bị xuất chuẩn sang thiết bị xuất chuẩn (ký hiệu là 1) và sau đó chuyển nó thành grep.
Bạn càng hiểu sâu về mạng của mình, bạn càng có thể bảo vệ nó tốt hơn
Biết cổng nào đang mở và dịch vụ nào đang chạy trên hệ thống của bạn là một bước tuyệt vời để bảo vệ hệ thống khỏi các cuộc tấn công tiềm tàng từ bên ngoài. Điều này cho phép bạn tìm kiếm và tắt các dịch vụ không cần thiết, tìm các dịch vụ lỗi thời, đồng thời phát hiện xem có bất kỳ tệp độc hại nào chẳng hạn như các cửa hậu liên kết hoặc đảo ngược shell đang chạy trên hệ thống của bạn hay không.
Nếu bạn nghiêm túc về bảo mật mạng, bạn nên xem xét việc cài đặt và thiết lập giải pháp IDS để giám sát tất cả hoạt động trên mạng của mình và thực thi các bộ quy tắc để ngăn chặn các kết nối không mong muốn.