Bảo mật CloudPanel trên Ubuntu 24.04

1. Cấu hình Bảo mật SSH

Cửa sổ Terminal

# Chỉnh sửa cấu hình SSH
sudo nano /etc/ssh/sshd_config

Thêm những cài đặt bảo mật sau:

Cửa sổ Terminal

# Cấu hình Bảo mật SSH
Port 2222                    # Cổng SSH tùy chỉnh (thay đổi từ 22 mặc định)
PermitRootLogin no          # Vô hiệu hóa đăng nhập root
PasswordAuthentication no   # Chỉ cho phép xác thực bằng key
Protocol 2                  # Chỉ sử dụng SSHv2
MaxAuthTries 3             # Giới hạn số lần thử đăng nhập
ClientAliveInterval 300     # Timeout sau 5 phút không hoạt động
X11Forwarding no           # Vô hiệu hóa X11 forwarding
AllowTcpForwarding no      # Vô hiệu hóa TCP forwarding

Lưu ý quan trọng: Trước khi restart SSH, hãy đảm bảo bạn đã có SSH key được cấu hình đúng để tránh bị khóa khỏi server.

Khởi động lại SSH:

sudo systemctl restart sshd

Kiểm tra trạng thái SSH:

sudo systemctl status sshd

Cloudpanel

2. Cấu hình Firewall cho CloudPanel

Cấu hình UFW dựa trên cấu trúc cơ sở dữ liệu của CloudPanel:

Cửa sổ Terminal

# Cấu hình UFW rules dựa trên bảng firewall_rule của CloudPanel
sqlite3 /home/clp/htdocs/app/data/db.sq3 << EOF
INSERT INTO firewall_rule (created_at, updated_at, port_range, source, description)
VALUES
(datetime('now'), datetime('now'), '8443', '0.0.0.0/0', 'CloudPanel Admin Interface'),
(datetime('now'), datetime('now'), '80', '0.0.0.0/0', 'HTTP'),
(datetime('now'), datetime('now'), '443', '0.0.0.0/0', 'HTTPS'),
(datetime('now'), datetime('now'), '2222', '0.0.0.0/0', 'Custom SSH Port');
EOF

Áp dụng quy tắc UFW:

# Thiết lập chính sách mặc định
sudo ufw default deny incoming   # Từ chối tất cả kết nối đến
sudo ufw default allow outgoing  # Cho phép tất cả kết nối đi

# Mở các cổng cần thiết
sudo ufw allow 8443/tcp comment 'CloudPanel Admin'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw allow 2222/tcp comment 'SSH'

# Kích hoạt UFW
sudo ufw enable

# Kiểm tra trạng thái firewall
sudo ufw status verbose

3. Cấu hình bổ sung cho Fail2Ban

Để tăng cường bảo mật, chúng ta sẽ cài đặt và cấu hình Fail2Ban:

# Cài đặt Fail2Ban
sudo apt update && sudo apt install fail2ban -y

# Tạo file cấu hình tùy chỉnh
sudo nano /etc/fail2ban/jail.local

Nội dung file jail.local:

[DEFAULT]
# Thời gian cấm (10 phút)
bantime = 600
# Thời gian theo dõi (10 phút)
findtime = 600
# Số lần thử tối đa
maxretry = 3
# Whitelist IP (thay đổi theo IP của bạn)
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log

[cloudpanel-admin]
enabled = true
port = 8443
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 1800

Khởi động Fail2Ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban

Nội dung script backup:

#!/bin/bash

# Script backup cơ sở dữ liệu CloudPanel
CP_HOME="/home/clp"
DB_PATH="${CP_HOME}/htdocs/app/data/db.sq3"
BACKUP_DIR="${CP_HOME}/backups/database"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

# Tạo thư mục backup
mkdir -p "$BACKUP_DIR"

# Kiểm tra xem cơ sở dữ liệu có tồn tại không
if [ ! -f "$DB_PATH" ]; then
    echo "Error: Database file not found at $DB_PATH"
    exit 1
fi

# Tạo backup với quyền truy cập đúng
sqlite3 "$DB_PATH" ".backup '${BACKUP_DIR}/db_${TIMESTAMP}.sq3'"

# Thiết lập quyền truy cập cho file backup
chmod 640 "${BACKUP_DIR}/db_${TIMESTAMP}.sq3"
chown clp:clp "${BACKUP_DIR}/db_${TIMESTAMP}.sq3"

# Chỉ giữ lại backup của 7 ngày gần nhất
find "$BACKUP_DIR" -name "db_*.sq3" -mtime +7 -delete

# Ghi log sự kiện backup vào bảng event của CloudPanel
sqlite3 "$DB_PATH" "
INSERT INTO event (
    created_at,
    user_name,
    event_name,
    event_data
) VALUES (
    datetime('now'),
    'system',
    'database_backup',
    'Database backup created: db_${TIMESTAMP}.sq3'
);"

echo "Database backup completed: db_${TIMESTAMP}.sq3"

Thiết lập quyền thực thi và tự động hóa:

# Cấp quyền thực thi cho script
sudo chmod +x /usr/local/bin/cloudpanel-db-backup.sh

# Tạo cron job để backup hàng ngày lúc 2h sáng
sudo crontab -e

Thêm dòng sau vào crontab:

0 2 * * * /usr/local/bin/cloudpanel-db-backup.sh >> /var/log/cloudpanel-backup.log 2>&1

7. Kiểm tra và Xác thực Cấu hình

Kiểm tra trạng thái các dịch vụ:

# Kiểm tra SSH
sudo systemctl status sshd

# Kiểm tra UFW
sudo ufw status

# Kiểm tra Fail2Ban
sudo fail2ban-client status

# Kiểm tra CloudPanel
sudo systemctl status cloudpanel

# Kiểm tra Nginx
sudo systemctl status nginx

# Kiểm tra PHP-FPM
sudo systemctl status php8.3-fpm

Test kết nối:

# Test SSH trên port mới
ssh -p 2222 username@your-server-ip

# Test CloudPanel admin interface
curl -k https://your-server-ip:8443

Kết luận Phần 1

Trong phần 1 này, chúng ta đã:

  1. Cấu hình bảo mật SSH với port tùy chỉnh và xác thực bằng key
  2. Thiết lập Firewall với UFW để bảo vệ server
  3. Cài đặt Fail2Ban để chống brute force attacks

Những cấu hình này tạo nền tảng bảo mật vững chắc cho CloudPanel trên Ubuntu 24.04. Trong các phần tiếp theo, chúng ta sẽ đi sâu vào bảo mật ứng dụng web, SSL/TLS, và các biện pháp bảo vệ nâng cao.

Lưu ý quan trọng:

  • Luôn backup server trước khi thực hiện thay đổi
  • Test tất cả cấu hình trên môi trường development trước
  • Ghi chú lại tất cả thay đổi để dễ troubleshooting
  • Cập nhật thường xuyên và theo dõi log security
Về tác giả: UP DATA

UPDATA cung cấp dịch vụ lưu trữ trang web hosting được quản lý, hỗ trợ bảo mật, tối ưu website miễn phí

Gọi điện Messenger Zalo