Bài viết sẽ hướng dẫn cách cấu hình stunnel trên một máy chủ SSH để cho phép SSH kết nối thông qua cổng 443 (https).
Lí do, đằng sau một firewall luôn hạn chế chỉ cho phép lưu lượng truy cập ra bên ngoài http(s), nhưng chạy SSH trên cổng 443 (https) thì những kết nối này đã bị từ chối.
Cấu hình này được thực hiện trong hai phần. Phần đầu được thực hiện trên máy chủ SSH từ xa, phần thứ hai được thực hiện trên máy tính cục bộ. Trong trường hợp này chúng ta sẽ chạy một Ubuntu Server và Ubuntu Desktop phía client.
1. Hướng dẫn Server Side:
Trước hết, chúng ta cần phải cài đặt gói stunnel:
sudo apt-get install stunnel4
Cấu hình stunnel với mộtSSL certificate và một tập tin cấu hình.
+ SSL certificate:
openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 1000 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
sudo mv stunnel.pem /etc/stunnel/
Cấu hình stunnel để đường hầm 443 (https) đến 22 (ssh):
Theo mặc định stunnel không cung cấp bất kỳ tập tin cấu hình. Chúng ta sẽ tạo ra một tập tin cấu hình đơn giản để đáp ứng các nhu cầu sử dụng SSH trên SSL.
Tạo một tập tin mới, /etc/stunnel/stunnel.conf và sao chép các nội dung như sau:
pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = public_ip:443
connect = 127.0.0.1:22
Các cấu hình ở trên sẽ cho stunnel biết để tìm thấy certificatemà chúng ta tạo ra và nơi để chấp nhận các kết nối và chuyển tiếp. Trong trường hợp này stunnel sẽ lắng nghe trên public_ip và cổng 443 (https) đồng thời chuyển hướng kết nối trở lại với localhost trên cổng 22 (ssh).
Để khởi chạy dịch vụ stunnel chúng ta phải kích hoạt trong /etc/default/stunnel4. Thay đổi dòng ENABLED 0-1.
Cuối cùng, chúng ta có thể khởi chạy dịch vụ và chuyển sang cấu hình client:
sudo service stunnel4 start
Kiểm tra stunnel đang lắng nghe bằng cách sử dụng lệnh netstat như sau:
netstat -natp | grep :443
2. Hướng dẫn Client Side:
Phần còn lại của hướng dẫn được thực hiện trên máy tính cục bộ.
Như đã được thực hiện trên máy chủ, chúng ta sẽ cài đặt các gói stunnel trên client:
sudo apt-get install stunnel4
Các cấu hình client cũng cần SSL certificate tương tự ở trên. Sao chép/dán hoặc sao chép các tập tin .pem đã tạo ra trong Server Side và lưu chúng vào cùng một vị trí, /etc/stunnel/stunnel.pem.
Chúng ta cần tạo một tập tin cấu hình tương tự, sẽ thay đổi việc đồng ý và các phiên kết nối. Sử dụng ví dụ dưới đây để đưa /etc/stunnel/stunnel.conf về máy client.
pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = 127.0.0.1:2200
connect = remote_ip:443
Với các tập tin cấu hình và certificate đã có, chúng ta đã sẵn sàng để cho phép stunnel và khởi chạy dịch vụ. Kích hoạt dịch vụ (như trên) trong /etc/default/stunnel4 và sau đó khởi chạy dịch vụ.
sudo service stunnel4 start
Tạo kết nối
Với dịch vụ stunnel bây giờ đang chạy trên cả Server và Client, chúng ta đã sẵn sàng cho các kết nối an toàn. Bây giờ khi bạn kết nối với máy tính cục bộ của bạn trên cổng 2200, nó sẽ thực hiện một kết nối đến IP từ xa trên cổng 443, tạo ra một kết nối an toàn SSL, và kết nối với cổng 22 ở đầu bên kia (client). Các kết nối SSH mã hóa bây giờ được bao bọc trong một kết nối SSL được mã hóa sử dụng cổng 443.
ssh localhost -p 2200
Stunnel có thể được sử dụng để mã hóa một loạt các dịch vụ. Trong trường hợp này tạo ra một kết nối SSL qua cổng https tiêu chuẩn cho phép bạn SSH ra bên ngoài, ngay cả khi các cổng SSH chuẩn bị chặn. Cấu hình này sẽ trở thành một phần của thiết lập tiêu chuẩn của quạn trị trên máy chủ SSH.
» Tin mới nhất:
» Các tin khác: