Chia sẻ cách cài đặt và vận hành SPO Cardano: I. Bảo mật máy chủ Ubuntu

1. Cập nhập Ubuntu

Các bản cập nhập có thể bao gồm các bản sửa lỗi, tính năng mới và cải tiến bảo mật, cải thiện hiệu suất …

sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get autoremove
sudo apt-get autoclean

2. Sử dụng tài khoản non-root.

Sử dụng tài khoản non-root làm tài khoản mặc định của bạn. Điều này sẽ giúp bạn tránh vô tình sử dụng quyền root khi không cần thiết. Ngoài ra còn giúp bảo vệ hệ thống của mình khỏi bị tấn công và giảm nguy cơ gây ra thiệt hại cho hệ thống.

sudo adduser test # Tạo tk với tên user là test
sudo usermod -aG sudo test # add user test vào nhóm sudo
sudo su – test # đăng nhập user test
whoami #hiển thị tên người dùng

3. Đổi Port máy chủ Linux.

Đổi port mặc định của linux bằng cách chỉnh sửa file sshd_config.

sudo nano /etc/ssh/sshd_config #sửa đổi file sshd_config

  • Tìm đến dòng chứa thông tin Port (mặc định Port 22) Thay thế số 22 bằng bất kỳ giá trị nào từ 1024 đến 65536, xóa biểu tượng # trước Port nếu có.
  • Lưu và thóat file sshd_config.
  • Khởi động lại dịch vụ SSH.

sudo systemctl restart ssh

Cấu hình lại tường lửa để cho phép đăng nhập ssh qua port mới.

sudo ufw allow <port number> /tcp #thay thế <port number> bằng Port vừa đổi ở trên
sudo ufw reload

kiểm tra lại SSH có hoạt động với port mới không

ssh test@server.public.ip.address -p <port number>

4. Sử dụng SSH keys

SSH keys là một cặp mã hóa bao gồm một khóa riêng tư (private key) và một khóa công khai (public key) được sử dụng trong giao thức SSH để xác thực và bảo mật quá trình truyền tải dữ liệu và đăng nhập từ xa vào các máy chủ.

Khóa riêng tư được lưu trữ trên máy tính của người dùng và được sử dụng để xác thực người dùng với máy chủ. Khóa công khai được lưu trữ trên máy chủ và được sử dụng để xác minh khóa riêng tư của người dùng.

Bạn có thể chọn 1 trong 2 kiểu mã hóa dưới này

Mã Hóa RSA

ssh-keygen -t rsa -b 4096

Mã Hóa ED25519

ssh-keygen -t ed25519

Chuyển khóa RSA tới server. Cập nhật lại tên khóa bằng lệnh.

ssh-copy-id -i $HOME/.ssh/<keyname>.pub test@server.public.ip.address

Đăng nhập vào máy chủ với tài khoản test

ssh test@server.public.ip.address

sau đó cấu hình lại file sshd_config

sudo nano /etc/ssh/sshd_config

  • Tìm đến dòng ChallengeResponseAuthentication và sửa thành no
  • Tìm đến dòng PasswordAuthentication và sửa thành no
  • Tìm đến dòng PermitRootLogin và sửa thành prohibit-password
  • Tìm đến dòng PermitEmptyPasswords và sửa thành no

Tiếp theo khởi động lại dịch vụ SSH

sudo systemctl restart SSH

Thử đăng nhập lại với khóa SSH key.

ssh -i <path to your SSH_key_name> test@server.public.ip.address -p <PORT_NUMBER>

5. Vô hiệu hóa tài khoản Root

Để vô hiệu hóa tài khoản root đăng nhập ta sử dụng lệnh sau

sudo passwd -l root

Khi cần đăng nhập trở lại ta sử dụng lệnh sau

sudo passwd -u root

6. Cài đặt Google Authenticator (2FA).


Google Authenticator là một ứng dụng xác thực hai yếu tố (2FA) được phát triển bởi Google. Ứng dụng này tạo ra mã xác minh một lần (OTP) dựa trên thời gian, được sử dụng để xác minh danh tính của người dùng khi đăng nhập vào các tài khoản trực tuyến.

a. Cài đặt

#Nâng cấp các gói phần mềm có sẵn
sudo apt-get update

#Cài đặt module Google Authentical
sudo apt-get install libpam-google-authenticator

google-authenticator

Sau khi bạn chạy lệnh trên, ứng dụng sẽ hỏi một số câu hỏi.

  • Do you want authentication tokens to be time-based (y/n) Y
  • Do you want me to update your “~/.google_authenticator” file (y/n) Y
  • Do you want to disallow multiple uses of the same authentication
    token? This restricts you to one login about every 30s, but it increases
    your chances to notice or even prevent man-in-the-middle attacks (y/n) Y
  • By default, a new token is generated every 30 seconds by the mobile app.
    In order to compensate for possible time-skew between the client and the server,
    we allow an extra token before and after the current time. This allows for a
    time skew of up to 30 seconds between the authentication server and client. Suppose you
    experience problems with poor time synchronization. In that case, you can increase the window
    from its default size of 3 permitted codes (one previous code, the current
    code, the next code) to 17 permitted codes (the eight previous codes, the current
    code, and the eight next codes). This will permit a time skew of up to 4 minutes
    between client and server.
    Do you want to do so? (y/n) N
  • If the computer that you are logging into isn’t hardened against brute-force
    login attempts, you can enable rate-limiting for the authentication module.
    By default, this limits attackers to no more than three login attempts every 30s.
    Do you want to enable rate-limiting (y/n) Y

b. Cấu Hình sshd để sử dụng 2FA

#Tạo bản sao lưu sshd -sshd_config
sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

#Chỉnh sửa sshd
sudo nano /etc/pam.d/sshd

#Thêm dòng sau vào cuối tập tin
#Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok
auth required pam_permit.so

#Chỉnh sửa sshd_config
sudo nano /etc/ssh/sshd_config
#Tìm đến dòng ChallengeResponseAuthentication yes

#Lưu và đóng tệp, sau đó khởi động lại SSH để tải lại các tệp cấu hình
sudo systemctl restart sshd.service

  • Để kiểm tra xem mọi thứ có hoạt động hay không, hãy mở thiết bị đầu cuối khác và thử đăng nhập qua SSH. Điều rất quan trọng là bạn phải duy trì phiên SSH hiện tại của mình. Nếu không bạn sẽ bị khóa khỏi máy chủ của mình

c. Làm cho ssh nhận biết 2FA.

#Chỉnh sửa file sshd_config
sudo nano /etc/ssh/sshd_config

#Thêm dòng sau vào cuối tập tin
AuthenticationMethods publickey,password publickey,keyboard-interactive

Tiếp theo mở lại tệp cấu hình sshd

sudo nano /etc/pam.d/sshd

tìm dòng @include common-auth và thêm # vào đầu dòng

Standard Un*x authentication.
@include common-auth

#Lưu và đóng tệp, sau đó khởi động lại SSH.
sudo systemctl restart sshd.service

Bây giờ hãy thử đăng nhập lại vào máy chủ bằng một phiên/cửa sổ đầu cuối khác. Không giống như lần trước, SSH sẽ yêu cầu mã xác minh của bạn

7. Cài đặt Fail2ban
Fail2ban là một ứng dụng bảo mật miễn phí và mã nguồn mở được sử dụng để tự động chặn các địa chỉ IP sau một số lần đăng nhập không thành công. Ứng dụng này có thể được sử dụng để bảo vệ nhiều dịch vụ khác nhau, bao gồm SSH, HTTP, FTP và POP3.

#Cài đặt
sudo apt-get install fail2ban -y

#Chỉnh sửa config
sudo nano /etc/fail2ban/jail.local

#Cấu hình bộ lọc
[sshd]
enabled = true
port = 2222
filter = sshd
bantime = 3600m
logpath = /var/log/auth.log
maxretry = 3
#whitelisted IP addresses phân biệt bởi dấu cách
ignoreip = ….duckdns.org ….duckdns.org xxx.duckdns.org xxx.xxx.xxx.xxyz

Về bangmap

Mọi bài viết chỉ vì mục đích thông tin, không phải là lời khuyên đầu tư và không có giá trị như một lời khuyên đầu tư. Mục tiêu duy nhất của chúng tôi là cung cấp cho người dùng những tin tức và cập nhật mới nhất trong hệ sinh thái Cardano.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *