Ngày đăng: November 28, 2023
Sau khi tạo máy chủ Ubuntu 18.04 mới, bạn nên thực hiện một số bước cấu hình như một phần của quá trình thiết lập máy chủ ban đầu nhằm tăng tính bảo mật và tạo điều kiện thuận lợi cho việc quản lý sau này.
Hướng dẫn này sẽ hướng dẫn bạn một số quy trình mà bạn nên hoàn thành sớm để tạo nền tảng vững chắc cho máy chủ mới của mình trước khi chuyển sang cài đặt và định cấu hình bất kỳ phần mềm hoặc dịch vụ nào.
Các máy chủ mới được cài đặt thường chỉ thiết lập tài khoản root và đó là tài khoản bạn sẽ sử dụng để đăng nhập vào máy chủ của mình lần đầu tiên.
Root user là người dùng quản trị có đặc quyền rất rộng. Do các đặc quyền nâng cao của tài khoản root nên bạn không nên sử dụng nó thường xuyên. Điều này là do một phần sức mạnh vốn có của tài khoản root có khả năng thực hiện những thay đổi có tính hủy diệt, thậm chí là do vô tình. Vì lý do đó, phương pháp được khuyến nghị là thiết lập một người dùng hệ thống thông thường và cấp cho người dùng này quyền sudo
để nó có thể chạy các lệnh quản trị với một số hạn chế nhất định. Trong bước tiếp theo, bạn sẽ thiết lập một người dùng như vậy.
Để bắt đầu, bạn sẽ cần đăng nhập vào máy chủ của mình. Đảm bảo bạn biết địa chỉ IP công cộng của máy chủ. Để xác thực, bạn sẽ cần mật khẩu của tài khoản hoặc SSH private key (khóa riêng SSH) cho tài khoản của root user, trong trường hợp bạn đã thiết lập SSH key để xác thực trong máy chủ. Nếu bạn chưa đăng nhập vào máy chủ của mình, bạn có thể muốn làm theo hướng dẫn của chúng tôi về cách kết nối với Droplet của bạn bằng SSH.
Nếu bạn chưa kết nối với máy chủ của mình, hãy tiếp tục và đăng nhập với tư cách root user bằng lệnh sau. Đảm bảo thay thế phần được đánh dấu của lệnh bằng địa chỉ IP công cộng của máy chủ của bạn:
- ssh root@your_server_ip
Chấp nhận cảnh báo về tính xác thực của máy chủ nếu nó xuất hiện. Nếu bạn đang sử dụng xác thực bằng mật khẩu, hãy cung cấp mật khẩu root để đăng nhập. Ngoài ra, nếu bạn đang sử dụng SSH key được bảo vệ bằng cụm mật khẩu, bạn có thể được nhắc nhập cụm mật khẩu vào lần đầu tiên bạn sử dụng khóa mỗi phiên (session). Ngoài ra, nếu đây là lần đầu tiên bạn đăng nhập vào máy chủ bằng mật khẩu, bạn cũng có thể được nhắc thay đổi mật khẩu root.
Trong bước tiếp theo, bạn sẽ thiết lập tài khoản người dùng hệ thống mới với các đặc quyền bị giảm bớt và định cấu hình người dùng này để chạy các lệnh quản trị thông qua sudo
.
Khi bạn đã đăng nhập bằng root, bạn có thể tạo một người dùng mới sẽ là người dùng hệ thống thông thường của bạn kể từ bây giờ.
Ví dụ sau tạo một người dùng mới tên là sammy, nhưng bạn nên thay thế nó bằng tên người dùng bạn chọn:
- adduser sammy
Bạn sẽ được hỏi một số câu hỏi, bắt đầu bằng mật khẩu tài khoản.
Nhập mật khẩu mạnh và tùy ý điền bất kỳ thông tin bổ sung nào nếu bạn muốn. Điều này là không bắt buộc và bạn chỉ cần nhấn ENTER
vào bất kỳ trường nào bạn muốn bỏ qua.
Trong bước tiếp theo, bạn sẽ thiết lập đặc quyền sudo
cho người dùng này. Điều này sẽ cho phép người dùng thực thi các tác vụ quản trị với tư cách là root user thông qua chương trình sudo
.
Bây giờ bạn có một tài khoản người dùng mới với các đặc quyền thông thường. Tuy nhiên, đôi khi, bạn sẽ cần thực hiện các tác vụ quản trị, như quản lý máy chủ, chỉnh sửa tệp cấu hình hoặc khởi động lại máy chủ.
Để tránh phải đăng xuất khỏi người dùng thông thường và đăng nhập lại bằng tài khoản root, bạn có thể thiết lập những đặc quyền được gọi là “superuser” hoặc quyền root cho tài khoản thông thường của mình. Điều này sẽ cho phép người dùng thông thường của bạn chạy các lệnh với đặc quyền quản trị bằng cách thêm tiền tố vào mỗi lệnh bằng từ sudo
.
Để thêm các đặc quyền này cho người dùng mới, bạn cần thêm người dùng mới vào nhóm sudo. Theo mặc định trên Ubuntu 18.04, người dùng thuộc nhóm sudo được phép sử dụng lệnh sudo
.
Lệnh sau sẽ sửa đổi cài đặt người dùng mặc định, bao gồm nhóm sudo trong danh sách các nhóm mà người dùng đã thuộc về. Hãy chú ý đến đối số -a
, viết tắt của từ append (bổ sung). Nếu không có tùy chọn này, các nhóm hiện tại mà người dùng được liên kết sẽ được thay thế bằng sudo
, điều này sẽ gây ra những hậu quả không mong muốn. Đối số -G
yêu cầu usermod
thay đổi cài đặt nhóm của người dùng.
Với quyền root, hãy chạy lệnh này để thêm người dùng mới của bạn vào nhóm sudo (thay thế từ được đánh dấu bằng người dùng mới của bạn):
- usermod -aG sudo sammy
Người dùng hệ thống của bạn hiện đã được thiết lập. Trong bước tiếp theo, bạn sẽ định cấu hình tường lửa cơ bản cho máy chủ của mình.
UFW (Uncomplicated Firewall) là một công cụ cấu hình tường lửa đi kèm với máy chủ Ubuntu. Bạn có thể sử dụng tường lửa UFW để đảm bảo chỉ cho phép kết nối với một số dịch vụ nhất định trên máy chủ của mình.
Các ứng dụng có thể đăng ký hồ sơ của mình với UFW sau khi cài đặt. Các cấu hình này cho phép UFW quản lý cài đặt cho mỗi ứng dụng theo tên. OpenSSH, dịch vụ cho phép bạn kết nối với máy chủ của mình ngay bây giờ, có hồ sơ được đăng ký trong UFW.
Chạy lệnh sau để có danh sách tất cả các cấu hình hiện có:
- ufw app list
OutputAvailable applications:
OpenSSH
Bạn cần đảm bảo rằng tường lửa cho phép kết nối SSH để bạn có thể đăng nhập lại vào lần sau. Bạn có thể cho phép các kết nối này bằng cách gõ:
- ufw allow OpenSSH
Sau đó, bạn có thể kích hoạt tường lửa bằng:
- ufw enable
Gõ “y
” và nhấn ENTER
để tiếp tục. Bạn có thể thấy các kết nối SSH vẫn được cho phép bằng cách gõ:
- ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Vì tường lửa hiện đang chặn tất cả các kết nối ngoại trừ SSH, nên nếu cài đặt và định cấu hình các dịch vụ bổ sung, bạn sẽ cần điều chỉnh cài đặt tường lửa để cho phép lưu lượng truy cập được chấp nhận. Bạn có thể tìm hiểu một số thao tác UFW phổ biến trong hướng dẫn Những điều cơ bản về UFW: Các quy tắc và lệnh tường lửa phổ biến.
Bây giờ bạn đã có người dùng thông thường để sử dụng hàng ngày, bạn cần đảm bảo rằng bạn có thể SSH trực tiếp vào tài khoản.
Lưu ý: Cho đến khi xác minh rằng bạn có thể đăng nhập và sử dụng sudo
làm người dùng mới, chúng tôi khuyên bạn nên duy trì đăng nhập bằng root. Bằng cách này, nếu gặp sự cố, bạn có thể khắc phục sự cố và thực hiện mọi thay đổi cần thiết với quyền root.
Quá trình định cấu hình quyền truy cập SSH cho người dùng mới của bạn tùy thuộc vào việc tài khoản root của máy chủ của bạn sử dụng mật khẩu hay SSH key để xác thực.
Nếu bạn đăng nhập vào tài khoản root bằng mật khẩu, điều đó có nghĩa là xác thực mật khẩu đã được bật cho SSH. Bạn có thể SSH vào tài khoản người dùng mới của mình bằng cách mở phiên cuối mới và sử dụng SSH với tên người dùng mới của bạn:
- ssh sammy@your_server_ip
Sau khi nhập mật khẩu người dùng thông thường của bạn, bạn sẽ đăng nhập. Hãy nhớ rằng, nếu bạn cần chạy một lệnh có quyền quản trị, hãy nhập sudo
trước nó như thế này:
- sudo command_to_run
Bạn sẽ được nhắc nhập mật khẩu người dùng thông thường của mình khi sử dụng sudo
lần đầu tiên trong mỗi phiên (và định kỳ sau đó).
Để tăng cường bảo mật cho máy chủ của bạn, chúng tôi thực sự khuyên bạn nên thiết lập SSH key thay vì sử dụng xác thực bằng mật khẩu. Làm theo hướng dẫn của chúng tôi về cách thiết lập SSH key trên Ubuntu 18.04 để tìm hiểu cách định cấu hình xác thực dựa trên khóa.
Nếu bạn đăng nhập vào tài khoản root bằng SSH key, có thể tính năng xác thực mật khẩu đã bị tắt đối với SSH. Bạn sẽ cần thêm bản sao local public key của mình vào tệp ~/.ssh/authorized_keys
của người dùng mới để đăng nhập thành công.
Vì public key của bạn đã có trong tệp ~/.ssh/authorized_keys
của tài khoản root trên máy chủ nên bạn có thể sao chép cấu trúc tệp và thư mục đó sang tài khoản người dùng mới trong phiên hiện tại của mình.
Cách đơn giản nhất để sao chép các tệp có quyền sở hữu và quyền chính xác là bằng lệnh rsync
. Thao tác này sẽ sao chép thư mục .ssh
của root user, giữ nguyên các quyền và sửa đổi chủ sở hữu tệp, tất cả chỉ bằng một lệnh duy nhất. Đảm bảo thay đổi các phần được đánh dấu của lệnh sau để khớp với tên người dùng thông thường của bạn:
Lưu ý: Lệnh rsync
xử lý các nguồn và đích, kết thúc bằng dấu gạch chéo ở cuối, khác với các nguồn không có dấu gạch chéo ở cuối. Khi sử dụng rsync
bên dưới, hãy đảm bảo rằng thư mục nguồn (~/.ssh
) không bao gồm dấu gạch chéo ở cuối (kiểm tra để đảm bảo rằng bạn không sử dụng ~/.ssh/
).
Nếu bạn vô tình thêm dấu gạch chéo vào lệnh, rsync
sẽ sao chép nội dung của thư mục ~/.ssh
của tài khoản root vào thư mục chính của sudo
user, thay vì sao chép toàn bộ cấu trúc thư mục ~/.ssh
. Các tệp sẽ ở sai vị trí và SSH sẽ không thể tìm và sử dụng chúng.
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
Bây giờ, hãy mở một phiên cuối mới và thử đăng nhập bằng tên người dùng mới của bạn:
- ssh sammy@your_server_ip
Bạn sẽ có thể đăng nhập vào tài khoản người dùng mới mà không bị nhắc nhập mật khẩu SSH của người dùng từ xa để xác thực. Nếu SSH key của bạn được thiết lập bằng keyphrase, bạn có thể được yêu cầu mở khóa SSH key bằng cách cung cấp mật khẩu đó khi bạn sử dụng khóa lần đầu tiên trong phiên cuối.
Hãy nhớ rằng, nếu bạn cần chạy một lệnh có đặc quyền quản trị, hãy nhập sudo
trước lệnh như thế này:
- sudo command_to_run
Bạn sẽ được nhắc nhập mật khẩu người dùng thông thường của mình khi sử dụng sudo
lần đầu tiên trong mỗi phiên (và định kỳ sau đó).
Tại thời điểm này, bạn đã có một nền tảng vững chắc cho máy chủ của mình. Bạn có thể cài đặt bất kỳ phần mềm nào bạn cần trên máy chủ của mình ngay bây giờ.