Cách sử dụng Port Knocking trong Linux để bảo mật máy chủ SSH

Tác giả: VPS chính hãng 30 tháng 03, 2023

Bạn cần bảo vệ hệ thống Linux của mình khỏi các trình quét tự động để bảo mật máy chủ SSH. Bằng cách tạo một kết nối trên một tập hợp các cổng đã đóng được xác định trước. Port Knocking là một kỹ thuật được sử dụng trong mạng máy tính để mở các cổng tường lửa bên ngoài. Bài viết này sẽ hướng dẫn cách sử dụng Port Knocking trong Linux để bảo mật máy chủ SSH. 

Port Knocking là gì?

Bằng cách giới hạn quyền truy cập vào dịch vụ máy chủ đối với người dùng được ủy quyền, Port Knocking là một phương pháp thông minh để hạn chế quyền truy cập vào một cổng. Một trong những ưu điểm của phương pháp này là các cổng được bảo vệ bởi Port Knocking sẽ hiển thị là không khả dụng để quét cổng tiêu chuẩn. Port Knocking hoạt động với sự trợ giúp của tường lửa để cung cấp khả năng chặn hiệu quả bằng cách phát hiện người dùng hợp pháp và cho phép khách hàng kết nối với đúng cổng. Sau đó, tường lửa sẽ mở cổng đã bị đóng. Nếu bạn đã mua VPS Linux của riêng mình và cân nhắc việc cải thiện tính bảo mật của nó, thì Port Knocking là một trong những kỹ thuật tốt nhất để bảo mật máy chủ của bạn.

Port Knocking hạn chế quyền truy cập vào một cổng

Port Knocking hạn chế quyền truy cập vào một cổng

Hướng dẫn sử dụng Port Knocking trong Linux để bảo mật SSH Server

Sử dụng tính năng Port Knocking bạn có thể hạn chế quyền truy cập vào các dịch vụ của máy chủ đối với những người dùng được ủy quyền. Vì tường lửa Port Knocking SSH từ thế giới bên ngoài nên người dùng sẽ không thể kết nối trực tiếp với cổng SSH 22. Để tạm thời thay đổi quy tắc tường lửa và mở cổng SSH 22 cho người dùng, máy chủ sẽ chạy một trình nền knockd. Chỉ những người dùng được ủy quyền với trình tự knockd thích hợp mới có khả năng để mở một cổng SSH. Một trình tự knockd khác sẽ được sử dụng để đóng cổng SSH khi người dùng được ủy quyền yêu cầu đăng xuất.

Theo cách này, chỉ những người dùng được ủy quyền với trình tự knockd thích hợp mới có khả năng để mở một cổng SSH. Một trình tự khác được sử dụng để đóng cổng SSH khi người dùng được ủy quyền yêu cầu đăng xuất. Vì vậy, để sử dụng Port Knocking trong Linux để bảo mật máy chủ SSH, bạn cần tìm hiểu cách cài đặt và định cấu hình knocked cũng như thiết lập quy tắc tường lửa để ẩn máy chủ SSH, nhằm không cho người dùng có ác ý phát hiện ra chúng trên mạng công cộng.

Trình tự knockd thích hợp mới có khả năng để mở một cổng SSH

Trình tự knockd thích hợp mới có khả năng để mở một cổng SSH

Hướng dẫn này sẽ trình bày cách cài đặt và định cấu hình Port Knocking để bảo mật dịch vụ SSH của bạn bằng Ubuntu. Lưu ý: Để ẩn máy chủ SSH bằng SSH Port Knocking, bạn sẽ cần phải có hệ điều hành Linux với máy chủ OpenSSH để cố gắng ẩn nó. Vì vậy, hãy đảm bảo có quyền truy cập SSH vào máy chủ với đặc quyền sudo. Nếu bạn đã sẵn sàng, hãy thực hiện các bước của hướng dẫn này để bảo mật dịch vụ SSH.

Bước 1: Cài đặt và cấu hình knockd trên Linux Server

Khi bạn đã đăng nhập vào hệ thống Linux của mình, hãy sử dụng lệnh bên dưới để cài đặt trình nền knockd. Điều này có thể được sử dụng trên Ubuntu và Debian.

$ sudo apt install knockd

Sau khi cài đặt thành công, hãy sử dụng trình soạn thảo văn bản yêu thích của bạn để mở cấu hình knockd.conf với nó. Trong hướng dẫn này, trình soạn thảo văn bản nano đang được sử dụng.

sudo nano /etc/knockd.conf

Bây giờ, bạn phải thay đổi ba mục trong tệp này:

1– Tìm phần [openSSH] trong đầu ra để thay đổi trình tự gõ mặc định – 7000,8000,9000 – thành bất kỳ thứ gì bạn muốn (Chẳng hạn như 10001,10002,10003. Vì các giá trị này có thể gây nguy hiểm cho bảo mật hệ thống của bạn. Đây là trình tự sẽ được sử dụng để mở cổng SSH từ hệ thống máy khách.

2– Trong lệnh iptables, thay đổi -A thành -I. Trong khi tất cả các địa chỉ IP khác không được phép kết nối với cổng SSH, thì knockd có thể thực thi lệnh iptables này để mở cổng SSH cho địa chỉ IP của bạn.

3– Cuối cùng, thay đổi trình tự mặc định theo ý thích của bạn (chẳng hạn như 10003,10002,10001) trong [closeSSH]. Trình tự đã chọn sẽ là trình tự được sử dụng để đóng kết nối SSH sau khi người dùng quyết định đăng xuất khỏi máy chủ.

Khi bạn hoàn tất việc thay đổi ba điều được giải thích ở trên, hãy lưu các thay đổi và đóng tệp để thoát.

Tiếp theo, để kiểm tra và xem tên giao diện mạng chính trên máy chủ, hãy chạy lệnh sau:

ip addr

Ở đây, có một tệp cấu hình khác cần được chỉnh sửa. Một lần nữa, hãy mở trình soạn thảo văn bản của bạn để sửa đổi:

$ sudo nano /etc/default/knockd

Hãy tìm dòng:

START_KNOCKD=0

Để bật tự động khởi động khi khởi động hệ thống, hãy thay đổi 0 thành 1.

START_KNOCKD=1

Mặc dù knockd lắng nghe trên giao diện eth0 theo mặc định, nhưng bạn có thể phát hiện ra rằng giao diện của mình thì không. Để thay đổi nó, hãy tìm dòng bên dưới:

#KNOCKD_OPTS="-i eth1"

Bây giờ, để thay đổi eth1 thành tên của giao diện mạng chính trên máy chủ của bạn, bạn chỉ cần xóa #.

KNOCKD_OPTS="-i ens18"

Lưu và đóng tập tin.

Bây giờ, đã đến lúc bắt đầu và kích hoạt knockd daemon. Vì vậy, hãy chạy:

$ sudo systemctl start knockd
$ sudo systemctl enable knockd

Ngoài ra, để kiểm tra xem nó có đang chạy hay không, hãy nhập lệnh bên dưới để xem trạng thái hiện tại:

$ sudo systemctl status knockd

Bước 2: Đóng Cổng SSH 22

Bạn cần đóng cổng ssh trên tường lửa. Để bắt đầu, hãy kiểm tra trạng thái của tường lửa UFW và xem các quy tắc của nó.

$ sudo ufw status numbered

Ví dụ: nếu bạn thấy cổng SSH 22 đang mở trên dòng 3 và 9, hãy chạy lệnh bên dưới để xóa các quy tắc mở cổng SSH.

sudo ufw delete 9
sudo ufw delete 3

Theo cách này, lỗi hết thời gian kết nối sẽ xảy ra nếu bạn cố gắng đăng nhập từ xa và dịch vụ SSH sẽ không đáp ứng yêu cầu của bạn. Bắt đầu với số chỉ mục lớn hơn không phải là tùy chọn và bạn nên xóa các quy tắc theo cùng một thứ tự.

Bước 3: Sử dụng Knock Client để kết nối với SSH Server

Bạn cần tìm hiểu cách định cấu hình ứng dụng khách. Để thực hiện việc này, hãy thử đăng nhập bằng cách gửi chuỗi knockd mà bạn đã định cấu hình trên máy chủ.

Trình nền knockd phải được cài đặt.

$ sudo apt install knockd

Khi bạn hoàn tất cài đặt, hãy chạy lệnh bên dưới để gửi trình tự knockd .

$ knock -v server_ip knock_sequence

Gửi trình tự knockd chính xác từ máy khách để kích hoạt tường lửa máy chủ tới cổng TCP 22.

knock -v 10.0.0.104 10001 10002 10003

Sau khi knockd thành công, bạn sẽ có thể SSH vào máy chủ của mình. Sau đó, có thể sử dụng port knocking để đóng cổng SSH cho địa chỉ IP cụ thể của bạn.

knock -v 10.0.0.104 10003 10002 10001

Vì knockd chỉ phản hồi chuỗi được gửi đến giao diện mạng chính, nên nó sẽ không thể mở cổng SSH khi máy chủ có nhiều địa chỉ IP hay khi bạn muốn gửi chuỗi trên một địa chỉ IP khác.

Trong bài viết này, bạn đã biết cách sử dụng Port Knocking trong Linux để bảo mật máy chủ SSH. Hãy nhớ rằng Port Knocking không nên được sử dụng một mình như một biện pháp bảo mật. Nó nên được sử dụng kết hợp với các biện pháp khác. Nếu bạn thực hiện đúng các bước trên thì bạn có thể cài đặt Apache Tomcat một cách suôn sẻ mà không gặp bất kỳ lỗi nào. Chúc các bạn thành công!