
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.
Interactive octal & symbolic permission matrix with CLI builder
Convert between octal (755, 644, 600) and symbolic (rwxr-xr-x) Linux permissions with an interactive matrix and shell command builder.

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 đủ.
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ế.
Đă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
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.

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
Đừ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.
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.

# 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'
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
unattended-upgradesCá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";
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
| Bước bảo vệ | Lệnh để xác minh | Đầu ra dự kiến |
|---|---|---|
| SSH Root bị vô hiệu hóa | ssh root@<IP> | Permission denied (publickey) |
| Xác thực mật khẩu bị vô hiệu hóa | ssh -o PubkeyAuthentication=no deployer@<IP> | Permission denied (publickey) |
| Tường lửa hoạt động | sudo ufw status | Status: active (Deny incoming) |
| Fail2ban đang chạy | sudo fail2ban-client ping | Server replied: pong |
| Nâng cấp tự động được cấu hình | systemctl is-active unattended-upgrades | active |
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.
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.
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.
Một quản trị viên hệ thống đang tăng cường bảo mật cho một máy chủ Ubuntu mới. Sau khi tạo một người dùng quản trị chuyên dụng và sao chép SSH public key của họ, họ chỉnh sửa `/etc/ssh/sshd_config.d/99-hardened.conf` để thêm `PermitRootLogin no` và `PasswordAuthentication no`. Bước tiếp theo quan trọng nhất để đảm bảo quyền truy cập quản trị liên tục và bảo mật máy chủ là gì?
Làm sạch log AI CLI, tạo biểu thức cron, giải mã JWT và tính quyền chmod offline.

Hướng dẫn không rườm rà về SSH và SCP - bao gồm cổng 22, xác thực dựa trên khóa, tệp cấu hình SSH, truyền tệp an toàn và các mẹo bảo mật máy chủ mà mọi nhà phát triển nên biết.
Đọc tiếp
Hướng dẫn toàn diện về WireGuard site-to-site kernel mesh: định tuyến mã hóa thông lượng cao và tối ưu hóa MTU với kiến trúc cấp độ sản xuất cùng các ví dụ về mã.
Đọc tiếp
Tăng cường bảo mật cho GitHub Actions runner tự host bằng Actions Runner Controller (ARC), cô lập mạng, container không root và OIDC token có thời hạn ngắn.
Đọc tiếp