Cách thiết lập xác thực đa yếu tố cho SSH trên Ubuntu 16.04
Yếu tố xác thực là một phần thông tin duy nhất được sử dụng để chứng minh bạn có quyền thực hiện một hành động, chẳng hạn như đăng nhập vào hệ thống. Kênh xác thực là cách hệ thống xác thực cung cấp một yếu tố cho user hoặc yêu cầu user trả lời. Mật khẩu và mã thông báo bảo mật là ví dụ về các yếu tố xác thực; máy tính và điện thoại là những ví dụ về kênh.SSH sử dụng password để xác thực theo mặc định và hầu hết các hướng dẫn tăng cường SSH đều khuyên bạn nên sử dụng SSH key thay thế. Tuy nhiên, đây vẫn chỉ là một yếu tố đơn lẻ. Nếu một kẻ xấu đã xâm nhập máy tính của bạn, thì họ cũng có thể sử dụng khóa của bạn để xâm phạm server của bạn.
Trong hướng dẫn này, ta sẽ cài đặt xác thực đa yếu tố để chống lại điều đó. Xác thực đa yếu tố (MFA) yêu cầu nhiều yếu tố để xác thực hoặc đăng nhập. Điều này nghĩa là một kẻ xấu sẽ phải xâm nhập nhiều thứ, chẳng hạn như cả máy tính và điện thoại của bạn. Các loại yếu tố khác nhau thường được tóm tắt là:
- Điều gì đó bạn biết , chẳng hạn như password hoặc câu hỏi bảo mật
- Một thứ bạn có , như ứng dụng xác thực hoặc mã thông báo bảo mật
- Một cái gì đó bạn đang có, giống như dấu fingerprint hoặc giọng nói của bạn
Một yếu tố phổ biến là ứng dụng OATH-TOTP, như Google Authenticator. OATH-TOTP (Mật khẩu một lần dựa trên thời gian xác thực mở) là một giao thức mở tạo password sử dụng một lần, thường là một số gồm 6 chữ số được tái chế sau mỗi 30 giây.
Bài viết này sẽ hướng dẫn cách cài đặt xác thực SSH bằng ứng dụng OATH-TOTP ngoài SSH key . Đăng nhập vào server của bạn qua SSH sau đó sẽ yêu cầu hai yếu tố trên hai kênh, do đó làm cho nó an toàn hơn so với password hoặc SSH key một mình. Ngoài ra, ta sẽ xem xét một số trường hợp sử dụng bổ sung cho MFA và một số mẹo và thủ thuật hữu ích.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Một server Ubuntu 16.04 với user không phải root có quyền sudo , SSH key và firewall được bật, bạn có thể cài đặt cái này theo hướng dẫn Cài đặt Server Ban đầu này .
- Điện thoại thông minh hoặc máy tính bảng có cài đặt ứng dụng OATH-TOTP, như Google Authenticator ( iOS , Android ).
Bước 1 - Cài đặt PAM của Google
Trong bước này, ta sẽ cài đặt và cấu hình PAM của Google.
PAM, viết tắt của Pluggable Authentication Module , là một cơ sở hạ tầng xác thực được sử dụng trên các hệ thống Linux để xác thực user . Vì Google đã tạo ứng dụng OATH-TOTP nên họ cũng đã tạo PAM tạo TOTP và hoàn toàn tương thích với bất kỳ ứng dụng OATH-TOTP nào, như Google Authenticator hoặc Authy .
Đầu tiên, hãy cập nhật bộ nhớ đệm repository của Ubuntu.
- sudo apt-get update
Tiếp theo, cài đặt PAM.
- sudo apt-get install libpam-google-authenticator
Với PAM được cài đặt, ta sẽ sử dụng ứng dụng trợ giúp đi kèm với PAM để tạo khóa TOTP cho user mà bạn muốn thêm yếu tố thứ hai vào. Khóa này được tạo trên cơ sở từng user , không phải trên toàn hệ thống. Điều này nghĩa là mọi user muốn sử dụng ứng dụng xác thực TOTP cần đăng nhập và chạy ứng dụng trợ giúp để nhận khóa của riêng họ; bạn không thể chỉ chạy nó một lần để kích hoạt nó cho tất cả mọi người (nhưng có một số mẹo ở cuối hướng dẫn này để cài đặt hoặc yêu cầu MFA cho nhiều user ).
Chạy ứng dụng khởi tạo.
- google-authenticator
Sau khi chạy lệnh, bạn sẽ được hỏi một số câu hỏi. Người đầu tiên hỏi liệu mã thông báo xác thực có nên dựa trên thời gian hay không.
OutputDo you want authentication tokens to be time-based (y/n) y
PAM này cho phép mã thông báo dựa trên thời gian hoặc dựa trên tuần tự. Sử dụng mã thông báo dựa trên tuần tự nghĩa là mã bắt đầu tại một điểm nhất định và sau đó tăng mã sau mỗi lần sử dụng. Sử dụng mã thông báo dựa trên thời gian nghĩa là mã thay đổi ngẫu nhiên sau một thời gian nhất định trôi qua. Ta sẽ gắn bó với việc dựa trên thời gian vì đó là những gì các ứng dụng như Google Authenticator dự đoán, vì vậy hãy trả lời y
có.
Sau khi trả lời câu hỏi này, nhiều kết quả sẽ cuộn qua, bao gồm cả một mã QR lớn. Đến đây, hãy sử dụng ứng dụng xác thực trên điện thoại để quét mã QR hoặc nhập khóa bí mật theo cách thủ công. Nếu mã QR quá lớn để quét, bạn có thể sử dụng URL phía trên mã QR để có version nhỏ hơn. Sau khi được thêm, bạn sẽ thấy mã gồm sáu chữ số thay đổi cứ sau 30 giây trong ứng dụng của bạn .
Lưu ý : Đảm bảo bạn ghi lại khóa bí mật, mã xác minh và mã khôi phục ở một nơi an toàn, chẳng hạn như trình quản lý password . Mã khôi phục là cách duy nhất để lấy lại quyền truy cập, ví dụ: nếu bạn mất quyền truy cập vào ứng dụng TOTP của bạn .
Các câu hỏi còn lại cho biết PAM hoạt động như thế nào. Ta sẽ đi qua từng cái một.
OutputDo you want me to update your "~/.google_authenticator" file (y/n) y
Thao tác này sẽ ghi khóa và các tùy chọn vào file .google_authenticator
. Nếu bạn nói không, chương trình sẽ thoát và không có gì được ghi, nghĩa là trình xác thực sẽ không hoạt động.
OutputDo you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y
Bằng cách trả lời có ở đây, bạn đang ngăn chặn một cuộc tấn công phát lại bằng cách làm cho mỗi mã hết hạn ngay sau khi sử dụng. Điều này ngăn kẻ tấn công nắm bắt mã bạn vừa sử dụng và đăng nhập bằng mã đó.
OutputBy default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) n
Trả lời có ở đây cho phép tối đa 8 mã hợp lệ trong một cửa sổ bốn phút chuyển động. Bằng cách trả lời không, bạn giới hạn nó ở 3 mã hợp lệ trong cửa sổ luân phiên 1:30 phút. Trừ khi bạn tìm thấy vấn đề với cửa sổ 1:30 phút, trả lời không là lựa chọn an toàn hơn.
OutputIf the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y
Giới hạn tỷ lệ nghĩa là kẻ tấn công từ xa chỉ có thể thử một số lần đoán nhất định trước khi bị chặn. Nếu trước đây bạn chưa cấu hình giới hạn tốc độ trực tiếp vào SSH, làm như vậy bây giờ là một kỹ thuật tăng cường độ cứng tuyệt vời.
Lưu ý : Sau khi hoàn tất cài đặt này, nếu bạn muốn backup khóa bí mật của bạn , bạn có thể sao chép file ~/.google-authenticator
vào một vị trí tin cậy . Từ đó, bạn có thể triển khai nó trên các hệ thống bổ sung hoặc triển khai lại sau khi backup .
Bây giờ PAM của Google đã được cài đặt và cấu hình , bước tiếp theo là cấu hình SSH để sử dụng khóa TOTP của bạn. Ta cần cho SSH biết về PAM và sau đó cấu hình SSH để sử dụng nó.
Bước 2 - Cấu hình OpenSSH
Vì ta sẽ áp dụng các thay đổi SSH so với SSH, điều quan trọng là không bao giờ đóng kết nối SSH ban đầu của bạn. Thay vào đó, hãy mở phiên SSH thứ hai để thực hiện kiểm tra. Điều này là để tránh tự khóa server của bạn nếu có lỗi trong cấu hình SSH của bạn. Khi mọi thứ hoạt động, bạn có thể đóng bất kỳ phiên nào một cách an toàn.
Để bắt đầu, hãy mở file cấu hình sshd
để chỉnh sửa bằng nano
hoặc editor yêu thích của bạn.
- sudo nano /etc/pam.d/sshd
Thêm dòng sau vào cuối file .
. . . # Standard Un*x password updating. @include common-password auth required pam_google_authenticator.so nullok
Từ nullok
ở cuối dòng cuối cùng cho PAM biết rằng phương thức xác thực này là tùy chọn. Điều này cho phép user không có mã thông báo OATH-TOTP vẫn đăng nhập bằng SSH key của họ. Sau khi tất cả user có mã thông báo OATH-TOTP, bạn có thể xóa nullok
khỏi dòng này để bắt buộc MFA.
Lưu và đóng file .
Tiếp theo, ta sẽ cấu hình SSH để hỗ trợ loại xác thực này. Mở file cấu hình SSH để chỉnh sửa.
- sudo nano /etc/ssh/sshd_config
Tìm kiếm ChallengeResponseAuthentication
và đặt giá trị của nó thành yes
.
. . . # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication yes . . .
Lưu file , sau đó khởi động lại SSH để reload các file cấu hình. Khởi động lại dịch vụ sshd
sẽ không đóng các kết nối đang mở, vì vậy bạn sẽ không có nguy cơ tự khóa mình bằng lệnh này.
- sudo systemctl restart sshd.service
Để kiểm tra xem mọi thứ đã hoạt động chưa, hãy mở một terminal khác và thử đăng nhập qua SSH. Nếu trước đây bạn đã tạo SSH key và đang sử dụng khóa đó, bạn sẽ nhận thấy rằng bạn không phải nhập password của user hoặc mã xác minh MFA. Điều này là do SSH key overrides tất cả các tùy chọn xác thực khác theo mặc định. Nếu không, bạn sẽ nhận được password và mã xác minh nhắc nhở.
Tiếp theo, để bật SSH key dưới dạng một yếu tố và mã xác minh là một yếu tố thứ hai, ta cần cho SSH biết yếu tố nào cần sử dụng và ngăn SSH key overrides tất cả các loại khác.
Bước 3 - Làm cho SSH Nhận thức về MFA
Mở lại file cấu hình sshd
.
- sudo nano /etc/ssh/sshd_config
Thêm dòng sau vào cuối file . Điều này cho SSH biết phương thức xác thực nào được yêu cầu. Dòng này cho SSH biết ta cần SSH key và password hoặc mã xác minh (hoặc cả ba).
. . . UsePAM yes AuthenticationMethods publickey,password publickey,keyboard-interactive
Lưu và đóng file .
Tiếp theo, mở lại file cấu hình sshd
PAM.
- sudo nano /etc/pam.d/sshd
Tìm dòng @include common-auth
và comment bằng cách thêm ký tự #
ký tự đầu tiên trên dòng. Điều này yêu cầu PAM không nhắc nhập password .
. . . # Standard Un*x authentication. #@include common-auth . . .
Lưu file , sau đó khởi động lại SSH.
- sudo systemctl restart sshd.service
Bây giờ hãy thử đăng nhập lại vào server bằng một phiên khác. Không giống như lần trước, SSH sẽ yêu cầu mã xác minh của bạn. Khi nhập nó, bạn sẽ đăng nhập được. Mặc dù bạn không thấy bất kỳ dấu hiệu nào cho thấy SSH key của bạn đã được sử dụng, nỗ lực đăng nhập của bạn đã sử dụng hai yếu tố. Nếu bạn muốn xác minh, bạn có thể thêm -v
(cho dài dòng) sau lệnh SSH:
Example SSH output\. . . debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering RSA public key: /Users/sammy/.ssh/id_rsa debug1: Server accepts key: pkalg rsa-sha2-512 blen 279 Authenticated with partial success. debug1: Authentications that can continue: password,keyboard-interactive debug1: Next authentication method: keyboard-interactive Verification code:
Ở cuối kết quả , bạn sẽ thấy nơi SSH sử dụng SSH key của bạn và sau đó yêu cầu mã xác minh. Như vậy, bạn có thể đăng nhập qua SSH bằng SSH key và password dùng một lần. Nếu bạn muốn thực thi cả ba loại xác thực, bạn có thể làm theo bước tiếp theo.
Bước 4 - Thêm yếu tố thứ ba (Tùy chọn)
Ở Bước 3, ta đã liệt kê các loại xác thực được phê duyệt trong file sshd_config
:
-
publickey
(key SSH) -
password publickey
(mật khẩu) -
keyboard-interactive
(mã xác minh)
Mặc dù ta đã liệt kê ba yếu tố khác nhau, nhưng với các tùy chọn mà ta đã chọn cho đến nay, chúng chỉ cho phép một SSH key và mã xác minh. Nếu bạn muốn có cả ba yếu tố (khóa SSH, password và mã xác minh), một thay đổi nhanh sẽ kích hoạt cả ba yếu tố.
Mở file cấu hình sshd
PAM.
- sudo nano /etc/pam.d/sshd
- sudo systemctl restart sshd.service
Bằng cách bật tùy chọn @include common-auth
, PAM giờ đây sẽ nhắc nhập password ngoài việc kiểm tra SSH key và yêu cầu mã xác minh, ta đã làm việc trước đây. Như vậy, ta có thể sử dụng thứ mà ta biết (mật khẩu) và hai loại thứ khác nhau mà ta có (khóa SSH và mã xác minh) qua hai kênh khác nhau.
Lúc này, bài viết này đã phác thảo cách bật MFA bằng SSH key và password dùng một lần dựa trên thời gian. Nếu đây là tất cả những gì bạn cần, bạn có thể kết thúc tại đây. Tuy nhiên, đây không phải là cách duy nhất để thực hiện xác thực đa yếu tố. Dưới đây là một số cách bổ sung để sử dụng module PAM này để xác thực đa yếu tố và một số mẹo và thủ thuật để khôi phục, sử dụng tự động, v.v.
Mẹo 1 - Khôi phục quyền truy cập
Như với bất kỳ hệ thống nào mà bạn củng cố và bảo mật, bạn phải chịu trách nhiệm quản lý bảo mật đó. Trong trường hợp này, điều đó nghĩa là bạn không bị mất SSH key hoặc khóa bí mật TOTP và đảm bảo bạn có quyền truy cập vào ứng dụng TOTP của bạn . Tuy nhiên, đôi khi một số điều xảy ra và bạn có thể mất quyền kiểm soát các phím hoặc ứng dụng bạn cần để truy cập.
Mất SSH key hoặc khóa bí mật TOTP
Nếu bạn mất SSH key hoặc khóa bí mật TOTP, quá trình khôi phục có thể được chia thành một vài bước. Đầu tiên là vào lại mà không biết mã xác minh và thứ hai là tìm khóa bí mật hoặc tạo lại để đăng nhập MFA bình thường.
Để truy cập sau khi mất khóa bí mật tạo mã xác minh trên DigitalOcean Server, bạn chỉ cần sử dụng console ảo từ trang tổng quan của bạn để đăng nhập bằng tên user và password của bạn .
Nếu không, bạn cần một admin-user có quyền truy cập sudo; đảm bảo không bật MFA cho user này nhưng sử dụng SSH key . Nếu bạn hoặc user khác mất khóa bí mật của họ và không thể đăng nhập thì admin-user có thể đăng nhập và giúp khôi phục hoặc tạo lại khóa cho mọi user sử dụng sudo
.
Khi bạn đã đăng nhập, có hai cách để giúp lấy bí mật TOTP:
- Khôi phục khóa hiện có
- Tạo khóa mới
Trong folder chính của mỗi user , khóa bí mật và cài đặt Google Authenticator được lưu trong ~/.google-authenticator
. Dòng đầu tiên của file này là một khóa bí mật. Một cách nhanh chóng để lấy khóa là thực hiện lệnh sau, lệnh này hiển thị dòng đầu tiên của file google-authenticator
(tức là khóa bí mật). Sau đó, lấy khóa bí mật đó và nhập thủ công vào ứng dụng TOTP.
- head -n 1 /home/sammy/.google_authenticator
Nếu có lý do gì để không sử dụng khóa hiện có (ví dụ: không thể dễ dàng chia sẻ khóa bí mật với user bị ảnh hưởng một cách an toàn), bạn có thể xóa hoàn toàn file ~/.google-authenticator
. Điều này sẽ cho phép user đăng nhập lại chỉ bằng một yếu tố duy nhất, giả sử bạn chưa thực thi MFA. Sau đó, họ có thể chạy google-authenticator
để tạo khóa mới.
Mất quyền truy cập vào ứng dụng TOTP
Nếu bạn cần đăng nhập vào server của bạn nhưng không có quyền truy cập vào ứng dụng TOTP để lấy mã xác minh, bạn vẫn có thể đăng nhập bằng các mã khôi phục được hiển thị khi bạn tạo khóa bí mật lần đầu tiên. Lưu ý các mã khôi phục này chỉ sử dụng một lần. Sau khi một mã được sử dụng để đăng nhập, nó không thể được sử dụng làm mã xác minh nữa.
Mẹo 2 - Thay đổi cài đặt xác thực
Nếu bạn muốn thay đổi cài đặt MFA của bạn sau cấu hình ban đầu, thay vì tạo cấu hình mới với cài đặt cập nhật, bạn chỉ có thể chỉnh sửa file ~/.google-authenticator
. Tệp này được trình bày theo cách sau:
<secret key> <options> <recovery codes>
Các tùy chọn được đặt trong file này có một dòng trong phần tùy chọn; nếu bạn trả lời “no” cho một tùy chọn cụ thể trong quá trình cài đặt ban đầu, dòng tương ứng sẽ bị loại trừ khỏi file .
Dưới đây là những thay đổi bạn có thể thực hiện đối với file này:
- Để bật mã tuần tự thay vì mã dựa trên thời gian, hãy thay đổi dòng
" TOTP_AUTH
thành" HOTP_COUNTER 1
. - Để cho phép nhiều lần sử dụng một mã, hãy xóa dòng
" DISALLOW_REUSE
. - Để mở rộng cửa sổ hết hạn mã lên 4 phút, hãy thêm dòng
" WINDOW_SIZE 17
. - Để vô hiệu hóa nhiều lần đăng nhập không thành công (giới hạn tốc độ), hãy xóa dòng
" RATE_LIMIT 3 30
. - Để thay đổi ngưỡng giới hạn tốc độ, hãy tìm dòng
" RATE_LIMIT 3 30
và điều chỉnh các số. Số3
trong bản root cho biết số lần thử trong một khoảng thời gian và số30
cho biết khoảng thời gian tính bằng giây. - Để vô hiệu hóa việc sử dụng mã khôi phục, hãy xóa năm mã gồm 8 chữ số ở cuối file .
Mẹo 3 - Tránh MFA cho một số account
Có thể có tình huống trong đó một user hoặc một vài account dịch vụ (tức là account được sử dụng bởi các ứng dụng, không phải con người) cần quyền truy cập SSH mà không bật MFA. Ví dụ: một số ứng dụng sử dụng SSH, như một số ứng dụng client FTP, có thể không hỗ trợ MFA. Nếu ứng dụng không có cách để yêu cầu mã xác minh, yêu cầu có thể bị kẹt cho đến khi hết thời gian kết nối SSH.
Miễn là một vài tùy chọn trong /etc/pam.d/sshd
được đặt chính xác, bạn có thể kiểm soát những yếu tố nào được sử dụng trên cơ sở từng user .
Để cho phép MFA cho một số account và chỉ SSH cho những account khác, hãy đảm bảo các cài đặt sau trong /etc/pam.d/sshd
đang hoạt động.
# PAM configuration for the Secure Shell service # Standard Un*x authentication. #@include common-auth . . . # Standard Un*x password updating. @include common-password auth required pam_google_authenticator.so nullok
Ở đây, @include common-auth
được comment vì cần phải tắt password . Không thể bắt buộc MFA nếu một số account có ý định vô hiệu hóa MFA, vì vậy hãy để tùy chọn nullok
ở dòng cuối cùng.
Sau khi cài đặt cấu hình này, chỉ cần chạy google-authenticator
với quyền là mọi user cần MFA và không chạy nó cho những user chỉ sử dụng SSH key .
Mẹo 4 - Tự động cài đặt với quản lý cấu hình
Nhiều administrator hệ thống sử dụng các công cụ quản lý cấu hình , như Puppet, Chef hoặc Ansible, để quản lý hệ thống của họ. Nếu bạn muốn sử dụng một hệ thống như thế này để cài đặt cài đặt khóa bí mật khi account của user mới được tạo, có một phương pháp để thực hiện điều đó.
google-authenticator
hỗ trợ chuyển đổi dòng lệnh để đặt tất cả các tùy chọn trong một lệnh duy nhất, không tương tác. Để xem tất cả các tùy chọn, bạn có thể nhập google-authenticator --help
. Dưới đây là lệnh sẽ cài đặt mọi thứ như được nêu trong Bước 1:
- google-authenticator -t -d -f -r 3 -R 30 -W
Điều này trả lời tất cả các câu hỏi mà ta đã trả lời theo cách thủ công, lưu nó vào một file , sau đó xuất ra khóa bí mật, mã QR và mã khôi phục. (Nếu bạn thêm cờ -q
, thì sẽ không có bất kỳ kết quả nào.) Nếu bạn sử dụng lệnh này theo cách tự động, hãy nhớ đặt để nắm bắt khóa bí mật và / hoặc mã khôi phục và cung cấp chúng cho user .
Mẹo 5 - Bắt buộc MFA cho tất cả user
Nếu bạn muốn buộc MFA cho tất cả user ngay cả trong lần đăng nhập đầu tiên hoặc nếu bạn không muốn dựa vào user của bạn để tạo khóa của riêng họ, có một cách dễ dàng để xử lý điều này. Bạn chỉ cần sử dụng cùng một file .google-authenticator
cho mỗi user , vì không có dữ liệu dành riêng cho user nào được lưu trữ trong file .
Để thực hiện việc này, sau khi file cấu hình được tạo ban đầu, user có quyền cần sao chép file vào folder root của mọi folder chính và thay đổi quyền của file đó cho user thích hợp. Bạn cũng có thể sao chép file vào /etc/skel
/ để nó tự động được sao chép sang folder chính của user mới khi tạo.
Cảnh báo : Đây có thể là một rủi ro bảo mật vì mọi người đang chia sẻ cùng một yếu tố thứ hai. Điều này nghĩa là nếu nó bị rò rỉ, thì cứ như thể mỗi user chỉ có một yếu tố. Hãy xem xét điều này nếu bạn muốn sử dụng phương pháp này.
Một phương pháp khác để buộc tạo khóa bí mật của user là sử dụng tập lệnh bash:
- Tạo mã thông báo TOTP,
- Nhắc họ download ứng dụng Google Authenticator và quét mã QR sẽ được hiển thị, và
- Chạy ứng dụng
google-authenticator
cho chúng sau khi kiểm tra xem file.google-authenticator
đã tồn tại hay chưa.
Để đảm bảo tập lệnh chạy khi user đăng nhập, bạn có thể đặt tên cho nó .bash_login
và đặt nó ở folder root của folder chính của họ.
Kết luận
Điều đó nói rằng, bằng cách có hai yếu tố (khóa SSH + mã thông báo MFA) trên hai kênh (máy tính + điện thoại của bạn), bạn đã khiến tác nhân bên ngoài rất khó xâm nhập vào máy của bạn thông qua SSH và tăng lên đáng kể bảo mật cho máy của bạn.
Các tin liên quan
Cách chuyển cài đặt ownCloud sang Nextcloud trên Ubuntu 14.042017-01-06
Cách triển khai ứng dụng Node.js và MongoDB với Rancher trên Ubuntu 16.04
2017-01-05
Cách xây dựng Go từ Nguồn trên Ubuntu 16.04
2017-01-04
Cách thiết lập firewall với UFW trên Ubuntu 16.04
2016-12-22
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 16.04
2016-12-09
Cách cài đặt Puppet 4 trên Ubuntu 16.04
2016-12-09
Cách sử dụng Vault để bảo vệ dữ liệu nhạy cảm có thể xem được trên Ubuntu 16.04
2016-12-09
Cách cài đặt Discourse trên Ubuntu 16.04
2016-12-02
Cách thiết lập giám sát hiệu suất thời gian thực với Netdata trên Ubuntu 16.04
2016-12-01
Cách sắp xếp công việc theo nhóm với ONLYOFFICE trên Ubuntu 14.04
2016-11-22