Bài viết sẽ hướng dẫn từng bước về cách sử dụng lệnh netstat trên Linux để theo dõi các kết nối mạng và phát hiện các hoạt động đáng ngờ. Chi tiết sau đây.
Trong môi trường hệ thống Linux, việc quản lý và giám sát mạng là một phần quan trọng trong việc duy trì hoạt động ổn định của hệ thống. Lệnh netstat là một công cụ mạnh mẽ sẽ giúp quản trị viên hệ thống có thể xem và quản lý các kết nối mạng, các bảng định tuyến, giao thức mạng và các thông tin quan trọng khác. Trong bài viết này, chúng ta sẽ tìm hiểu về lệnh netstat và cách sử dụng lệnh netstat trên Linux để giải quyết các vấn đề mạng và bảo mật.
I. Netstat là gì?
Lệnh netstat là một công cụ dòng lệnh cung cấp thông tin chi tiết về các kết nối mạng đang hoạt động trên hệ thống. Nó sẽ cung cấp cho chúng ta một cái nhìn tổng quan về trạng thái mạng của hệ thống.
- Với lệnh netstat, bạn có thể:
- Xem các kết nối mạng đang hoạt động
- Xem danh sách các cổng đang lắng nghe
- Xem bảng định tuyến
- Theo dõi lưu lượng mạng
- Phân tích các vấn đề về mạng
- Bảo mật mạng,.....
>>> Xem thêm: Hướng dẫn sử dụng lệnh “ss” giám sát kết nối mạng trên Linux
II. Cách sử dụng lệnh netstat trên Linux
Trước khi sử dụng lệnh netstat, chúng ta cần hiểu về câu lệnh này.
1. Cú pháp và các tùy chọn của lệnh netstat trên Linux
Cú pháp của lệnh netstat đơn giản như sau:
netstat [options] |
Trong đó, options là các tùy chọn để chỉ định các thông tin cụ thể cần hiển thị. Có một số tùy chọn phổ biến như sau:
- netstat -a: Hiển thị tất cả các kết nối và cổng(bao gồm cả những kết nối không hoạt động)
- netstat -t: Hiển thị các kết nối TCP
- netstat -u: Hiển thị các kết nối UDP
- netstat -l: Hiển thị danh sách các cổng đang lắng nghe
- netstat -r: Hiển thị bảng định tuyến
- …..
Còn nhiều các tùy chọn mà bạn có thể dùng netstat -h để có thể xem bảng hiển thị chi tiết hơn về các tùy chọn này.
2. Đầu ra mặc định của lệnh netstat
Khi bạn nhập lệnh mặc định của netstat:
netstat |
Câu lệnh trên sẽ trả về đầu ra mặc định của lệnh, bao gồm hai thành phần chính:
- Active Internet connections: Cung cấp thông tin về các kết nối mạng hiện đang hoạt động trên hệ thống dựa trên giao thức mạng
- Active UNIX domain sockets: Cung cấp thông tin về các kết nối mạng hiện đang hoạt động trên hệ thống dựa trên giao thức UNIX
2.1. Các trường trong Active Internet connections:
Các cột thông tin trong mục này sẽ bao gồm:
- Proto: Loại giao thức mạng, có thể là TCP hoặc UDP
- Recv-Q: Số lượng packet được nhận đang đợi
- Send-Q: Số lượng packet được gửi đang đợi
- Local Address: Địa chỉ IP nguồn và số cổng
- Foreign Address: Địa chỉ IP đích và số cổng
- State: Trạng thái của kết nối
Thông qua các cột thông tin truong Active Internet, người dùng có thể theo dõi và kiểm tra các kết nối TCP và UDP đang hoạt động trên hệ thống, cũng như xác định được các cổng mạng đang lắng nghe và chờ kết nối từ máy tính khác
2.2. Các trường trong Active UNIX domain sockets
Các cột thông tin trong mục này sẽ bao gồm
- Proto: Loại giao thức, thường là unix
- RefCnt: Số lượng tham chiếu tới socket
- Flags: Các cờ mô tả trạng thái của socket
- Type: Loại socket, chẳng hạn như STREAM(luồng) hoặc DGRAM(datagram)
- State: Trạng thái của socket, chẳng hạn như CONNECTED, LISTENING hoặc CLOSED
- I-NODE: Số inode của socket
- Path: Đây là đường dẫn của socket trong không gian tệp hệ thống tương ứng với kết nối UNIX domain
Phần Active UNIX sẽ cho phép người dùng xem thông tin chi tiết về các kết nối sử dụng giao thức UNIX domain socket, nó sẽ đặc biệt hữu ích trong việc tương tác giữa các tiến trình trên cùng một hệ thống UNIX
>>> Xem thêm: Thao Tác Thêm, Sửa, Xóa, Copy, Đổi Tên File và Folder Trong Linux
III. Một số ví dụ sử dụng lệnh netstat trên Linux
Tùy các bản phân phối của Linux, có một số bản có thể sẽ không được tích hợp sẵn câu lệnh netstat. Nếu máy của bạn chưa có câu lệnh này, chúng ta có thể thực hiện cài đặt như sau
# Đối với các máy như Ubuntu sudo apt install -y net-tools # Đối với các máy như CentOS sudo yum install -y net-tools |
1. Hiển thị bảng thống kê về mạng
Việc xem bảng thống kê về mạng sẽ giúp chúng ta nắm được tình trạng mạng của hệ thống. Để thực hiện điều này, chúng ta thực hiện như sau:
netstat -s |
Đầu ra sẽ trông như sau:
Lệnh này sẽ hiển thị các giao thức mạng trong hệ thống, trong mỗi giao thức này sẽ hiển thị các thông tin như:
- Số lượng gói tin đã gửi và đã nhận
- Số lượng gói tin bị lỗi
- Số lượng gói tin bị rơi,....
2. Xem thông tin về các kết nối TCP, UDP bao gồm cả tên chương trình đang sử dụng kết nối
Để xem được thông tin về các kết nối mạng bao gồm cả tên chương trình đang sử dụng kết nối thì chúng ta thực hiện như sau:
# Lệnh này bao gồm các options -a, -u, -t, -n, -p netstat -autnp # Lưu ý rằng bạn sẽ cần quyền roots để hiển thị số PID và tên chương trình sudo netstat -autnp |
Đầu ra sẽ trông như sau:
3. Xem bảng định tuyến mà không ẩn địa chỉ IP và số cổng
Đôi khi đầu ra của lệnh netstat sẽ tự động thay thế địa chỉ IP và số cổng thành tên miền và tên dịch vụ. Vì vậy để xem được rõ các mục này, chúng ta thực hiện như sau:
# Sử dụng hai options là -r và -n netstat -rn |
Kết quả sẽ hiển thị như sau:
ducmanh287@ubuntusv:~$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.217.2 0.0.0.0 UG 0 0 0 ens33 192.168.217.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33 192.168.217.2 0.0.0.0 255.255.255.255 UH 0 0 0 ens33 |
Trong đó gồm các cột thông tin:
- Destination: Địa chỉ mạng đích hoặc địa chỉ IP mà các gói tin được định tuyến tới.
- Gateway: Địa chỉ IP của gateway được sử dụng để định tuyến các gói tin tới đích đến.
- Genmask: Mặt nạ mạng được áp dụng cho đích đến, quy định các bit trong địa chỉ IP nào được coi là mạng cụ thể.
- Flags: Các cờ định tuyến như U (up - đang hoạt động), H (host - địa chỉ đích là một máy chủ địa phương), G (gateway - địa chỉ đích là một gateway), và khác.
- Iface: Giao diện mạng được sử dụng để gửi các gói tin tới đích đến.
- Và một số thông tin bổ sung như MSS-kích thước tối đa của dữ liệu, Window-khả năng nhận dữ liệu, irrt-thời gian mà một gói tin cần để đi đến đích
>>> Xem thêm: Các câu lệnh lọc dữ liệu file trong Linux
IV. Sử dụng lệnh netstat kết hợp với các lệnh khác trên Linux
Việc lọc thông tin với lệnh netstat cũng rất đa dạng khi bạn có thể sử dụng netstat kết hợp với các lệnh khác. Dưới đây là một số ví dụ:
1. Hiển thị danh sách các kết nối TCP theo thời gian thực
Để xem được danh sách các kết nối TCP theo thời gian thực, chúng ta sẽ kết hợp lệnh watch và netstat. Việc thực hiện như sau:
watch -n 1 'netstat -atn' |
Trong đó:
- watch là một lệnh trong Linux được sử dụng để theo dõi sự thay đổi của một lệnh hoặc một tập lệnh khác trong khoảng thời gian nhất định
- watch -n 1: Tùy chọn này chỉ định khoảng thời gian mà câu lệnh sau nó được lặp lại
- 'netstat -atn': Đây là câu lệnh hiển thị tất cả các kết nối TCP
Đầu ra sẽ trông như sau:
2. Xem số lượng kết nối mạng đang mở trên hệ thống
Để biết được số lượng kết nối mạng đang mở trên hệ thống, chúng ta sử dụng lệnh netstat kết hợp với lệnh wc như sau:
ducmanh287@ubuntusv:~$ netstat -ant | wc -l 10 ducmanh287@ubuntusv:~$ |
Trong đó:
- Lệnh wc -l sẽ được dùng để đếm số lượng dòng trong đầu vào
- Đầu vào là netstat -ant để hiển thị các kết nối tcp trên hệ thống
- wc -l được sử dụng để đếm số lượng dòng trong kết quả đầu ra của lệnh netstat -ant, tức là số lượng kết nối TCP đang mở trên hệ thống.
3. Kiểm tra các cổng mạng được sử dụng bởi dịch vụ SSH
Mặc định dịch vụ SSH sẽ sử dụng cổng 22 cho dịch vụ của mình. Vậy nên chúng ta sẽ kết hợp lệnh netstat và lệnh grep để tìm kiếm cổng 22 như sau:
ducmanh287@ubuntusv:~$ netstat -tln | grep :22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN |
V. Tổng kết
Qua bài viết trên, chúng ta cũng đã phần nào hiểu được khái niệm về lệnh netstat và cách sử dụng netstat trên Linux. Sử dụng netstat là một kỹ năng cần thiết cho bất kỳ quản trị viên hệ thống nào. Bằng cách hiểu cách sử dụng và giải thích kết quả từ lệnh này, họ có thể duy trì hệ thống mạng của mình trong tình trạng hoạt động ổn định và an toàn. Trở lại suncloud.vn để cập nhật thêm các kiến thức Linux bổ ích khác nữa nhé.