Thứ năm, 06/02/2020 | 00:00 GMT+7

Thiết lập server ban đầu với CentOS 8

Khi bạn lần đầu tiên tạo một server CentOS 8 mới, có một số bước cấu hình mà bạn nên thực hiện sớm như một phần của cài đặt cơ bản. Điều này sẽ tăng tính bảo mật và khả năng sử dụng cho server của bạn và sẽ tạo cho bạn một nền tảng vững chắc cho các hành động tiếp theo.

Bước 1 - Đăng nhập với quyền root

Để đăng nhập vào server , bạn cần biết địa chỉ IP công cộng của server . Bạn cũng cần password hoặc, nếu bạn đã cài đặt SSH key để xác thực, thì private key cho account của user gốc . Nếu bạn chưa đăng nhập vào server của bạn , bạn có thể cần làm theo tài liệu của ta về cách kết nối với Server bằng SSH , trình bày chi tiết về quy trình này.

Nếu bạn chưa kết nối với server của bạn , hãy đăng nhập với quyền user root ngay bây giờ bằng lệnh sau (thay thế phần được đánh dấu của lệnh bằng địa chỉ IP công cộng của server 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 server nếu nó xuất hiện. Nếu bạn đang sử dụng xác thực password , hãy cung cấp password gốc của bạn để đăng nhập. Nếu bạn đang sử dụng SSH key được bảo vệ bằng passphrase (password bảo vệ) , bạn có thể được yêu cầu nhập passphrase (password bảo vệ) vào lần đầu tiên bạn sử dụng khóa mỗi phiên. Nếu đây là lần đầu tiên bạn đăng nhập vào server bằng password , bạn cũng có thể được yêu cầu thay đổi password gốc .

Về root

User root là admin-user trong môi trường Linux và nó có các quyền rất rộng. Vì các quyền cao của account gốc , bạn không nên sử dụng nó một cách thường xuyên. Do quyền của account gốc có thể thực hiện lệnh rủi ro do vô tình hay cố ý. .

Như vậy, bước tiếp theo là cài đặt một account user thay thế với phạm vi ảnh hưởng giảm bớt cho công việc hàng ngày. Tài khoản này sẽ vẫn có thể nhận được các quyền gia tăng khi cần thiết.

Bước 2 - Tạo user mới

Khi bạn đã đăng nhập bằng quyền root , bạn có thể tạo account user mới mà ta sẽ sử dụng để đăng nhập từ bây giờ.

Ví dụ này tạo một user mới có tên là sammy , nhưng bạn nên thay thế nó bằng bất kỳ tên user nào bạn muốn :

  • adduser sammy

Tiếp theo, đặt password mạnh cho user sammy :

  • passwd sammy

Bạn sẽ được yêu cầu nhập password hai lần. Sau khi làm như vậy, user của bạn sẽ sẵn sàng sử dụng, nhưng trước tiên, ta sẽ cấp cho user này các quyền bổ sung để sử dụng sudo . Điều này sẽ cho phép ta chạy các lệnh dưới quyền root khi cần thiết.

Bước 3 - Cấp Đặc quyền Quản trị

Bây giờ, ta có một account user mới với các quyền account thông thường. Tuy nhiên, đôi khi ta có thể cần thực hiện các việc admin .

Để tránh phải đăng xuất khỏi user bình thường của ta và đăng nhập lại bằng account gốc , ta có thể cài đặt những gì được gọi là “siêu user ” hoặc quyền gốc cho account thường của bạn . Điều này sẽ cho phép user bình thường của ta chạy các lệnh có quyền quản trị bằng cách đặt từ sudo trước mỗi lệnh.

Để thêm các quyền này cho user mới, ta cần thêm user mới vào group bánh xe . Theo mặc định, trên CentOS 8, user thuộc group bánh xe được phép sử dụng sudo .

Như là user root , hãy chạy lệnh này để thêm user mới của bạn vào group wheel (thay thế chữ đánh dấu bằng tên user mới của bạn):

  • usermod -aG wheel sammy

Như vậy, khi đã đăng nhập với quyền là regular user , bạn có thể nhập sudo trước các lệnh để thực hiện các hành động với quyền của user siêu cấp.

Bước 4 - Cài đặt firewall cơ bản

Tường lửa cung cấp mức độ bảo mật cơ bản cho server của bạn. Các ứng dụng này có trách nhiệm từ chối lưu lượng truy cập đến mọi cổng trên server của bạn, ngoại trừ những cổng / dịch vụ mà bạn đã phê duyệt rõ ràng. CentOS có một dịch vụ gọi là firewalld để thực hiện chức năng này. Một công cụ gọi là firewall-cmd được sử dụng để cấu hình firewalld firewall policy .

Lưu ý: Nếu server của bạn đang chạy trên DigitalOcean, bạn có thể tùy chọn sử dụng Tường lửa cloud DigitalOcean thay vì firewalld . Ta khuyên bạn chỉ nên sử dụng một firewall tại một thời điểm để tránh các luật xung đột có thể khó gỡ lỗi.

Lần đầu tiên cài đặt firewalld :

  • dnf install firewalld -y

Cấu hình firewalld mặc định cho phép kết nối ssh , vì vậy ta có thể bật firewall ngay lập tức:

  • systemctl start firewalld

Kiểm tra trạng thái của dịch vụ đảm bảo nó đã bắt đầu:

  • systemctl status firewalld
Output
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago Docs: man:firewalld(1) Main PID: 13180 (firewalld) Tasks: 2 (limit: 5059) Memory: 22.4M CGroup: /system.slice/firewalld.service └─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

Lưu ý nó vừa active vừa enabled , nghĩa là nó sẽ khởi động theo mặc định nếu server được khởi động lại.

Bây giờ dịch vụ đã được cài đặt và đang chạy, ta có thể sử dụng trình firewall-cmd để lấy và đặt thông tin policy cho firewall .

Trước tiên, hãy liệt kê những dịch vụ nào đã được phép:

  • firewall-cmd --permanent --list-all
Output
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Để xem các dịch vụ bổ sung mà bạn có thể bật theo tên, hãy nhập:

  • firewall-cmd --get-services

Để thêm một dịch vụ được phép, hãy sử dụng --add-service :

  • firewall-cmd --permanent --add-service=http

Điều này sẽ thêm dịch vụ http và cho phép lưu lượng TCP đến cổng 80 . Cấu hình sẽ cập nhật sau khi bạn cập nhật firewall :

  • firewall-cmd --reload

Lưu ý bạn sẽ phải mở firewall một cách rõ ràng (với các dịch vụ hoặc cổng) cho bất kỳ dịch vụ bổ sung nào mà bạn có thể cấu hình sau này.

Bước 5 - Bật quyền truy cập bên ngoài cho regular user của bạn

Bây giờ ta có một user không phải root thường xuyên để sử dụng hàng ngày, ta cần đảm bảo ta có thể sử dụng nó để SSH vào server của bạn .

Lưu ý: Cho đến khi xác minh bạn có thể đăng nhập và sử dụng sudo với user mới của bạn , ta khuyên bạn nên đăng nhập với quyền root . Bằng cách này, nếu bạn gặp sự cố, bạn có thể khắc phục sự cố và thực hiện bất kỳ thay đổi cần thiết nào khi root . Nếu bạn đang sử dụng DigitalOcean Server và gặp sự cố với kết nối SSH gốc của bạn , bạn có thể đăng nhập vào Server bằng DigitalOcean Console .

Quá trình cấu hình quyền truy cập SSH cho user mới của bạn phụ thuộc vào việc account gốc của server của bạn sử dụng password hoặc SSH key để xác thực.

Nếu account root sử dụng xác thực password

Nếu bạn đã đăng nhập vào account gốc của mình bằng password , thì xác thực password được bật cho SSH. Bạn có thể SSH vào account user mới của bạn bằng cách mở một phiên terminal mới và sử dụng SSH với tên user mới của bạn:

  • ssh sammy@your_server_ip

Sau khi nhập password của regular user , bạn sẽ được đăng nhập. Lưu ý , 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ư sau:

  • sudo command_to_run

Bạn sẽ được yêu cầu nhập password regular user của bạn khi sử dụng sudo lần đầu tiên mỗi phiên (và định kỳ sau đó).

Để tăng cường bảo mật cho server của bạn, ta thực sự khuyên bạn nên cài đặt SSH key thay vì sử dụng xác thực password . Làm theo hướng dẫn của ta về cách cài đặt SSH key trên CentOS 8 để tìm hiểu cách cấu hình xác thực dựa trên khóa.

Nếu account root sử dụng xác thực SSH key

Nếu bạn đã đăng nhập vào account gốc của mình bằng SSH key , thì xác thực password sẽ bị vô hiệu hóa cho SSH. Bạn cần thêm bản sao public key của bạn vào file ~/.ssh/authorized_keys của user mới để đăng nhập thành công.

Vì public key của bạn đã có trong file ~/.ssh/authorized_keys của account gốc trên server , ta có thể sao chép file và cấu trúc folder đó vào account user mới của bạn .

Cách đơn giản nhất để sao chép các file có quyền sở hữu và quyền chính xác là sử dụng lệnh rsync . Thao tác này sẽ sao chép .ssh của user gốc , bảo toàn quyền và sửa đổi chủ sở hữu file , tất cả chỉ trong một lệnh duy nhất. Đảm bảo thay đổi các phần được đánh dấu của lệnh bên dưới để trùng với tên regular user 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 khác với lệnh không có dấu gạch chéo. Khi sử dụng rsync bên dưới, hãy đảm bảo folder nguồn ( ~/.ssh ) không có dấu gạch chéo (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 ~/.ssh của account gốc vào ~/.ssh chính của user sudo thay vì sao chép toàn bộ cấu trúc thư ~/.ssh . Các file sẽ ở sai vị trí và SSH sẽ không thể tìm thấy và sử dụng chúng.

  • rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

Bây giờ, quay lại một terminal mới trên máy local của bạn, hãy mở một phiên SSH mới với user không phải root của bạn:

  • ssh sammy@your_server_ip

Bạn phải đăng nhập vào account user mới mà không cần sử dụng password . Lưu ý , 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ư sau:

  • sudo command_to_run

Bạn sẽ được yêu cầu nhập password regular user của bạn khi sử dụng sudo lần đầu tiên mỗi phiên (và định kỳ sau đó).

Kết luận

Lúc này, bạn đã có một nền tảng vững chắc cho server của bạn . Bạn có thể cài đặt bất kỳ phần mềm nào bạn cần trên server của bạn ngay bây giờ.


Tags:

Các tin liên quan

Cách thiết lập Nền tảng Cloud IDE server mã trên Ubuntu 18.04 [Quickstart]
2020-01-02
Cách thiết lập server lưu trữ đối tượng bằng Minio trên Ubuntu 18.04
2019-12-13
Cách xây dựng server GraphQL trong Node.js bằng GraphQL-yoga và MongoDB
2019-12-12
Cách thiết lập server GraphQL trong Node.js với server Apollo và Sequelize
2019-12-12
Cách sử dụng Ansible để tự động thiết lập server ban đầu trên Ubuntu 18.04
2019-11-27
Cách sử dụng Ansible để tự động thiết lập server ban đầu trên Ubuntu 18.04
2019-11-27
Cách sử dụng Ansible để tự động thiết lập server ban đầu trên Ubuntu 18.04
2019-11-27
Sử dụng Sự kiện do server gửi trong Node.js để tạo ứng dụng thời gian thực
2019-11-18
Cách thiết lập front-end server PageKite trên Debian 9
2019-10-25
Cách thiết lập server trang kết thúc phía trước PageKite trên Debian 9
2019-10-25