Bảo mật cơ bản Ubuntu 18.04
Khi cài mới server Ubuntu 18.04, có một số bước cấu hình ta nên thực hiện sớm với thiết lập cơ bản, nhằm bảo mật và hiệu quả sử dụng, và tạo một nền tảng vững chắc cho các hoạt động tiếp theo.Lưu ý: Hướng dẫn này trình bày các bước cụ thể chi tiết, làm theo quy trình này theo cách thủ công có thể hữu ích để ta có các kỹ năng quản trị hệ thống cơ bản và như bài tập để hiểu đầy đủ các hành động đang được thực hiện trên server. Nếu muốn bạn có thể tự tạo ra script từ các bước này, để tự động chạy cho các cài đặt server về sau.
Bước 1 - Đăng nhập root
Để đăng nhập vào server, ta cần địa chỉ IP, mật khẩu hoặc khóa SSH xác thực nếu có.
Nếu bạn chưa được kết nối với server , hãy tiếp tục và đăng nhập với tư cách là người dùng root bằng lệnh sau (thay thế phần được đánh dấu của lệnh bằng địa chỉ IP công khai của server ):
- 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 bằng mật khẩu, hãy cung cấp mật khẩu root để đă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 server 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ị trong môi trường Linux có các quyền rất rộng. Do 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. Điều này là do quyền root có thể rủi ro khi thực hiện các lệnh gây lỗi cho hệ thống vô tình hay cố ý.
Tiếp theo là tạo một tài khoản người dùng với quyền giảm bớt nhằm an toàn hơn. Bạn có thể có các quyền gia tăng khi cần (sẽ hướng dẫn sau).
Bước 2 - Tạo người dùng mới
Khi đã đăng nhập bằng quyền root , ta chuẩn bị thêm tài khoản người dùng mới 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 tên người dùng khác:
- adduser sammy
Bạn sẽ được hỏi một số câu hỏi, bắt đầu với mật khẩu tài khoản.
Nhập một mật khẩu mạnh và, điền vào thông tin bổ sung nếu cần. Điều này không bắt buộc và bạn có thể nhấn ENTER
bỏ qua.
Bước 3 - Cấp 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 quyền tài khoản thông thường. Tuy nhiên, đôi khi ta có thể cần thực hiện các công việc quản trị.
Để tránh phải đăng xuất khỏi regular user và đăng nhập lại bằng tài khoản root , ta có thể thiết lập “siêu người dùng” hoặc quyền root cho tài khoản thường . Điều này sẽ cho phép regular user 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 những quyền này cho người dùng mới, ta 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 sudo
.
Với root hãy chạy lệnh này để thêm người dùng mới vào nhóm sudo:
- usermod -aG sudo sammy
Vậy, khi đăng nhập với tư cách là regular user , bạn có thể nhập sudo
trước các lệnh để thực hiện với quyền superuser (người dùng cao cấp).
Bước 4 - Thiết lập firewall cơ bản
Ubuntu 18.04 có thể sử dụng firewall UFW để cho phép các kết nối đến một số dịch vụ nhất định. Ta có thể thiết lập firewall cơ bản dễ dàng bằng ứng dụng này.
Lưu ý: Chỉ nên sử dụng một firewall tại một thời điểm để tránh xung đột Rule khó gỡ lỗi.
Các ứng dụng khác nhau có thể đăng ký profile với UFW khi cài đặt. Các cấu hình này cho phép UFW quản lý các ứng dụng này theo tên. OpenSSH, dịch vụ cho phép ta kết nối với server, có một profile được đăng ký với UFW.
Bạn sẽ thấy với lệnh:
- ufw app list
Available applications:
OpenSSH
Ta cần đảm bảo rằng firewall cho phép kết nối SSH để ta có thể đăng nhập lại vào lần sau, cho phép các kết nối này với lệnh:
- ufw allow OpenSSH
Sau đó, kích hoạt firewall với lệnh:
- 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 phép với lệnh:
- ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Vì firewall hiện đang chặn tất cả các kết nối ngoại trừ SSH , nếu bạn cài đặt và cấu hình các dịch vụ bổ sung, bạn sẽ cần điều chỉnh cài đặt firewall để 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 này .
Bước 5 - Bật quyền truy cập bên ngoài cho regular user
Bây giờ ta có một regular user để sử dụng hàng ngày, ta cần đảm bảo có thể SSH trực tiếp vào tài khoản.
Lưu ý: Trước khi bạn có thể đăng nhập và sử dụng sudo
với người dùng mới, bạn nên đăng nhập bằng quyền root . Vì 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 với tư cách root.
Quá trình cấu hình quyền truy cập SSH cho người dùng mới phụ thuộc vào việc tài khoản root của server sử dụng mật khẩu hoặc khóa SSH để 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 , 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 teminal (đầu cuối) mới và sử dụng SSH với tên người dùng mới :
- ssh sammy@your_server_ip
Nhập mật khẩu để đăng nhập. 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 lệnh như sau:
- sudo command_to_run
Bạn sẽ được nhắc nhập mật khẩu regular user khi sử dụng sudo
lần đầu tiên mỗi phiên.
Để tăng cường bảo mật cho server, bạn nên thiết lập khóa SSH thay vì sử dụng xác thực mật khẩu, theo hướng dẫn về cách thiết lập khóa SSH trên Ubuntu 18.04 để tìm hiểu cách 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 khóa SSH
Nếu bạn đã đăng nhập vào tài khoản root 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 một bản sao của khóa công khai 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ó trong file ~/.ssh/authorized_keys
của tài khoản root trên server, 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 trong phiên hiện tại của ta.
Cách đơn giản nhất để sao chép các file giữ nguyên quyền 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 để trùng với tên regular user bạn tạo:
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 các nguồn 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 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 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í, SSH sẽ không thể tìm thấy chúng.
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
Bây giờ, hãy mở một phiên teminal (đầu cuối) mới và sử dụng SSH với tên người dùng mới :
- ssh sammy@your_server_ip
Bạn 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. Chú ý, 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 lệnh:
- sudo command_to_run
Bạn cần nhập mật khẩu regular user khi sử dụng sudo
lần đầu tiên mỗi phiên.
Tiếp theo?
Vậy bạn đã có cấu hình nền tảng vững chắc cho server . Bạn có thể cài đặt bất kỳ phần mềm nào tiếp theo nhé.
Các tin trước
Cài đặt SSH Keys trên Ubuntu 16.04 2018-04-12 Cài đặt Node.js trên Ubuntu 16.04 2018-03-07 Cài đặt Anaconda Python trên Ubuntu 16 04 2017-12-27 Cài đặt MySQL trên CentOS 7 2016-12-01 Cài đặt MySQL trên Ubuntu 16.04 2016-11-23 Cài đặt Node.js Application for Production trên Ubuntu 16.04 2016-11-01 Cài đặt Nginx Server Blocks (Virtual Hosts) trên Ubuntu 16.04 2016-05-19 Cài đặt OpenVPN Server trên Ubuntu 16.04 2016-05-04 Cài đặt JAVA với Apt-Get trên Ubuntu 16.04 2016-04-23 Cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 16.04 2016-04-21