Cài đặt Teleport để quản lý SSH các máy chủ từ xa

2
766
(Last Updated On: Th9 19, 2018)

Gravitational Teleport là một máy chủ SSH để truy cập và quản lý  từ xa thông qua SSH và HTTPS các máy chủ Linux. 

Các chức năng mà Teleport đem lại cho chúng ta gồm có:

  • Ghi/Phát lại phiên SSH
  • Quản lý SSH giữa các nhóm, tổ chức và trung tâm dữ liệu. Rất an toàn và dễ dàng, hiệu quả
  • SSH vào các cụm Firewall mà cần cổng nào được mở
  • Kiểm soát truy cập dựa trên vai trò (RBAC) cho giao thức SSH.

Những tính năng gì và khả năng của Teleport thì mình sẽ tiếp tục đề cập đến sau khi chúng ta cài đặt và sử dụng nó.

I. Đầu tiên chúng ta tiến hành cài đặt Gravitational Teleport vào hệ thống:

Trước tiên thì download source về cái đã, các bạn có thể truy cập vào địa chỉ https://gravitational.com/teleport/download/ để tải về bản mới nhất. Một điều rất đáng mừng đó là có hỗ trợ Linux ARM cho những ai chạy mấy con Raspberry Pi hay chạy trên máy chủ của Scaleway. Còn nếu dùng chip Intel xin mời các bạn theo các bước bên dưới:

wget https://get.gravitational.com/teleport-v2.7.4-linux-amd64-bin.tar.gz

Giải nén ra nào:

tar -xzf teleport-v2.7.4-linux-amd64-bin.tar.gz

Bây giờ vào thư mục của Teleport và cài đặt nó thôi:

cd teleport
sudo ./install

Bạn có thể kiểm tra xem Teleport cài xong được để ở đâu bằng lệnh:

which teleport

Đừng quên tạo thư mục để Teleport lưu dữ liệu lên đó:

mkdir -p /var/lib/teleport

Tới bước này thì coi như là cài đặt xong rồi đó.

Tới đây bạn có thể thấy Teleport đã chạy các dịch vụ rồi.
Sau cú pháp thêm một user vào Cluter trong Teleport, chúng ta được cung cấp một đường dẫn để người dùng đăng ký. Tuy nhiên đường link có dạng là hostname nội bộ nên bạn có thể không truy cập được. Bạn cần đổi thành https://ip_may_chu_teleport:3080/web… để có thể truy cập được.

Chẳng hạn mình thêm một user mới (để có quyền quản lý thông qua Teleport), mình tiến hành dùng lệnh:

tctl users add phatnlq

Chú ý: phatnlq là một user đã có trên server Linux trước đó, nếu chưa có bạn có thể tạo user này sau cũng được.

Bây giờ chúng ta sẽ tiến hành truy cập vào đường dẫn được cung cấp để đăng ký cho user mới, cụ thể ở đây chính là phatnlq.

Các bạn nhớ đổi sang IP để có thể truy cập được nhé:

Chúng ta tiến hành đăng ký và sau đó nhấn Sign Up.

Ban đầu nếu bạn thiết lập user đầu tiên, hệ thống sẽ cần mã xác thực từ Google Authenticator, bạn chỉ việc cài ứng dụng này vào điện thoại và quét mã QR trên trang cũng cấp sau đó điền mã số có được là xong.

Quét mã QR mà trang cùng cấp sau đó điền mã số có được vào ô xác thực.

Sau khi đăng nhập vào bạn sẽ thấy giao diện thế này:

Bấm vào cái nút có chứa tên user của chúng ta, bạn lập tức đã kết nối được SSH đến máy chủ bạn đã cài đặt và thiết lập Teleport.
Gõ vài dòng “quảng cáo” xem như thế nào.

Bây giờ đi ra ngoài (bấm cái dấu x màu đỏ bên góc trái màn hình để tắt giao diện dòng lệnh) bạn bấm vào icon Session, sẽ thấy một các phiên hoạt động SSH:

Bấm vào nút Play xem có gì bất ngờ?

Bạn có thể thấy phiên hoạt động SSH đã được ghi chép lại một cách đầy đủ.

Tới đây thì bạn có thể thấy tác dụng hữu ích của Teleport là gì rồi đúng không, tất nhiên nó còn nhiều ý nghĩa hơn nữa. Và bạn có thể từ từ khám phá, đời còn dài mà.

II. Chưa dừng lại ở đây đâu các bạn ạ, bây giờ chúng ta tiếp tục thiết lập một Proxy Teleport:

Tạo tập tin /etc/teleport.yaml với nội dung như sau:

auth_service:
   # IMPORTANT: this line enables the proxy recording mode:
   session_recording: "proxy"  # can also be "off" and "on" (default)

   # For better security it’s recommended to enable host checking as well, 
   # this is when the Teleport proxy will verify the identity of the 
   # nodes. Teleport documentation covers how to issue host certificates,
   # but for simplicity of this tutorial we are disabling strict host
   # checking here
   proxy_checks_host_keys: no

   # turn 2FA off to make the tutorial easier to follow
   authentication:
      second_factor: off

Tiếp tục thiết lập OpenSSH Server:

tctl auth export --type=user > teleport-ca.pub

Tiếp tục:

nano teleport-ca.pub

Bây giờ bạn hãy xóa cert-authority đi:

Sau đó bạn chép vào /etc/ssh/teleport-ca.pub, Khi đó tập tin /etc/ssh/teleport-ca.pub trông sẽ như thế này:

Còn nữa nhé các bạn, bây giờ bạn thêm dòng sau vào tập tin /etc/ssh/sshd_config:

TrustedUserCAKeys /etc/ssh/teleport-ca.pub
Mình đem nó xuống dưới cùng luôn.

Bây giờ chúng ta thử truy cập vào SSH vào máy chủ nãy giờ chúng ta đã thiết lập (vừa đóng vai trò là một master, vừa là một node, vừa là một Proxy):

tsh login --proxy=localhost

Các bạn chú ý, thay localhost bằng một tên miền hay hostname khác khi bạn thiết lập cluster nhé.

Đăng nhập:

tsh ssh localhost
Mình đã đăng nhập thông qua Proxy.

Thử tua lại phiên hoạt động trước đó:

tsh play 3f7821f4-bb52-11e8-990d-080027a342ec

Chú ý: Dãy số trên là ID của phiên hoạt động SSH, bạn có thể lấy nó theo hình sau:

Bây giờ chúng ta thêm một Node nào đó khác, các bạn dùng lệnh:

tctl nodes add
Bạn sẽ có dòng lệnh để node tham gia vào cluster: teleport start –roles=node –token=ca390f415c67bc00c57f692486e63789 –auth-server=192.168.2.83:3025

Công việc của các bạn đó là cài đặt Teleport trên một máy khác (theo bước I lớn mình đã trình bày ở đầu bài viết) và chạy dòng lệnh như trên (chung dải IP LAN nhé – trừ khi nào bạn thiết lập IP WAN thì cài ở đâu cũng được và nhớ mở Port 3025).

Dùng lệnh:

tsh --proxy=localhost ls

Để kiểm tra xem có node nào đó Join vào Cluster chưa, vì là minh họa cho các bạn xem nên mình cùng chạy trên một máy. Và kết quả kiểm tra có thể như hình bên dưới:

*Lưu lại diễn biến phiên SSH:

Bạn cần đăng nhập vào Teleport:

tsh --proxy=localhost --insecure login
tsh ssh localhost

Giờ thử gõ vài dòng xem sao:

Bây giờ sau khi đăng nhập vào Teleport, mọi thao tác thông qua SSH của bạn sẽ được ghi lại đầy đủ.

Bạn vào Web GUI kiểm tra phiên hoạt động gần đây nhất xem kết quả thế nào:

Tất cả đều đã được ghi lại.

Tất nhiên tính năng của Teleport còn cho phép nhiều người dùng có thể tham gia phiên Session đó sau khi được cấp quyền, các bạn có thể theo dõi trực tiếp phiên làm việc của ai đó và cũng có quyền tham gia nếu được cho phép. Cực kỳ hữu ích khi làm việc nhóm hoặc giúp đỡ từ xa thông qua SSH.

À, còn thiết lập dịch vụ cho Teleport nữa chứ (tự động chạy mỗi khi khởi động hệ thống):

Bạn tạo tập tin /etc/systemd/system/teleport.service với nội dung:

[Unit]
Description=Teleport SSH Service
After=network.target 

[Service]
Type=simple
Restart=on-failure
ExecStart=/usr/local/bin/teleport start --pid-file=/var/run/teleport.pid
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/run/teleport.pid

[Install]
WantedBy=multi-user.target

Lưu lại và tiếp tục các lệnh sau:

systemctl daemon-reload
systemctl enable teleport
systemctl start teleport

Sau đó:

sudo systemctl daemon-reload
sudo systemctl enable teleport

Đừng quên chạy dịch vụ:

sudo systemctl start teleport

Kiểm tra xem dịch vụ đã cấu hình và chạy chưa:

systemctl status teleport
Như thế này là xong.

Chúc các bạn thành công!

2 BÌNH LUẬN

  1. cho mình hỏi với, mình cài teleport lên được buid thêm node add vào server master
    sau khi mình add được node lúc tạo mới user thì đường link để tạo user sẽ không còn http://tenservermaster:3080
    mà nó lại thành
    http://tennode:3080
    dẫn đến việc sử dụng otp luôn bị lỗi
    failed to validate a token
    mặc dù quét đi quét lại token vẫn bị thế
    có cách nào để fix lỗi đó không, không biết mình có bị sai bước nào không.

Bình luận