Khi thiết lập máy chủ mới lần đầu, có một số bước cấu hình quan trọng mà bạn cần thực hiện ngay từ đầu như một phần của quá trình thiết lập cơ bản. Việc này không chỉ giúp tăng cường bảo mật và nâng cao khả năng sử dụng của máy chủ, mà còn cung cấp một nền tảng vững chắc để thực hiện các bước tiếp theo trong quá trình quản lý và triển khai hệ thống.
Bước 1 – Đăng nhập Root
Để đăng nhập vào máy chủ, bạn cần biết địa chỉ IP công cộng của máy chủ và mật khẩu cho tài khoản “root”. Nếu bạn chưa đăng nhập vào máy chủ, bạn có thể tham khảo bài hướng dẫn đầu tiên trong chuỗi bài này Cách kết nốI đến droplet của bạn qua ssh, để biết quy trình chi tiết.
Nếu bạn chưa kết nối đến máy chủ, hãy đăng nhập với tư cách là người dùng root bằng lệnh sau (thay thế SERVER_IP_ADDRESS bằng địa chỉ IP công cộng của máy chủ của bạn):
ssh root@SERVER_IP_ADDRESS
Hoàn tất quá trình đăng nhập bằng cách chấp nhận cảnh báo về tính xác thực của máy chủ (nếu có xuất hiện), sau đó nhập thông tin xác thực cho tài khoản root (mật khẩu hoặc private key). Nếu đây là lần đầu tiên bạn đăng nhập vào máy chủ và sử dụng mật khẩu, bạn cũng sẽ được yêu cầu thay đổi mật khẩu của root.
Về Root
Tài khoản root là người dùng quản trị trong môi trường Linux với rất nhiều quyền hạn. Do quyền hạn mạnh mẽ của tài khoản root, bạn được khuyến cáo không nên sử dụng nó hàng ngày. Bởi vì quyền hạn của root có thể cho phép bạn thực hiện những thay đổi gây hại, thậm chí là vô tình.
Bước tiếp theo là tạo một tài khoản người dùng thay thế với quyền hạn hạn chế hơn cho công việc hàng ngày. Chúng ta sẽ hướng dẫn cách tăng quyền hạn khi cần thiết.
Bước 2 – Tạo người dùng mới
Sau khi đã đăng nhập với tư cách root, chúng ta sẽ tạo tài khoản người dùng mới mà chúng ta sẽ sử dụng để đăng nhập từ bây giờ.
Ví dụ dưới đây tạo ra một người dùng mới có tên “demo”, tuy nhiên bạn nên thay thế bằng tên người dùng mà bạn mong muốn:
adduser demo
Tiếp theo, gán mật khẩu cho người dùng mới (lưu ý thay “demo” bằng tên người dùng bạn vừa tạo):
passwd demo
Nhập mật khẩu mạnh và xác nhận lại mật khẩu đó.
Bước 3 – Phân quyền Root
Hiện tại, bạn đã có một tài khoản người dùng mới với quyền hạn thông thường. Tuy nhiên, đôi khi chúng ta cần thực hiện các tác vụ quản trị.
Để tránh việc phải đăng xuất khỏi tài khoản người dùng thông thường và đăng nhập lại với tư cách root, chúng ta có thể thiết lập “quyền super user” hay quyền root cho tài khoản người dùng thông thường. Điều này cho phép người dùng thông thường chạy các lệnh với quyền quản trị bằng cách thêm từ sudo
trước mỗi lệnh.
Để cấp quyền này cho người dùng mới, chúng ta cần thêm tài khoản đó vào nhóm “wheel”. Mặc định trên CentOS 7, những người dùng thuộc nhóm “wheel” được phép sử dụng lệnh sudo.
Với tư cách là root, hãy chạy lệnh sau để thêm người dùng mới vào nhóm wheel (thay “demo” bằng tên người dùng mới của bạn):
gpasswd -a demo wheel
Giờ đây, người dùng của bạn có thể chạy các lệnh với quyền super user! Để biết thêm thông tin về cách hoạt động của lệnh này.
Bước 4 – Thêm xác thực khóa công khai
Bước tiếp theo để bảo mật máy chủ của bạn là thiết lập xác thực khóa công khai cho người dùng mới. Việc này sẽ tăng cường bảo mật cho máy chủ bằng cách yêu cầu một private SSH key để đăng nhập.
Tạo một cặp khóa
Nếu bạn chưa có một cặp khóa SSH (bao gồm một public key và một private key), bạn cần tạo một cặp mới. Nếu bạn đã có sẵn khóa và muốn sử dụng, hãy bỏ qua bước tạo và chuyển sang bước sao chép public key.
Để tạo một cặp khóa mới, nhập lệnh sau tại terminal trên máy cục bộ của bạn:
ssh-keygen
Giả sử tên người dùng trên máy cục bộ của bạn là “localuser”, bạn sẽ thấy đầu ra trông như sau:
ssh-keygen output Generating public/private rsa key pair. Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
Nhấn Enter để chấp nhận tên file và đường dẫn mặc định (hoặc nhập tên mới nếu muốn).
Tiếp theo, bạn sẽ được yêu cầu nhập passphrase để bảo vệ khóa. Bạn có thể nhập passphrase hoặc để trống.
Lưu ý: Nếu để trống passphrase, bạn có thể sử dụng private key để xác thực mà không cần nhập passphrase. Nếu nhập passphrase, bạn sẽ cần cả private key và passphrase để đăng nhập. Việc bảo vệ khóa với passphrase an toàn hơn, nhưng cả hai phương pháp đều an toàn hơn so với xác thực mật khẩu cơ bản.
Lệnh này sẽ tạo ra một private key (id_rsa) và một public key (id_rsa.pub) trong thư mục .ssh của người dùng localuser.
Sao chép Public Key
Sau khi tạo cặp khóa SSH, bạn cần sao chép public key của mình lên máy chủ mới. Có hai cách đơn giản để thực hiện việc này.
Lưu ý: Phương pháp
ssh-copy-id
sẽ không hoạt động trên DataOnline nếu bạn đã chọn một SSH key khi tạo Droplet, vì DataOnline sẽ tắt xác thực mật khẩu nếu có SSH key, vàssh-copy-id
lại dựa vào xác thực mật khẩu để sao chép khóa.
Cách 1: Sử dụng ssh-copy-id
Nếu máy cục bộ của bạn đã cài đặt script ssh-copy-id
, bạn có thể dùng nó để cài đặt public key cho bất kỳ người dùng nào mà bạn có thông tin đăng nhập.
Chạy script ssh-copy-id
bằng cách chỉ định người dùng và địa chỉ IP của máy chủ mà bạn muốn cài đặt khóa, như sau:
ssh-copy-id demo@SERVER_IP_ADDRESS
Sau khi nhập mật khẩu theo yêu cầu, public key của bạn sẽ được thêm vào file .ssh/authorized_keys
của người dùng từ xa. Private key tương ứng bây giờ có thể được sử dụng để đăng nhập vào máy chủ.
Cách 2: Cài đặt thủ công khóa
Giả sử bạn đã tạo cặp khóa SSH ở bước trước, hãy sử dụng lệnh sau trên máy cục bộ để hiển thị public key (id_rsa.pub
):
cat ~/.ssh/id_rsa.pub
Lệnh này sẽ hiển thị public SSH key, trông sẽ giống như:
id_rsa.pub contents ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local
Chọn toàn bộ public key và sao chép vào clipboard của bạn.
Để kích hoạt việc sử dụng SSH key cho người dùng mới, bạn phải thêm public key vào một file đặc biệt trong thư mục home của người dùng đó.
Trên máy chủ, với tư cách là root
, nhập lệnh sau để chuyển sang người dùng mới (thay tên “demo” bằng tên người dùng của bạn):
su - demo
Bây giờ bạn đã ở trong thư mục home của người dùng mới. Tạo một thư mục mới có tên .ssh
và thiết lập quyền hạn cho nó như sau:
mkdir .ssh chmod 700 .ssh
Sau đó, mở một file có tên authorized_keys
trong thư mục .ssh
bằng trình soạn thảo văn bản (chúng ta sẽ sử dụng vi
):
vi .ssh/authorized_keys
Nhấn phím i
để vào chế độ chèn (insert mode), sau đó dán public key từ clipboard vào. Nhấn ESC
để thoát chế độ chèn.
Gõ :x
rồi nhấn Enter để lưu và thoát file.
Cuối cùng, thiết lập quyền hạn cho file authorized_keys
với lệnh:
chmod 600 .ssh/authorized_keys
Để trở về tài khoản root, nhập lệnh:
exit
Giờ đây, bạn có thể đăng nhập SSH với tư cách người dùng mới, sử dụng private key để xác thực.
Bước 5 – Cấu hình SSH Daemon
Bây giờ, khi đã có tài khoản người dùng mới, chúng ta có thể tăng cường bảo mật cho máy chủ bằng cách chỉnh sửa cấu hình của SSH daemon (chương trình cho phép bạn đăng nhập từ xa) để vô hiệu hóa đăng nhập SSH từ xa cho tài khoản root.
Bắt đầu bằng cách mở file cấu hình với trình soạn thảo văn bản với tư cách là root:
vi /etc/ssh/sshd_config
Trong file này, chúng ta có thể cấu hình để vô hiệu hóa đăng nhập root qua SSH. Đây thường là thiết lập an toàn hơn vì bây giờ bạn có thể truy cập máy chủ qua tài khoản người dùng thông thường và chỉ nâng quyền khi cần thiết.
Để vô hiệu hóa đăng nhập root từ xa, tìm dòng sau trong file:
/etc/ssh/sshd_config (before) #PermitRootLogin yes
Gợi ý: Để tìm dòng này, hãy nhập /PermitRoot
rồi nhấn Enter. Con trỏ sẽ nhảy đến ký tự “P” của dòng đó.
Bỏ dấu #
ở đầu dòng (nhấn Shift-x để xóa ký tự “#”).
Di chuyển con trỏ đến từ “yes” bằng cách nhấn c
.
Sau đó thay “yes” bằng cách nhấn cw
, nhập “no” và nhấn Escape khi xong. Sau khi chỉnh sửa, dòng sẽ trông như sau:
/etc/ssh/sshd_config (after) PermitRootLogin no
Việc vô hiệu hóa đăng nhập root từ xa là rất được khuyến khích trên mọi máy chủ!
Nhập :x
rồi nhấn Enter để lưu và thoát file.
Tải lại SSH
Sau khi đã thay đổi cấu hình, chúng ta cần khởi động lại dịch vụ SSH để áp dụng các thay đổi.
Nhập lệnh sau để tải lại SSH:
systemctl reload sshd
Trước khi đăng xuất khỏi máy chủ, hãy kiểm tra cấu hình mới của bạn. Bạn không muốn bị mất kết nối nếu cấu hình mới không cho phép đăng nhập thành công.
Mở một cửa sổ terminal mới. Trong cửa sổ này, hãy bắt đầu một kết nối mới đến máy chủ. Lần này, thay vì sử dụng tài khoản root, hãy sử dụng tài khoản người dùng mới mà bạn đã tạo.
Với máy chủ đã được cấu hình ở trên, kết nối bằng lệnh sau (thay thế thông tin phù hợp):
ssh demo@SERVER_IP_ADDRESS
Nếu bạn sử dụng PuTTY để kết nối tới máy chủ, hãy nhớ cập nhật số cổng của phiên làm việc để khớp với cấu hình hiện tại của máy chủ.
Bạn sẽ được yêu cầu nhập mật khẩu của người dùng mới mà bạn đã cấu hình. Sau đó, bạn sẽ đăng nhập thành công với tư cách người dùng mới.
Nhớ rằng, nếu cần chạy một lệnh với quyền root, hãy nhập sudo
trước lệnh, ví dụ:
sudo command_to_run
Nếu mọi thứ hoạt động tốt, bạn có thể thoát phiên làm việc bằng lệnh:
exit
Hướng dẫn tiếp theo
Tại thời điểm này, bạn đã thiết lập được một nền tảng vững chắc cho máy chủ của mình, đảm bảo rằng các cấu hình cơ bản và các biện pháp bảo mật cần thiết đã được triển khai. Với nền tảng này, bạn có thể cài đặt và cấu hình bất kỳ phần mềm nào mà mình cần, từ các dịch vụ web, cơ sở dữ liệu, đến các công cụ quản lý và phát triển ứng dụng.
Nhờ vào các bước chuẩn bị đã thực hiện, việc triển khai phần mềm và dịch vụ sẽ diễn ra suôn sẻ và an toàn hơn, đồng thời bạn cũng đã có một hệ thống dễ dàng bảo trì và nâng cấp trong tương lai. Điều quan trọng là tiếp tục duy trì và giám sát hệ thống thường xuyên, đảm bảo rằng máy chủ hoạt động ổn định và an toàn. Trong các bước tiếp theo, bạn có thể tập trung vào việc tối ưu hóa hiệu suất và mở rộng khả năng của máy chủ để đáp ứng nhu cầu phát triển lâu dài của dự án.