Cài đặt Bảo mật cơ bản cho CentOS 7
Lần đầu cài đặt server 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 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 và password cho account của user "root".
Đă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):
- ssh root@SERVER_IP_ADDRESS
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, sau đó cung cấp password root 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ần thay đổi password root.
Về root
User root là admin-user (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 account root, 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. Phần dưới sẽ hướng dẫn bạn cách gia tăng quyền 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
, 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à “demo”, bạn nên thay thế nó bằng một tên user bạn muốn:
- adduser demo
Tiếp theo, chỉ định password cho user mới (thay thế "demo" bằng user mà bạn vừa tạo):
- passwd demo
Hãy nhập password mạnh để bảo mật tốt.
Bước ba - 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 quản trị (admin).
Để tránh phải đăng xuất khỏi user thường và đăng nhập lại bằng account root, ta có thể cài đặt "superuser" hoặc quyền root cho account thông thường của bạn. Điều này sẽ cho phép user thường 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 "wheel" group. Theo mặc định, trên CentOS 7, user thuộc "wheel" group được phép sử dụng sudo
.
Tại root
, chạy lệnh này để thêm user mới của bạn vào group wheel (thay thế demo với user mới của bạn):
- gpasswd -a demo wheel
Như vậy, user có thể chạy các lệnh với các quyền của superuser! Để biết thêm thông tin về điều này, xem hướng dẫn sudoers .
Bước bốn - Thêm xác thực public key (Khuyến nghị)
Bước tiếp theo trong việc bảo mật server 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 bằng cách yêu cầu SSH key (khóa-SSH) để đăng nhập.
Tạo một cặp khóa
Nếu bạn chưa có cặp SSH key (khóa-SSH), 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 máy local 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:
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 cần nhập passphrase (password-bảo-vệ) để bảo mật khóa. Bạn có thể nhập passphrase hoặc để trống passphrase .
Lưu ý: Nếu bạn để trống passphrase, bạn có thể sử dụng private key để xác thực mà không cần nhập passphrase . Nếu bạn nhập passphrase , bạn cần cả private key và passphrase để đăng nhập. Bảo mật khóa của bạn bằng passphrase an toàn hơn, và 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!
Sao chép public key
Sau khi tạo cặp SSH key (khóa-SSH), bạn cần sao chép public key của bạn vào server mới. Ta sẽ đề cập đến hai cách dễ dàng để làm điều này.
Tùy chọn 1: Sử dụng ssh-copy-id
Nếu máy local đã cài đặt tập lệnh ssh-copy-id
, bạn có thể sử dụng nó để cài đặt public key 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 demo@SERVER_IP_ADDRESS
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. Private key 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 (khóa-SSH) bằng bước trước, hãy sử dụng lệnh sau tại terminal của máy local để có public key của bạn ( id_rsa.pub
):
- cat ~/.ssh/id_rsa.pub
Thao tác này sẽ in SSH key (khóa-SSH) công khai của bạn, khóa này sẽ trông giống như sau:
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.
Thêm public key cho user từ xa mới
Để cho phép sử dụng SSH key (khóa-SSH) để 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 để chuyển sang user mới (thay thế tên user của chính bạn):
- su - demo
Đến đây bạn sẽ ở trong folder chính của user mới.
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 vi để chỉnh sửa file:
- vi .ssh/authorized_keys
Vào chế độ insert, bằng cách nhấn i
, sau đó nhập public key của bạn (khóa này phải có trong clipboard của bạn) bằng cách paste vào trình chỉnh sửa. Bây giờ nhấn ESC
để thoát khỏi chế độ insert.
Nhập :x
rồi ENTER
để lưu và thoát khỏi file.
Bây giờ, hãy hạn chế quyền của file authorized_keys 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
Đến đây bạn có thể đăng nhập SSH với quyền là user mới của bạn, sử dụng private key làm xác thực.
Để đọ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 (khóa-SSH) trên server Linux .
Bước 5 - Cấu hình SSH Daemon
Bây giờ ta đã có account mới, ta có thể bảo mật server thêm bằng cách sửa đổi cấu hình SSH server để không cho phép truy cập SSH từ xa vào account root .
Bắt đầu bằng cách mở file cấu hình bằng editor với root:
- vi /etc/ssh/sshd_config
Ở đây, ta có tùy chọn để vô hiệu hóa đăng nhập root thông qua SSH. Đây thường là một cài đặt an toàn hơn vì giờ đây ta có thể truy cập vào server thông qua account regular user (user-thường).
Để tắt đăng nhập root từ xa, ta cần tìm dòng giống như sau:
#PermitRootLogin yes
Gợi ý: Để tìm kiếm dòng này, hãy nhập /PermitRoot
rồi nhấn ENTER
. Thao tác này sẽ đưa con trỏ đến ký tự “P” trên dòng đó.
Bỏ comment bằng cách xóa biểu tượng “#” (nhấn Shift-x
).
Thay “yes” bằng "no".
PermitRootLogin no
Vô hiệu hóa đăng nhập root từ xa được khuyến khích trên mọi server!
Nhập :x
rồi ENTER
để lưu và thoát khỏi file.
Tải lại SSH
Bây giờ ta đã thực hiện các thay đổi, ta cần khởi động lại dịch vụ SSH để sử dụng cấu hình mới:
- systemctl reload sshd
Như vậy bạn đã hoàn tất cấu hình, bạn có thể kiểm tra lại xem đã ổn chưa.
Tiếp theo?
Đến đây, bạn đã có một 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 bạn cần trên server.
Nếu bạn không chắc mình muốn làm gì với server, hãy xem hướng dẫn tiếp theo trong loạt bài này để biết Các bước được đề xuất bổ sung cho Server CentOS 7. Nó bao gồm những thứ như kích hoạt fail2ban
để giảm hiệu quả của các cuộc tấn công brute force, cài đặt firewall cơ bản, NTP và các swap file. Nó cũng cung cấp các liên kết đến các hướng dẫn chỉ cho bạn cách cài đặt các ứng dụng web phổ biến...
Các tin trước
Cài đặt Linux Apache MySQL PHP (LAMP) On CentOS 7 2014-07-21
Cấu hình firewall IP V6 trên Linux VPS 2014-04-01
Cài đặt và sử dụng yum repositories trên Centos-6 vps 2013-10-01
Sử dụng SSH để kết nối tới Remote Server trong Ubuntu 2013-09-10
Backup postgresql databases trên Ubuntu vps 2013-08-28
Sử dụng Cron để tự động hóa các công việc việc trên server 2013-08-23
Bảo mật postgresql trên Ubuntu vps 2013-08-22
Sử dụng sftp-to-securely-transfer-files với remote-server 2013-08-13
Quản trị packages trong Ubuntu và Debian với apt-get-apt-cache 2013-08-06
Sử dụng roles và quản lý cấp quyền trong postgresql trên vps 2013-08-05