Hướng Dẫn Bảo Mật Server Toàn Diện – 10 Biện Pháp Cần Thiết Cho Máy Chủ Linux
- Published on

Bảo mật server là một trong những kỹ năng quan trọng nhất mà bất kỳ quản trị viên hệ thống nào cũng cần nắm vững. Một máy chủ Linux không được bảo vệ đúng cách có thể trở thành mục tiêu dễ dàng cho tin tặc — từ tấn công brute force SSH, khai thác lỗ hổng dịch vụ, cho đến cài cắm mã độc đào tiền ảo hoặc gửi thư rác.
Theo thống kê từ Shodan và Censys, có hơn 30 triệu máy chủ Linux kết nối Internet công cộng, và một tỷ lệ đáng kể trong số đó vẫn sử dụng cấu hình mặc định — root login bật, password auth bật, firewall không được kích hoạt. Đây chính là cánh cửa mở cho các cuộc tấn công tự động quét diện rộng.
Bài viết này sẽ hướng dẫn bạn 10 biện pháp bảo mật server thiết yếu, từ cơ bản đến nâng cao, áp dụng được cho mọi bản phân phối Linux phổ biến (Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux). Nếu bạn chưa quen với dòng lệnh, hãy tham khảo trước các lệnh Linux cơ bản cho người mới quản trị hosting.
1. SSH Hardening — Củng Cố Cổng Vào Server
SSH (Secure Shell) là giao thức quản trị server từ xa phổ biến nhất. Nếu SSH bị xâm phạm, tin tặc có toàn quyền kiểm soát máy chủ. Đây là bước đầu tiên và quan trọng nhất trong bảo mật server.
1.1 Vô Hiệu Hóa Đăng Nhập Root
Người dùng root có toàn quyền trên hệ thống. Thay vì đăng nhập trực tiếp bằng root, hãy tạo một tài khoản sudo và chỉ dùng root khi thực sự cần:
# Tạo user mới
sudo adduser quantri
# Thêm vào nhóm sudo
sudo usermod -aG sudo quantri
# Kiểm tra
su - quantri
sudo whoami # Kết quả: root
Sau đó tắt đăng nhập root trong SSH:
sudo nano /etc/ssh/sshd_config
# Sửa: PermitRootLogin no
1.2 Xác Thực Bằng SSH Key Thay Vì Mật Khẩu
SSH key an toàn hơn mật khẩu rất nhiều nhờ sử dụng cặp khóa bất đối xứng 2048 hoặc 4096 bit:
# Trên máy tính cá nhân (không phải server)
ssh-keygen -t rsa -b 4096 -C "email@example.com"
# Copy public key lên server
ssh-copy-id quantri@your-server-ip
# Kiểm tra đã copy thành công
ssh quantri@your-server-ip
Sau đó tắt xác thực bằng mật khẩu trong SSH:
sudo nano /etc/ssh/sshd_config
# Sửa các dòng:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
# Restart SSH
sudo systemctl restart sshd
Cảnh báo: Trước khi tắt PasswordAuthentication, hãy chắc chắn bạn đã kiểm tra đăng nhập bằng SSH key thành công. Nếu không, bạn sẽ mất quyền truy cập server!
1.3 Đổi Cổng SSH Mặc Định
Cổng 22 là mục tiêu quét đầu tiên của bot tấn công. Đổi sang cổng khác (ví dụ 2222) giúp giảm đáng kể lượng log fail:
sudo nano /etc/ssh/sshd_config
# Tìm dòng: #Port 22
# Sửa thành: Port 2222
# Cập nhật firewall (nếu dùng UFW)
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
sudo systemctl restart sshd
1.4 Giới Hạn Người Dùng Được Phép SSH
Chỉ cho phép một số user nhất định đăng nhập SSH:
sudo nano /etc/ssh/sshd_config
# Thêm dòng:
AllowUsers quantri devops admin
sudo systemctl restart sshd
Nếu bạn dùng PuTTY trên Windows để SSH vào server, hãy xem thêm hướng dẫn tải và sử dụng PuTTY miễn phí để cấu hình SSH key đúng cách.
2. Cấu Hình Tường Lửa (Firewall)
Tường lửa là lớp bảo vệ đầu tiên cho server, kiểm soát luồng dữ liệu vào-ra dựa trên port, giao thức và địa chỉ IP.
2.1 Sử Dụng UFW (Uncomplicated Firewall) — Ubuntu/Debian
UFW là công cụ đơn giản hóa iptables, phù hợp cho người mới:
# Cài đặt (Ubuntu thường có sẵn)
sudo apt update
sudo apt install ufw -y
# Mặc định chặn mọi kết nối đến
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Cho phép SSH (nếu đã đổi port thì dùng port mới)
sudo ufw allow ssh
# Hoặc: sudo ufw allow 2222/tcp
# Cho phép HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Bật UFW
sudo ufw enable
# Kiểm tra trạng thái
sudo ufw status verbose
2.2 Sử Dụng firewalld — CentOS/RHEL/Rocky Linux
# Cài đặt
sudo dnf install firewalld -y
sudo systemctl enable --now firewalld
# Cho phép dịch vụ
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# Kiểm tra
sudo firewall-cmd --list-all
Bạn có thể tìm hiểu thêm về cách triển khai web server an toàn trong hướng dẫn cài đặt Nginx trên VPS bao gồm cả cấu hình firewall.
3. Fail2ban — Tự Động Chặn Brute Force
Fail2ban là công cụ quét log server, phát hiện các lần đăng nhập thất bại liên tiếp và tự động thêm rule firewall để chặn IP tấn công.
# Cài đặt
sudo apt install fail2ban -y # Ubuntu/Debian
# sudo dnf install fail2ban -y # CentOS/RHEL
# Copy file cấu hình
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Cấu hình
sudo nano /etc/fail2ban/jail.local
Thêm hoặc chỉnh sửa các thông số:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3
Bạn có thể cấu hình fail2ban cho nhiều dịch vụ khác — web server (Apache/Nginx), Postfix, Dovecot, vsftpd...
# Khởi động
sudo systemctl enable --now fail2ban
# Kiểm tra trạng thái
sudo fail2ban-client status
sudo fail2ban-client status sshd
4. Cập Nhật Bảo Mật Tự Động
Phần mềm lỗi thời với lỗ hổng bảo mật đã biết là nguyên nhân hàng đầu khiến server bị xâm nhập. Cập nhật kịp thời là biện pháp đơn giản nhưng cực kỳ hiệu quả.
4.1 Cập Nhật Hệ Thống Thủ Công
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
# sudo dnf update -y # CentOS/RHEL
Kiểm tra các bản cập nhật bảo mật riêng:
sudo apt list --upgradable 2>/dev/null | grep -i security
4.2 Cấu Hình Cập Nhật Tự Động (unattended-upgrades)
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# Chọn "Yes" khi được hỏi
Kiểm tra cấu hình:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Đảm bảo các dòng sau được bỏ comment:
"origin=Ubuntu,archive=jammy-security";
"origin=Debian,archive=bookworm-security";
Lưu ý: Với các server production, bạn nên có môi trường staging để kiểm tra bản cập nhật trước khi áp dụng lên server thật.
Nếu bạn đang tìm hiểu về VPS, hãy xem VPS là gì? để hiểu rõ hơn về môi trường server bạn đang quản lý.
5. Quản Lý Người Dùng Và Phân Quyền
5.1 Nguyên Tắc Least Privilege
Mỗi người dùng chỉ nên có quyền tối thiểu cần thiết để thực hiện công việc:
# Tạo user với home directory
sudo adduser tennguoidung
# Thêm vào nhóm cụ thể thay vì sudo
sudo usermod -aG www-data tennguoidung # Ví dụ: nhóm web
# Xóa user không còn sử dụng
sudo deluser tennguoidung
sudo rm -rf /home/tennguoidung
5.2 Phân Quyền File An Toàn
# File: 644 (rw-r--r--)
# Thư mục: 755 (rwxr-xr-x)
# Thiết lập mặc định an toàn
echo "umask 027" >> ~/.bashrc
# Ví dụ cho web directory
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
5.3 Khóa Tài Khoản Không Sử Dụng
# Khóa tài khoản
sudo passwd -l tennguoidung
# Thay đổi shell thành /usr/sbin/nologin
sudo usermod -s /usr/sbin/nologin tennguoidung
6. Bảo Mật Các Dịch Vụ Phổ Biến
6.1 MySQL/MariaDB
# Chạy script bảo mật
sudo mysql_secure_installation
Script này sẽ hướng dẫn bạn:
- Đặt mật khẩu root
- Xóa anonymous user
- Tắt remote root login
- Xóa database test
- Reload privilege table
Tạo user riêng cho từng ứng dụng thay vì dùng root:
CREATE USER 'tenapp'@'localhost' IDENTIFIED BY 'matkhau_manh';
GRANT ALL PRIVILEGES ON ten_db.* TO 'tenapp'@'localhost';
FLUSH PRIVILEGES;
6.2 PHP
Cấu hình PHP an toàn trong php.ini:
disable_functions = exec,passthru,shell_exec,system,popen,proc_open,curl_exec,curl_multi_exec
open_basedir = /var/www/html:/tmp
expose_php = Off
display_errors = Off
allow_url_fopen = Off
allow_url_include = Off
6.3 Nginx / Apache
Thêm security headers trong cấu hình web server:
# Nginx — trong server block
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
Tắt hiển thị phiên bản server:
# Nginx: trong http block
server_tokens off;
# Apache: trong httpd.conf hoặc .htaccess
ServerTokens Prod
ServerSignature Off
Nếu bạn muốn tìm hiểu sâu hơn, xem thêm Nginx là gì? và Apache là gì? để hiểu rõ cách cấu hình bảo mật cho từng loại web server.
7. Kernel Hardening — Củng Cố Nhân Linux
Tinh chỉnh tham số kernel thông qua sysctl giúp bảo vệ server khỏi nhiều dạng tấn công mạng:
sudo nano /etc/sysctl.d/99-security.conf
Thêm các dòng sau:
# Chống IP Spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Không chuyển tiếp IP (nếu không cần làm router)
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0
# Chống SYN Flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
# Không phản hồi ICMP redirect
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# Bảo vệ khỏi time-wait assassination
net.ipv4.tcp_rfc1337 = 1
# Tắt source routing
net.ipv4.conf.all.accept_source_route = 0
Áp dụng ngay mà không cần reboot:
sudo sysctl -p /etc/sysctl.d/99-security.conf
8. Phát Hiện Xâm Nhập Và Kiểm Tra Bảo Mật
8.1 Lynis — Công Cụ Audit Bảo Mật Toàn Diện
Lynis quét toàn bộ hệ thống, phát hiện điểm yếu và đưa ra gợi ý khắc phục:
# Cài đặt
sudo apt install lynis -y
# Chạy audit
sudo lynis audit system
# Xem gợi ý
sudo lynis show suggestions
Kết quả đầu ra bao gồm điểm bảo mật tổng thể và danh sách chi tiết các khuyến nghị.
8.2 RKHunter — Phát Hiện Rootkit
Rootkit là phần mềm độc hại ẩn sâu trong hệ thống, thường không bị phát hiện bởi antivirus thông thường:
sudo apt install rkhunter -y
# Cập nhật database
sudo rkhunter --propupd
# Kiểm tra
sudo rkhunter --check --skip-keypress
8.3 AIDE — Kiểm Tra Toàn Vẹn File
AIDE (Advanced Intrusion Detection Environment) tạo cơ sở dữ liệu checksum của các file quan trọng và cảnh báo khi có thay đổi:
sudo apt install aide -y
# Khởi tạo database
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# Kiểm tra hàng ngày
sudo aide --check
Kết hợp với bảo mật website để có lớp bảo vệ toàn diện cả ở tầng ứng dụng lẫn hệ điều hành.
9. Giám Sát Log Và Cảnh Báo Sớm
9.1 Logrotate — Quản Lý Dung Lượng Log
Log server có thể chiếm hàng GB dung lượng ổ cứng nếu không được xoay vòng:
sudo nano /etc/logrotate.d/custom
Thêm cấu hình:
/var/log/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
postrotate
systemctl reload rsyslog
endscript
}
9.2 Auditd — Giám Sát Hành Vi Hệ Thống
auditd ghi lại tất cả hành động trên hệ thống — ai đã truy cập file nào, lệnh gì đã chạy:
sudo apt install auditd -y
sudo systemctl enable --now auditd
# Theo dõi thay đổi file cấu hình quan trọng
sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config
sudo auditctl -w /etc/passwd -p wa -k user_db
sudo auditctl -w /etc/shadow -p wa -k shadow_db
# Xem log
sudo ausearch -k ssh_config
9.3 Logwatch — Báo Cáo Log Hàng Ngày
sudo apt install logwatch -y
# Gửi báo cáo qua email mỗi sáng
sudo logwatch --detail high --mailto admin@example.com --service All --range yesterday
10. Danh Sách Kiểm Tra Bảo Mật Server
Dưới đây là checklist HTML bạn có thể in ra và đánh dấu khi hoàn thành từng bước:
STT | Biện Pháp | Mức Độ | Kiểm Tra |
|---|---|---|---|
| 1 | Tạo user sudo, tắt root login SSH | Cần thiết | sudo grep PermitRootLogin /etc/ssh/sshd_config |
| 2 | SSH key thay mật khẩu | Cần thiết | sudo grep PasswordAuthentication /etc/ssh/sshd_config |
| 3 | Bật firewall (UFW/firewalld) | Cần thiết |
|
| 4 | Cài đặt Fail2ban | Cần thiết | sudo fail2ban-client status |
| 5 | Cập nhật bảo mật tự động | Cần thiết | sudo dpkg -l | grep unattended-upgrades |
| 6 | Phân quyền file đúng | Cần thiết | ls -la /var/www/html |
| 7 | Bảo mật MySQL/MariaDB | Cần thiết | sudo mysql_secure_installation |
| 8 | PHP safe config | Cần thiết | php -i | grep disable_functions |
| 9 | Security headers web server | Cần thiết | curl -I https://yourdomain.com |
| 10 | Kernel hardening (sysctl) | Khuyến nghị | sudo sysctl net.ipv4.tcp_syncookies |
| 11 | Chạy Lynis audit | Khuyến nghị | sudo lynis audit system |
| 12 | Kiểm tra rootkit (rkhunter) | Khuyến nghị | sudo rkhunter --check |
| 13 | Thiết lập auditd | Khuyến nghị | sudo systemctl status auditd |
| 14 | Sao lưu định kỳ | Cần thiết | Kiểm tra script backup |
| 15 | Cập nhật monitoring & alert | Khuyến nghị | Logwatch / email alert |
FAQ — Các Câu Hỏi Thường Gặp Về Bảo Mật Server
Bảo mật server khác gì với bảo mật website?
Bảo mật server tập trung vào hệ điều hành và hạ tầng — SSH, firewall, kernel, user, dịch vụ nền. Bảo mật website tập trung vào ứng dụng — CMS, plugin, SQL injection, XSS, SSL, WAF. Hai lớp bảo mật này bổ trợ cho nhau. Xem chi tiết tại hướng dẫn bảo mật website.
Có cần thiết phải tắt đăng nhập root không?
Có. Đây là biện pháp quan trọng nhất. Root có toàn quyền trên hệ thống, và log SSH sẽ luôn có hàng trăm lần thử đăng nhập root từ bot. Dùng user sudo và chuyển sang root chỉ khi cần bằng sudo -i hoặc su -.
Sau khi cấu hình xong, tôi nên làm gì tiếp theo?
Cập nhật hệ thống thường xuyên, theo dõi log định kỳ, chạy Lynis audit mỗi tháng. Nếu bạn dùng cloud hosting, hãy tìm hiểu thêm về Cloud Hosting là gì? để hiểu các lớp bảo mật bổ sung từ nhà cung cấp.
UFW có đủ để bảo vệ server không?
UFW là công cụ quản lý iptables, đủ để chặn các kết nối không mong muốn ở cấp độ cơ bản. Tuy nhiên, bạn nên kết hợp với Fail2ban, và nếu cần bảo vệ web application, hãy thêm WAF như Cloudflare hoặc ModSecurity.
Làm sao để phát hiện server đã bị hack?
Dấu hiệu thường gặp: CPU cao bất thường (có thể do đào coin), lưu lượng mạng tăng đột biến, file lạ xuất hiện, user mới không rõ nguồn gốc, log SSH có IP lạ, website bị chèn mã độc. Chạy rkhunter và lynis audit ngay lập tức.
Bảo mật server có làm chậm website không?
Hầu hết các biện pháp đều có tác động không đáng kể. Một số cấu hình như SYN cookies hoặc rate limiting còn giúp server hoạt động ổn định hơn khi bị tấn công. Fail2ban và firewall hầu như không ảnh hưởng đến hiệu suất.
Có cần AppArmor hay SELinux không?
Nếu server của bạn xử lý dữ liệu nhạy cảm hoặc thuộc hệ thống quan trọng, nên bật AppArmor (Ubuntu/Debian) hoặc SELinux (CentOS/RHEL). Đây là lớp bảo vệ Mandatory Access Control (MAC) ngăn chặn các hành vi trái phép ngay cả khi có lỗ hổng.
Tôi nên kiểm tra bảo mật server bao lâu một lần?
Với server production, bạn nên kiểm tra hàng tuần các log và bản cập nhật, chạy audit đầy đủ hàng tháng, và kiểm tra rootkit hàng quý.
Kết Luận
Bảo mật server không phải là một đích đến mà là một quá trình liên tục. Mười biện pháp trong bài viết này tạo thành nền tảng vững chắc để bảo vệ máy chủ Linux của bạn:
- SSH hardening — đóng cổng vào chính
- Firewall — kiểm soát giao thông mạng
- Fail2ban — chặn brute force tự động
- Cập nhật bảo mật — vá lỗ hổng kịp thời
- Quản lý người dùng — ít quyền nhất có thể
- Bảo mật dịch vụ — MySQL, PHP, Nginx/Apache
- Kernel hardening — gia cố nhân hệ điều hành
- Phát hiện xâm nhập — Lynis, rkhunter, AIDE
- Giám sát log — auditd, logwatch
- Checklist — kiểm tra định kỳ
Nếu bạn mới bắt đầu, hãy làm lần lượt từ bước 1 đến bước 5 trong ngày đầu tiên, sau đó bổ sung các bước nâng cao dần dần. Và đừng quên — bảo mật là một vòng tròn, không phải đường thẳng: sau khi hoàn thành, hãy quay lại kiểm tra và cập nhật thường xuyên.
Tìm hiểu thêm về các lệnh Linux cơ bản nếu bạn cần nắm vững dòng lệnh trước khi bắt đầu hardening server.
Thẻ liên quan:
Bảo mật serverServer hardeningLinux securityHướng dẫn kỹ thuậtFirewallSSHFail2banLynisBình luận
0 bình luận
Đang tải...
Bài viết mới nhất

Tại Sao Chọn NextJS Thay Vì WordPress Cho Dự Án Phức Tạp (2026)
Phân tích chi tiết lý do chọn NextJS thay vì WordPress cho dự án phức tạp — từ hiệu suất, SEO, bảo mật đến khả năng mở rộng. Hướng dẫn thực tế từ chuyên gia thiết kế website.

Thiết Kế Website BĐS Đắk Lắk: Giải Pháp Tăng Trưởng Online (2026)
Giải pháp thiết kế website bất động sản Đắk Lắk chuyên nghiệp — từ SEO địa phương, 7 tính năng không thể thiếu, bảng giá thực tế đến case study khách hàng thực. Dành cho môi giới và chủ đầu tư muốn tăng trưởng online.

Thiết Kế Website Tại Buôn Ma Thuột: Chi Phí, Quy Trình Và Lưu Ý (2026)
Hướng dẫn chi tiết thiết kế website tại Buôn Ma Thuột — bảng giá thực tế 2026, quy trình từ A-Z, các sai lầm cần tránh và checklist 10 tiêu chí chọn đơn vị thiết kế web uy tín tại Đắk Lắk.

Content Pillar Là Gì? Chiến Lược Xây Dựng Nội Dung SEO 2026
Tìm hiểu Content Pillar là gì và cách xây dựng chiến lược nội dung SEO hiệu quả. Hướng dẫn chi tiết về đặc điểm, cấu trúc, quy trình tạo pillar content và đo lường hiệu quả cho website 2026.
Bài viết liên quan

Cloud Hosting Là Gì? Lợi Ích Và Khi Nào Nên Sử Dụng — So Sánh Chi Tiết 2026
Cloud Hosting là giải pháp lưu trữ website sử dụng cụm máy chủ đám mây. Tìm hiểu chi tiết về lợi ích, cách hoạt động, so sánh với VPS và khi nào nên sử dụng Cloud Hosting.

Các Lệnh Linux Server Cơ Bản Cho Người Mới Quản Trị Hosting — Cẩm Nang Từ A-Z
Hướng dẫn chi tiết các lệnh Linux server cơ bản cho người mới quản trị hosting. Từ SSH, quản lý file, phân quyền, systemctl, apt, đến xem log — tất cả trong một cẩm nang đầy đủ.

Hướng Dẫn Cài Đặt Nginx Trên VPS Từ A-Z – Ubuntu 22.04/24.04
Hướng dẫn chi tiết từ A-Z cách cài đặt Nginx trên VPS Ubuntu — từ kết nối SSH, cấu hình firewall, tạo virtual host, tích hợp PHP-FPM, bảo mật server, đến troubleshooting và monitoring.

So Sánh Giá Hosting 2026 – Bảng Giá Chi Tiết Các Nhà Cung Cấp Trong Nước & Quốc Tế
Bảng giá hosting 2026 chi tiết nhất — so sánh hơn 15 nhà cung cấp hosting trong nước và quốc tế. Từ Hostinger, Bluehost, SiteGround đến Mắt Bão, PA Vietnam, VinaHost. Hướng dẫn chọn gói hosting phù hợp với ngân sách.

