Máy chủ Linux đang chạy và bạn muốn kiểm tra xem một cổng cụ thể có đang mở không để bạn có thể truy cập cổng đó từ xa. Check open port là một nhiệm vụ khá phổ biến đối với các quản trị viên hệ thống và có một số cách khác nhau để thực hiện việc này trong Linux.
Open port là gì?
Thuật ngữ port đề cập đến một điểm cuối giao tiếp hoặc nơi bắt đầu và kết thúc của tất cả các giao tiếp mạng. Một cổng xác định một quy trình hoặc dịch vụ cụ thể và được gán một số tùy thuộc vào mục đích chuyên biệt của nó.
Nói một cách đơn giản hơn, các cổng cho phép các thiết bị biết phải làm gì với dữ liệu nhận được. Chẳng hạn, email được định tuyến qua một cổng khác (port 25) so với các trang web (port 80). Một cổng hiện đang được sử dụng không thể chạy dịch vụ khác trên cổng đó và sẽ trả về thông báo lỗi.
Tầng giao vận (transport layer) của bộ giao thức internet, chẳng hạn như Transmission Control Protocol (TCP) và User Datagram Protocol (UDP), sử dụng các cổng để truyền và nhận các khối thông tin, được gọi là packet.
Một open port đề cập đến một số cổng TCP hoặc UDP đang tích cực chấp nhận các packet. Nói cách khác, đằng sau đó là một hệ thống đang tiếp nhận thông tin liên hệ. Mặt khác, một close port sẽ từ chối hoặc bỏ qua các packet.
Việc check open port có liên quan đến vấn đề một số cổng được dành riêng cho các giao thức cụ thể và do đó bắt buộc phải mở. Ngoài ra, các cổng mở tùy thuộc vào cấu hình tường lửa hoặc hệ điều hành của người dùng: những gì đang mở trên cổng này có thể bị đóng trên cổng khác.
Tại sao cần check open port?
Các open port không phải là vấn đề, các ứng dụng và dịch vụ lắng nghe trên các cổng này. Tuy nhiên, kẻ tấn công có thể khai thác điểm yếu trong các ứng dụng đang lắng nghe trên một cổng. Tin tặc có thể lợi dụng các lỗ hổng bảo mật trong phần mềm cũ hơn, chưa được vá lỗi, thông tin đăng nhập yếu và các dịch vụ được định cấu hình sai để xâm phạm mạng.
Một số cổng không có ý định được công khai. Chẳng hạn, giao thức Server Message Block (SMB), hoạt động trên các cổng TCP 139 và 445, được mở theo mặc định trên các máy Windows. Nó chỉ dành cho chia sẻ tệp, chia sẻ máy in và quản trị từ xa.
Do đó, người dùng cần phải tiến hành check open port thường xuyên để chắc chắn những port cần được được open đang mở, những port không được phép công khai thì đang không open. Điều này có thể đảm bảo sự hạn chế việc tấn công và xâm nhập từ tin tặc trước các lỗ hổng của ứng dụng.
Có nhiều công cụ có thể quét địa chỉ IP mục tiêu (hoặc các dải địa chỉ IP) và báo cao về các open port, nghĩa là cổng đó có phần mềm lắng nghe lưu lượng truy cập trên đó. Những công cụ check open port này khá dễ sử dụng và sẵn có. Một số trình quét cổng, ví dụ như nmap, Netstat, Advanced Port Scanner và nhiều trình quét cổng khác, bao gồm hầu hết các trình quét lỗ hổng.
Thực tế có hàng ngàn máy quét port để người dùng lựa chọn, mặc dù nmap, được phát hành lần đầu tiên vào năm 1997, chắc chắn là công cụ được biết đến nhiều nhất. Những công cụ này sẽ được nói nhiều hơn trong phần sau của bài viết.
Tại sao hacker scan các open port?
Việc check open port không chỉ là một bước cần thiết trong việc kiểm tra hoạt động của hệ thống, mà còn là phương pháp nhằm giảm thiểu tối đa sự tấn công từ những kẻ xấu tới open port. Vậy tại sao những kẻ tấn công lại nhắm tới các cổng mở?
Những kẻ tấn công sử dụng các cổng mở để tìm cách khai thác tiềm năng. Để khai thác, chúng cần tìm một lỗ hổng. Để tìm ra lỗ hổng, chúng lấy dấu vân tay của tất cả các dịch vụ chạy trên máy, bao gồm giao thức sử dụng, chương trình triển khai chúng và lý tưởng nhất là phiên bản của các chương trình đó.
Để làm điều này, những kẻ tấn công thường dựa vào việc tìm kiếm một port có thể truy cập công khai thông qua việc scan.
Ví dụ, nmap sẽ lấy dấu vân tay và báo cáo phần mềm, ứng dụng được tìm thấy đang chạy trên máy chủ, đôi khi có thông tin của phiên bản. Các version lỗi thời có thể có các lỗ hổng được công khai, mà phần mềm như metasploit có thể nhắm mục tiêu vào.
Cách check open port Linux
Các chuyên gia nhận định rằng việc thường xuyên theo dõi và kiểm tra hoạt động của một hoặc nhiều cổng kết nối (check open port) trên hệ thống là việc khá hữu ích. Những ví dụ được nêu ra dưới đây sẽ chỉ rõ hơn về cách kiểm tra cổng kết nối (port) đang mở trên Linux.
Một số lệnh thường được sử dụng trong quá trình kiểm tra cổng đang mở trên Linux bao gồm:
- netstat
- ss
- telnet
- nmap
Sử dụng chương trình “netstat”
“Netstat” là viết tắt của Network Statistic, một chương trình có trên cả hệ điều hành Windows và Linux. Netstat giúp người dùng thống kê được các thông tin liên quan đến mạng, các kết nối đang được thiết lập, các port đang được mở trên hệ thống Linux,…
*Lưu ý: Trên các hệ thống Systemd như CentOS 7 hay Ubuntu 16.04, chương trình này mặc định là không được cài đặt (thường các nhà cung cấp đã cài sẵn, trừ khi bạn cài thủ công máy chủ thật).
Sau đây là một số ví dụ của “netstat” giúp check open port đang được sử dụng trên Linux.
- Kiểm tra open port TCP:
netstat -ltnp
- Kiểm tra open port UDP:
netstat -lunp
Với 2 output dành cho các cổng kết nối TCP và UDP trên, người dùng sẽ thấy trong cột trạng thái “State” là “LISTEN” và cả tên tiến trình đang hoạt động lắng nghe kết nối trên các port được sử dụng đó.
Sử dụng chương trình lệnh “ss”
Chương trình ss có khả năng cung cấp cho người dùng thông tin về network/socket kết nối tốt hơn và nhanh hơn nhiều so với công cụ truyền thống “netstat”. Với một vài option đơn giản, bạn sẽ biết được port dịch vụ nào đang được mở trên Linux.
- Check port TCP đang sử dụng
ss -lnt
- Check port UDP đang sử dụng
ss -lnu
Chương trình lệnh “telnet”
Sử dụng chương trình lệnh “telnet” để check open port trên máy chủ Linux là một phương pháp vô cùng phổ biến. Hoạt động của lệnh là mở một kết nối đến port dịch vụ cần kiểm tra, nếu không mở được tức là port dịch vụ đó không mở.
Cấu trúc sử dụng “telnet“
# telnet [ip máy chủ] [số port]
Ví dụ 1:
- Bạn kiểm tra cổng SSH (22) của máy chủ remote. Kết quả dưới là có port 22 mở.
# telnet 103.63.213.61 22
Trying 103.63.213.61...
Connected to 103.63.213.61.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3
- Bạn kiểm tra cổng SSH (22) của máy chủ remote. Kết quả dưới là có port 22 không mở.
# telnet 103.63.213.62 22
Trying 103.63.213.62...
telnet: connect to address 103.63.213.62: Connection timed out
Chương trình “nmap”
Chương trình lệnh Nmap là công cụ sử dụng cho hoạt động kiểm tra bảo mật hệ thống. Nhiệm vụ chính là quét ra thông tin giúp check open port trên một máy chủ, từ đó có thể xác định các dịch vụ mạng đang được lắng nghe thông qua open port kết nối trên hệ thống đó.
Việc cài đặt chương trình “nmap” được thực hiện theo các bước như sau :
- CentOS
# yum install -y nmap
- Ubuntu
# apt-get install -y namp
>> Cấu trúc lệnh “nmap”
# nmap [option] [ip may chu]
>> Hãy chạy lệnh “nmap” với option để kiểm tra port đang mở trên máy chủ dịch vụ.
# nmap 123.69.234.69
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 13:55 +07
Nmap scan report for no-ptr.ehost.vn (123.69.234.69)
Host is up (0.0018s latency).
Not shown: 984 filtered ports
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
2222/tcp open EtherNet/IP-1
8000/tcp closed http-alt
35500/tcp closed unknown
Nmap done: 1 IP address (1 host up) scanned in 21.79 seconds
Sử dụng website check open port trực tuyến
Do một số vấn đề phát sinh hoặc không có quyền hạn truy cập vào hệ thống của 1 website hay 1 VPS, bạn khó có thể kiểm tra được các port nào đang được mở trên hệ thống Linux. Có 01 cách đơn giản cho trường hợp này là sử dụng các dịch vụ trung gian hỗ trợ quét các port thông dụng được mở trên server Linux.
Sau đây là một số website giúp bạn scan port trực tuyến bằng cách nhập địa chỉ IP hoặc tên miền của máy chủ cần quét port:
- Pentest-tools
- Mxtoolbox
Trên đây là một số thông tin hữu ích liên quan đến việc check open port Linux để bạn có thể tham khảo. Nếu có bất kỳ thắc mắc nào cần được giải đáp nhanh chóng, bạn có thể liên hệ ngay với HVN – Hệ sinh thái kiến tạo doanh nghiệp 4.0 – qua Hotline 024.9999.7777, các chuyên gia với nhiều năm kinh nghiệm hoạt động trong lĩnh vực sẽ ngay lập tức giải đáp giúp bạn.