---
title: "Thiết lập máy chủ ban đầu với Ubuntu 18.04"
description: "Thiết lập máy chủ ban đầu với Ubuntu 18.04"
url: https://cloudfly.vn/techblog/thiet-lap-may-chu-ban-dau-voi-ubuntu-1804
image: https://media.cloudfly.vn/posts/techblog_cYR9ETS.jpg
---

# Thiết lập máy chủ ban đầu với Ubuntu 18.04

## Giới thiệu

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.

## Bước 1 - Đăng nhập bằng Root

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:
```command
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`.

## Bước 2 - Tạo người dùng mới

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:
```custom_prefix(#)
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ước 3 - Cấp đặc quyền quản trị

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):
```custom_prefix(#)
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.

## Bước 4 - Thiết lập tường lửa cơ bản

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ó:
```custom_prefix(#)
ufw app list
```

```
[secondary_label Output]
Available 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õ:
```custom_prefix(#)
ufw allow OpenSSH
```

Sau đó, bạn có thể kích hoạt tường lửa bằng:
```custom_prefix(#)
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õ:
```custom_prefix(#)
ufw status
```

```
[secondary_label Output]
Status: 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ước 5 - Kích hoạt quyền truy cập bên ngoài cho người dùng thông thường của bạ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.

<$>[note]
**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 tài khoản root sử dụng xác thực mật khẩu

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:
```command
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:
```command
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 tài khoản root sử dụng xác thực SSH key

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:

<$>[note]
**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.
<$>

```custom_prefix(#)
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:
```command
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:
```command
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 đó).

## Kết luận

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ờ.
