Chủ Nhật, 27/09/2020 | 12:44 GMT+7

Cài đặt bảo mật cơ bản cho Centos 8

Khi cài đặt máy chủ CentOS 8, có một số bước cấu hình ta nên thực hiện sớm để tăng bảo mật và khả năng sử dụng máy chủ, tạo nền tảng tốt cho các việc tiếp theo. Sau khi cài đặt, bạn đã có địa chỉ IP của máy chủ và mật khẩu tài khoản root, bạn hãy làm theo các bước sau để chuẩn hóa việc cài đặt từ đầu.

Bước 1 - Đăng nhập với user root

Để đăng nhập vào máy chủ, bạn vào màn hình Console trực tiếp và đăng nhập với Root.

Nếu làm từ xa, bạn cần IP máy chủ, cần mật khẩu, hoặc nếu đã cài đặt khóa SSH để xác thực, thì cần khóa private cho tài khoản của người dùng root.

Nếu làm việc trên máy tinh Window, bạn có thể dùng trình SSH client như putty... để đăng nhập từ xa.

Ở đây, ta đăng nhập thông qua Dòng lệnh trên một máy chủ Linux khác vào máy Centos mới cài.

Đăng nhập với tư cách người dùng root bằng lệnh sau, với your_server_ip là địa chỉ ip hoặc domain máy chủ của bạn:

  • ssh root@your_server_ip

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 của bạn để đăng nhập. Nếu bạn đang sử dụng khóa SSH đượ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. 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 .

Về root

Người dùng root là người dùng quản trị Linux có toàn quyền quản trị. Do các đặc quyền cao của tài khoản root , bạn không nên sử dụng nó thường xuyên. Do khả năng thực hiện các lệnh có thể tạo rủi ro, dù vô tình hay cố ý.

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

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

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

Ví dụ này tạo một người dùng mới có tên là sammy , bạn có thể  thay thế bằng bất kỳ tên người dùng nào mà bạn thích:

  • adduser sammy

Tiếp theo, đặt mật khẩu mạnh cho người dùng sammy :

  • passwd sammy

Đến đây người dùng sammy sẽ sẵn sàng sử dụng, nhưng trước tiên, ta sẽ cấp cho người dùng này đặ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 tài khoản người dùng mới với các đặc quyền tài khoản thông thường.

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

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

Hãy chạy lệnh này để thêm người dùng mới vào nhóm wheel:

  • usermod -aG wheel sammy

Sau đó, khi đăng nhập với tư cách là người dùng thông thường, ta có thể nhập sudo trước các lệnh để thực hiện các hành động với đặc quyền người dùng siêu cấp.

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

Tường lửa cung cấp mức độ bảo mật cơ bản cho máy chủ. 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 máy chủ 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.

Có thể có một số tường lửa khác, nhưng Bạn chỉ nên sử dụng một tường lửa tại một thời điểm để tránh các xung đột các luật chặn.

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 tường lửa ngay:

  • systemctl start firewalld

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

  • 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 ý rằng nó vừa active vừa enabled , nên nó sẽ khởi động mỗi khi máy chủ được khởi động lại.

Dịch vụ đã được thiết lập và đang chạy, chúng ta có thể sử dụng tiện ích firewall-cmd để lấy và đặt Rule (luật chặn) cho tường lửa.

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 tải lại tường lửa:

  • firewall-cmd --reload

Nhớ rằng ta phải mở tường lửa một cách tường minh (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ể định cấu hình sau này.

Bước 5 - Bật quyền truy cập bên ngoài cho người dùng thông thường

Ta vừa có một người dùng không phải root để có thể sử dụng hàng ngày, ta cần đảm bảo rằng có thể sử dụng nó để SSH vào máy chủ.

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 của mình bằng mật khẩu , thì 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 bằng cách mở một phiên SSH và sử dụng SSH với tên người dùng mới của bạn:

  • ssh sammy@your_server_ip

Chú ý 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 nó như sau:

  • sudo command_to_run

Bạn sẽ cần nhập mật khẩu người dùng 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 máy chủ, bạn nên thiết lập khóa SSH thay vì sử dụng xác thực mật khẩu . Làm theo hướng dẫn của tôi về cách thiết lập khóa SSH trên CentOS 8

Nếu tài khoản root sử dụng xác thực khóa SSH

Nếu bạn đã đăng nhập vào tài khoản root của mình bằng khóa SSH , thì xác thực mật khẩu sẽ bị vô hiệu hóa đối với SSH. Bạn sẽ cần thêm bản sao khóa công khai của mình vào file ~/.ssh/authorized_keys của người dùng mới để đăng nhập thành công.

Vì khóa công khai của bạn đã có trong file ~/.ssh/authorized_keys của tài khoản root trên máy chủ, ta có thể sao chép file và cấu trúc thư mục đó vào tài khoản người dùng mới của mình.

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 người dùng root , 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 để khớp với tên người dùng thường:

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 không có dấu gạch chéo. Khi sử dụng rsync bên dưới, hãy đảm bảo rằng thư mục 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 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 tài khoản root vào ~/.ssh chính của người dùng 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ờ, hãy mở một phiên SSH mới với người dùng không phải root:

  • ssh sammy@your_server_ip

Nên đăng nhập vào tài khoản người dùng mới mà không cần sử dụng mật khẩu. 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:

  • sudo command_to_run

Bạn sẽ cần 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 mỗi phiên (và định kỳ sau đó).

Kết luận

Đến đây bạn đã thiết lập nền tảng cơ bản bảo mật cho máy chủ. Bạn có thể cài thêm bất kỳ phần mềm nào cần thiết ngay bây giờ.


Tags:

Các tin trước

Lập lịch với Crontab trên Centos 8 2020-09-27
Bảo mật Apache với Lets Encrypt trên Centos 8 2020-09-19
Tạo chứng chỉ số tự ký trên Apache Centos 8 (self-signed-ssl-certificate) 2020-09-19
Tối ưu SQL với Index, FullText Search 2020-08-10
Cài đặt Node.js trên Ubuntu 18.04 2020-08-06
Bảo mật Apache với Lets Encrypt 2020-08-06
Thực hành bài LAB Toàn tập Select SQL Query 2020-08-05
Cài đặt XAMPP Trên Hệ điều hành Windows 2020-08-05
Toàn tập SQL - Bài tập Lệnh SELECT Database Toàn tập - tinh gọn nhất 2020-08-03
Cài đặt MySQL trên Ubuntu 20.04 2020-07-30