•9 min read

Bảo mật Ubuntu Server: Danh sách kiểm tra tăng cường bảo mật Linux thực tế

Bảo mật Ubuntu Server: Danh sách kiểm tra tăng cường bảo mật Linux thực tế

Trong vòng sáu mươi giây kể từ khi cấp phát một máy ảo mới trên AWS, DigitalOcean hoặc Hetzner và gắn địa chỉ IPv4 công khai, các botnet tự động và trình thu thập thông tin quét bắt đầu dò cổng 22. Các bot này thực hiện các cuộc tấn công từ điển liên tục chống lại root, kiểm tra các mật khẩu mặc định đã biết và dò tìm các lỗ hổng phần mềm đã lỗi thời.

Mặc dù Ubuntu Server đi kèm với các thiết lập mặc định ổn định, nhưng một cài đặt không được bảo vệ sẽ để lại các lỗ hổng tấn công nguy hiểm: xác thực bằng mật khẩu được bật trên SSH, các cổng mạng mở không hạn chế, thiếu tự động hóa vá lỗi bảo mật và không có giới hạn tốc độ tấn công vét cạn.

Bảo mật không phải là một bài tập lý thuyết—đó là một kỷ luật vận hành. Trong hướng dẫn này, chúng tôi sẽ đi qua một danh sách kiểm tra có chủ kiến, đã được kiểm nghiệm trong sản xuất để bảo vệ một máy chủ Ubuntu 24.04 / 22.04 LTS mới trước khi triển khai các tác vụ ứng dụng.

Audio Briefing
0:00 / 0:00

Bảo mật Ubuntu nổi bật
Công cụ phát triển miễn phí: Máy tính quyền Chmod Linux

Bạn đang quản lý quyền truy cập tệp của người dùng, nhóm và toàn hệ thống trên máy chủ Linux của mình? Sử dụng Máy tính quyền Chmod Linux trực quan của chúng tôi để tạo các cờ quyền bát phân và ký hiệu chính xác với hỗ trợ umask đầy đủ.


1. Cấp phát người dùng không phải Root & Phân tách đặc quyền

Không bao giờ chạy các ứng dụng sản xuất hoặc các phiên terminal tương tác trực tiếp với tư cách root. Một lỗi đánh máy trong lệnh Bash hoặc một lỗ hổng trong một dependency của ứng dụng có thể thực thi với các khả năng kernel không hạn chế.

Tạo một người dùng Sudo chuyên dụng

Đăng nhập với tư cách root và tạo một người dùng quản trị chuyên dụng:

# Add a new administrative user
adduser deployer

# Grant administrative sudo privileges
usermod -aG sudo deployer

# Copy your local SSH public key to the new user
mkdir -p /home/deployer/.ssh
cp /root/.ssh/authorized_keys /home/deployer/.ssh/
chown -R deployer:deployer /home/deployer/.ssh
chmod 700 /home/deployer/.ssh
chmod 600 /home/deployer/.ssh/authorized_keys

Advertisement

2. Bảo vệ OpenSSH (sshd_config)

Daemon SSH là cửa trước chính của máy chủ của bạn. Chúng ta phải hạn chế quyền truy cập độc quyền vào mật mã khóa công khai hiện đại và tắt hoàn toàn xác thực bằng mật khẩu.

Bảo vệ SSH

Chỉnh sửa /etc/ssh/sshd_config.d/99-hardened.conf (sử dụng các tệp cấu hình bổ sung ngăn chặn việc nâng cấp gói ghi đè lên các quy tắc tùy chỉnh của bạn):

# /etc/ssh/sshd_config.d/99-hardened.conf

# Completely disable root login over SSH
PermitRootLogin no

# Disable password authentication (Keys required)
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

# Restrict authentication attempts before dropping connection
MaxAuthTries 3
MaxSessions 2

# Modern cryptographic ciphers and key exchanges (Disables legacy RSA/SHA1)
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com

# Disable unused forwarding capabilities to prevent proxy tunneling
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no

Xác thực cú pháp cấu hình của bạn trước khi khởi động lại daemon:

# Test sshd configuration syntax
sudo sshd -t

# Restart SSH service
sudo systemctl restart ssh
Kiểm tra quan trọng

Đừng đóng phiên terminal hiện tại của bạn vội! Mở một tab terminal mới và xác minh rằng bạn có thể kết nối thành công qua ssh deployer@your_server_ip bằng khóa SSH của bạn.


3. Phân đoạn tường lửa với UFW (Uncomplicated Firewall)

Theo mặc định, Ubuntu cho phép tất cả các kết nối mạng đến và đi. Chúng ta phải thực thi chính sách ingress Từ chối Mặc định, chỉ mở rõ ràng các cổng mà khối lượng công việc của bạn yêu cầu.

Tường lửa UFW
# Reset UFW to default clean state
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Allow SSH with rate limiting (Blocks IPs making >6 connections in 30s)
sudo ufw limit 22/tcp comment 'SSH Rate Limited'

# Open standard web traffic ports
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# Enable the firewall
sudo ufw enable

# Verify active status
sudo ufw status verbose

Nếu cơ sở dữ liệu ứng dụng của bạn (ví dụ: PostgreSQL trên cổng 5432) phải được truy cập từ xa, không bao giờ mở cổng 5432 cho toàn bộ internet. Hạn chế quyền truy cập nghiêm ngặt vào mạng con riêng nội bộ hoặc IP VPN của bạn:

# Restrict PostgreSQL to internal VPN or backend IP
sudo ufw allow from 10.8.0.5 to any port 5432 proto tcp comment 'Postgres VPN Only'

4. Phòng thủ tấn công vét cạn tự động với Fail2ban

Ngay cả khi xác thực bằng mật khẩu đã bị vô hiệu hóa, các botnet liên tục spam các bắt tay SSH vẫn tiêu tốn chu kỳ CPU và làm lộn xộn các tệp nhật ký hệ thống.

Fail2ban giám sát các tệp nhật ký (/var/log/auth.log) để tìm các lần xác thực thất bại lặp lại và tự động chèn các quy tắc loại bỏ iptables tạm thời để chặn các địa chỉ IP gây rối.

# Install Fail2ban
sudo apt-get update && sudo apt-get install -y fail2ban

# Create local configuration override
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Cấu hình /etc/fail2ban/jail.local:

[DEFAULT]
# Ban IP for 1 hour after 5 failures in 10 minutes
bantime = 1h
findtime = 10m
maxretry = 5
banaction = ufw

[sshd]
enabled = true
port = 22
mode = aggressive

Khởi động lại và xác minh trạng thái Fail2ban:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Advertisement

5. Vá lỗi bảo mật tự động: unattended-upgrades

Các lỗ hổng zero-day trong OpenSSL, nhân Linux hoặc các thư viện hệ thống tiêu chuẩn được phát hiện thường xuyên. Việc dựa vào các lệnh apt upgrade thủ công đảm bảo máy chủ của bạn sẽ chạy các gói dễ bị tấn công giữa các khoảng thời gian bảo trì.

Bật vá lỗi bảo mật tự động:

sudo apt-get install -y unattended-upgrades update-notifier-common
sudo dpkg-reconfigure --priority=low unattended-upgrades

Chỉnh sửa /etc/apt/apt.conf.d/50unattended-upgrades:

// Automatically install critical security updates
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};

// Automatically remove unused dependencies
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Automatically reboot if a kernel update requires it (at 03:00 AM)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

6. Bảo vệ tham số Kernel & Mạng (sysctl)

Bảo vệ ngăn xếp mạng Linux chống lại các cuộc tấn công SYN floods, giả mạo IP và chuyển hướng gói tin man-in-the-middle bằng cách thêm các tham số này vào /etc/sysctl.d/99-security.conf:

# /etc/sysctl.d/99-security.conf

# Ignore ICMP echo broadcasts (Prevents Smurf attacks)
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Protect against SYN flood denial of service
net.ipv4.tcp_syncookies = 1

# Disable ICMP redirect acceptance (Prevents routing table poisoning)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

# Enable IP spoofing protection (Reverse Path Filtering)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Disable source routing packet acceptance
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Restrict dmesg kernel log access to root
kernel.dmesg_restrict = 1

Áp dụng các thay đổi sysctl ngay lập tức mà không cần khởi động lại:

sudo sysctl --system

Ma trận xác minh bảo vệ Linux

Bước bảo vệLệnh để xác minhĐầu ra dự kiến
SSH Root bị vô hiệu hóassh root@<IP>Permission denied (publickey)
Xác thực mật khẩu bị vô hiệu hóassh -o PubkeyAuthentication=no deployer@<IP>Permission denied (publickey)
Tường lửa hoạt độngsudo ufw statusStatus: active (Deny incoming)
Fail2ban đang chạysudo fail2ban-client pingServer replied: pong
Nâng cấp tự động được cấu hìnhsystemctl is-active unattended-upgradesactive

Các câu hỏi thường gặp

Tôi có nên thay đổi cổng SSH mặc định từ 22 sang một cổng ngẫu nhiên không?

Việc chuyển SSH sang một cổng không chuẩn (ví dụ: cổng 2222) làm giảm tiếng ồn bot tự động trong /var/log/auth.log, nhưng đó là bảo mật thông qua sự che giấu. Nó không bảo vệ chống lại các cuộc quét cổng có mục tiêu. Việc thực thi khóa SSH, vô hiệu hóa mật khẩu và chạy Fail2ban cung cấp bảo mật thực sự bất kể số cổng.

Làm cách nào để kiểm tra tường lửa một cách an toàn mà không bị khóa tài khoản?

Khi cấu hình UFW trên máy chủ từ xa, hãy thực hiện một cron job đã lên lịch hoặc lệnh sleep nền để đặt lại UFW nếu bạn mất kết nối: sudo sh -c "sleep 300 && ufw disable" & Nếu các quy tắc mới của bạn khóa bạn, hãy đợi 5 phút để bộ hẹn giờ tắt UFW và khôi phục quyền truy cập. Khi bạn xác nhận kết nối hoạt động, hãy hủy tác vụ nền.

Nên xoay vòng khóa SSH bao lâu một lần?

Các khóa Ed25519 hiện đại không hết hạn về mặt toán học, nhưng các tổ chức nên xoay vòng khóa bất cứ khi nào một thành viên nhóm rời đi hoặc mỗi năm một lần như một phần của kiểm toán bảo mật tiêu chuẩn. Hãy cân nhắc sử dụng Cơ quan cấp chứng chỉ OpenSSH hoặc khóa bảo mật phần cứng (YubiKeys với FIDO2) cho các đội ngũ doanh nghiệp.


Bạn cũng có thể thích

Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement