Thứ năm, 21/04/2016 | 00:00 GMT+7

Thiết lập server ban đầu với Ubuntu 16.04

Khi bạn lần đầu tiên tạo một server Ubuntu 16.04 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 một - Đăng nhập 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 "root". Nếu bạn chưa đăng nhập vào server của bạn , bạn có thể làm theo hướng dẫn đầu tiên trong loạt bài này, Cách kết nối với Server bằng SSH , trình bày chi tiết quá trình này.

Nếu bạn chưa được kết nối với server của bạn , hãy tiếp tục và đăng nhập với quyền là user root bằng lệnh sau (thay thế từ được đánh dấu bằng địa chỉ IP công cộng của server của bạn):

  • ssh root@your_server_ip

Hoàn tất quá trình đăng nhập bằng cách 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, thì hãy cung cấp xác thực root của bạn (mật khẩu hoặc private key ). Nếu đây là lần đầu tiên bạn đăng nhập vào server bằng password , bạn cũng sẽ được yêu cầu thay đổi password root .

Về root

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

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. Ta sẽ hướng dẫn bạn cách đạt được các quyền gia tăng lúc bạn cần chúng.

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

Khi bạn đã đăng nhập bằng quyền root , ta chuẩn bị thêm 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 một tên user bạn muốn :

  • adduser sammy

Bạn sẽ được hỏi một số câu hỏi, bắt đầu với password account .

Nhập một password mạnh và, tùy chọn, điền vào bất kỳ thông tin bổ sung nào nếu bạn muốn. Điều này không bắt buộc và bạn có thể nhấn ENTER trong bất kỳ trường nào bạn muốn bỏ qua.

Bước ba - Đặc quyền root

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 root , ta có thể cài đặt những gì được gọi là “siêu user ” hoặc quyền root 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 “sudo”. Theo mặc định, trên Ubuntu 16.04, user thuộc group “sudo” được phép sử dụng sudo .

Như root , chạy lệnh này để thêm user mới của bạn vào group sudo (thay thế chữ tô đậm với user mới của bạn):

  • usermod -aG sudo sammy

Bây giờ user của bạn có thể chạy các lệnh với các quyền của user siêu cấp! Để biết thêm thông tin về cách thức hoạt động, hãy xem hướng dẫn sudoers này .

Nếu bạn muốn tăng cường bảo mật cho server của bạn , hãy làm theo các bước còn lại trong hướng dẫn này.

Bước tiếp theo trong việc bảo mật server của bạn là cài đặt xác thực public key cho user mới của bạn. Cài đặt này sẽ tăng tính bảo mật cho server của bạn bằng cách yêu cầu SSH key riêng tư để đăng nhập.

Tạo một cặp khóa

Nếu bạn chưa có cặp SSH key , bao gồm public key và private key , bạn cần tạo một cặp khóa. Nếu bạn đã có khóa muốn sử dụng, hãy chuyển sang bước Sao chép public key .

Để tạo một cặp khóa mới, hãy nhập lệnh sau vào terminal của máy local của bạn (tức là máy tính của bạn):

  • ssh-keygen

Giả sử user local của bạn được gọi là “localuser”, bạn sẽ thấy kết quả giống như sau:

ssh-keygen output
Generating public/private rsa key pair. Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

Nhấn quay lại để chấp nhận tên và đường dẫn file này (hoặc nhập tên mới).

Tiếp theo, bạn sẽ được yêu cầu nhập passphrase (password bảo vệ) để bảo mật khóa. Bạn có thể nhập passphrase (password bảo vệ) hoặc để trống passphrase (password bảo vệ) .

Lưu ý: Nếu bạn để trống passphrase (password bảo vệ) , bạn có thể sử dụng private key để xác thực mà không cần nhập passphrase (password bảo vệ) . Nếu bạn nhập passphrase (password bảo vệ) , bạn cần cả private key passphrase (password bảo vệ) để đăng nhập. Bảo mật khóa của bạn bằng passphrase (password bảo vệ) an toàn hơn, nhưng cả hai phương pháp đều có công dụng và an toàn hơn so với xác thực bằng password cơ bản.

Điều này tạo ra một private key , id_rsa , và một public key , id_rsa.pub , trong .ssh folder của localuser ‘s folder home. Lưu ý private key không được chia sẻ với bất kỳ ai không được phép truy cập vào server của bạn!

Sao chép public key

Sau khi tạo cặp SSH key , bạn cần sao chép public key của bạn vào server mới. Ta sẽ trình bày hai cách dễ dàng để làm điều này.

Lưu ý : Phương thức ssh-copy-id sẽ không hoạt động trên DigitalOcean nếu SSH key được chọn trong quá trình tạo Server. Điều này là do DigitalOcean vô hiệu hóa xác thực password nếu có SSH key và ssh-copy-id dựa vào xác thực password để sao chép khóa.

Nếu bạn đang sử dụng DigitalOcean và đã chọn SSH key trong quá trình tạo Server, hãy sử dụng tùy chọn 2 để thay thế.

Tùy chọn 1: Sử dụng ssh-copy-id

Nếu máy local của bạn đã cài đặt tập lệnh ssh-copy-id , bạn có thể sử dụng nó để cài đặt public key của bạn cho mọi user mà bạn có thông tin đăng nhập.

Chạy tập lệnh ssh-copy-id bằng cách chỉ định user và địa chỉ IP của server mà bạn muốn cài đặt khóa, như sau:

  • ssh-copy-id sammy@your_server_ip

Sau khi cung cấp password của bạn khi được yêu cầu , public key của bạn sẽ được thêm vào file .ssh/authorized_keys của user từ xa. Khóa cá nhân tương ứng bây giờ được dùng để đăng nhập vào server .

Tùy chọn 2: Cài đặt khóa theo cách thủ công

Giả sử bạn đã tạo cặp SSH key bằng bước trước, hãy sử dụng lệnh sau tại terminal của máy local của bạn để in public key của bạn ( id_rsa.pub ):

  • cat ~/.ssh/id_rsa.pub

Thao tác này sẽ in SSH key công khai của bạn, khóa này sẽ trông giống như sau:

id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local

Chọn public key và sao chép nó vào clipboard của bạn.

Để cho phép sử dụng SSH key để xác thực là user từ xa mới, bạn phải thêm public key vào một file đặc biệt trong folder chính của user .

Trên server , với quyền là user root , hãy nhập lệnh sau để tạm thời chuyển sang user mới (thay thế tên user của chính bạn):

  • su - sammy

Đến đây bạn sẽ ở trong folder chính của user mới của bạn.

Tạo một thư .ssh mới có tên .ssh và hạn chế quyền của nó bằng các lệnh sau:

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh

Bây giờ mở một file trong .ssh gọi authorized_keys với một editor . Ta sẽ sử dụng nano để chỉnh sửa file :

  • nano ~/.ssh/authorized_keys

Bây giờ, hãy chèn public key của bạn (phải có trong clipboard của bạn) bằng cách dán nó vào editor .

Nhấn CTRL-x để thoát khỏi file , sau đó nhấn y để lưu các thay đổi bạn đã thực hiện, sau đó ENTER để xác nhận tên file .

Bây giờ, hãy hạn chế quyền của file ủy quyền_có_cách bằng lệnh này:

  • chmod 600 ~/.ssh/authorized_keys

Nhập lệnh này một lần để quay lại user root :

  • exit

Bây giờ public key của bạn đã được cài đặt và bạn có thể sử dụng SSH key để đăng nhập với quyền user của bạn .

Để đọc thêm về cách xác thực khóa hoạt động, hãy đọc hướng dẫn này: Cách cấu hình xác thực dựa trên SSH key trên server Linux .

Tiếp theo, ta sẽ hướng dẫn bạn cách tăng cường bảo mật cho server của bạn bằng cách tắt xác thực password .

Như vậy, user mới của bạn có thể sử dụng SSH key để đăng nhập, bạn có thể tăng cường bảo mật cho server của bạn bằng cách tắt xác thực chỉ bằng password . Làm như vậy sẽ hạn chế quyền truy cập SSH vào server của bạn chỉ với xác thực public key . Đó là, cách duy nhất để đăng nhập vào server của bạn (ngoài console ) là sở hữu private key ghép nối với public key đã được cài đặt.

Lưu ý: Chỉ tắt xác thực password nếu bạn đã cài đặt public key cho user của bạn như được khuyến khích trong phần trước, bước bốn. Nếu không, bạn sẽ tự khóa mình khỏi server của bạn !

Để tắt xác thực password trên server của bạn, hãy làm theo các bước sau.

Như là user root hoặc người sử dụng sudo mới của bạn, mở cấu hình SSH daemon:

  • sudo nano /etc/ssh/sshd_config

Tìm dòng chỉ định PasswordAuthentication , bỏ ghi chú bằng cách xóa # đứng trước, sau đó thay đổi giá trị của nó thành “no” . Nó sẽ trông như thế này sau khi bạn thực hiện thay đổi:

sshd_config - Tắt xác thực password
PasswordAuthentication no 

Đây là hai cài đặt khác quan trọng đối với xác thực chỉ bằng khóa và được đặt theo mặc định. Nếu bạn chưa sửa đổi file này trước đây, bạn không cần phải thay đổi các cài đặt sau:

sshd_config - Các giá trị mặc định quan trọng
PubkeyAuthentication yes ChallengeResponseAuthentication no 

Khi bạn thực hiện xong các thay đổi của bạn , hãy lưu file bằng phương pháp ta đã xem trước đó ( CTRL-X , sau đó Y , sau đó ENTER ).

Nhập cái này để reload daemon SSH:

  • sudo systemctl reload sshd

Xác thực password hiện đã bị vô hiệu hóa. Server của bạn hiện chỉ có thể truy cập được với xác thực SSH key .

Bước sáu - Đăng nhập kiểm tra

Bây giờ, trước khi đăng xuất khỏi server , bạn nên kiểm tra cấu hình mới của bạn . Không ngắt kết nối cho đến khi bạn xác nhận bạn có thể đăng nhập thành công qua SSH.

Trong một terminal mới trên máy local của bạn, hãy đăng nhập vào server của bạn bằng account mới mà ta đã tạo. Để làm như vậy, hãy sử dụng lệnh này (thay thế tên user và địa chỉ IP server của bạn):

  • ssh sammy@your_server_ip

Nếu bạn đã thêm xác thực public key cho user của bạn , như được mô tả trong các bước bốn và năm, private key của bạn sẽ được sử dụng làm xác thực. Nếu không, bạn sẽ được yêu cầu nhập password của user của bạn .

Lưu ý về xác thực khóa: Nếu bạn đã tạo cặp khóa của bạn bằng passphrase (password bảo vệ) , bạn sẽ được yêu cầu nhập passphrase (password bảo vệ) cho khóa của bạn . Ngược lại, nếu cặp khóa của bạn không có passphrase (password bảo vệ) , bạn phải đăng nhập vào server của bạn mà không cần password .

Khi xác thực được cung cấp cho server , bạn sẽ đăng nhập với quyền là user mới của bạn .

Lưu ý , nếu bạn cần chạy một lệnh có quyền root, hãy nhập “sudo” trước nó như sau:

  • sudo command_to_run

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

Server Ubuntu 16.04 có thể sử dụng firewall UFW đảm bảo chỉ cho phép các kết nối đến một số dịch vụ nhất định. Ta có thể cài đặt firewall cơ bản rất dễ dàng bằng ứng dụng này.

Các ứng dụng khác nhau có thể đăng ký profile của họ 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ủa bạn ngay bây giờ, có một profile được đăng ký với UFW.

Bạn có thể thấy điều này bằng lệnh :

  • sudo ufw app list
Output
Available applications: OpenSSH

Ta cần đảm bảo firewall cho phép kết nối SSH để có thể đăng nhập lại vào lần sau. Ta có thể cho phép các kết nối này bằng lệnh :

  • sudo ufw allow OpenSSH

Sau đó, ta có thể kích hoạt firewall bằng lệnh :

  • sudo ufw enable

Gõ “y” và nhấn ENTER để tiếp tục. Bạn có thể thấy rằng các kết nối SSH vẫn được phép bằng lệnh :

  • sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

Nếu bạn cài đặt và cấu hình các dịch vụ bổ sung, bạn 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 vào. 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 .

Đi đâu từ đây?

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 cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 16.04
2016-04-21
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trong Ubuntu 16.04
2016-04-21
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trong Ubuntu 16.04
2016-04-21
Cách di chuyển một ứng dụng phân tích cú pháp sang server phân tích cú pháp trên Ubuntu 14.04
2016-02-20
Cách sử dụng Ansible và Tinc VPN để bảo mật cơ sở hạ tầng server của bạn
2016-02-18
Cách chạy server phân tích cú pháp trên Ubuntu 14.04
2016-02-03
Cách thiết lập server VNC trên Debian 8
2015-09-29
Cách cấu hình dịch vụ Linux để khởi động tự động sau khi gặp sự cố hoặc khởi động lại - Phần 2: Tham khảo
2015-09-04
Cách thiết lập server IRC trên Ubuntu 14.04 với InspIRCd 2.0 và Shaltúre
2015-08-26
Cách chuyển tiếp cổng thông qua cổng Linux với Iptables
2015-08-20