Quản Trị Mạng & Dịch Vụ Thư Điện Tử Doanh Nghiệp
CẤU HÌNH MAIL SERVER RIÊNG (POSTFIX & DOVECOT) CHUẨN KỸ THUẬT, XÁC THỰC SPF/DKIM/DMARC & TỐI ƯU 100% VÀO INBOX TRÊN eCLOUD VPS
Chuyên trang Hỗ trợ & Triển khai Máy chủ Đám mây ESC.VN
1. Giới thiệu tổng quan
Dịch vụ thư điện tử (Email) là kênh giao thương huyết mạch của mọi tổ chức. Tuy nhiên, việc tự triển khai một Mail Server độc lập trên máy chủ ảo eCloud VPS hoặc Dedicated Server luôn đòi hỏi tiêu chuẩn kỹ thuật nghiêm ngặt nhất:
- Nếu thiếu các bản ghi xác thực nguồn gốc thư, email gửi đi từ máy chủ sẽ bị Gmail, Microsoft Outlook hay Yahoo tự động đánh dấu là thư rác (Spam/Junk) hoặc từ chối tiếp nhận hoàn toàn (Bounced).
- Nếu máy chủ bị lợi dụng cấu hình Open Relay, kẻ xấu sẽ biến VPS thành công cụ phát tán thư rác hàng loạt, khiến địa chỉ IP Public bị liệt vào danh sách đen quốc tế (Blacklist/DNSBL) và bị các tổ chức an ninh mạng chặn tuyến.
Bài hướng dẫn này chuẩn hóa toàn bộ quy trình: cài đặt Postfix (MTA – gửi thư), Dovecot (MDA/IMAP – nhận thư), mã hóa TLS/SSL, và tích hợp bộ ba xác thực danh tính số SPF, DKIM (OpenDKIM), DMARC để đảm bảo tỷ lệ vào Hộp thư đến (Inbox) đạt mức tối đa.
2. Yêu Cầu Kỹ Thuật Tiên Quyết Trước Khi Cài Đặt
- Cấu hình Reverse DNS (PTR Record): Địa chỉ IP Public của máy chủ eCloud VPS bắt buộc phải phân giải ngược về đúng Hostname của Mail Server (ví dụ:
mail.tenmien.vn). (Quý khách gửi Ticket tại cổng khachhang.esc.vn để kỹ thuật ESC hỗ trợ trỏ PTR record cho IP máy chủ).
- Mở các cổng mạng Mail trên Tường lửa (Firewall):
- Cổng gửi thư (SMTP):
25 (Server-to-Server), 587 (Submission – Client gửi có TLS), 465 (SMTPS).
- Cổng nhận thư (IMAP/POP3):
993 (IMAPS), 995 (POP3S).
3. Cài Đặt và Cấu Hình Mail Transfer Agent (Postfix)
3.1. Cài đặt Postfix
Trên Ubuntu / Debian:
sudo DEBIAN_FRONTEND=noninteractive apt update && sudo apt install postfix mailutils -y
Trên AlmaLinux / Rocky Linux:
sudo dnf install postfix mailx -y
3.2. Cấu hình tệp tin chính /etc/postfix/main.cf
Mở file cấu hình Postfix:
sudo nano /etc/postfix/main.cf
Thiết lập các tham số vận hành chuẩn:
myhostname = mail.tenmien.vn
mydomain = tenmien.vn
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# CHỐNG OPEN RELAY: Chỉ máy chủ cục bộ mới được gửi thư không xác thực
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
home_mailbox = Maildir/
# MÃ HÓA TLS CHO GIAO THỨC GỬI THƯ (Dùng chung chứng chỉ SSL của Nginx/Let's Encrypt)
smtpd_tls_cert_file = /etc/ssl/esc_certs/fullchain.crt
smtpd_tls_key_file = /etc/ssl/esc_certs/private.key
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = high
# XÁC THỰC NGƯỜI DÙNG QUA DOVECOT SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
3.3. Mở cổng Submission 587 trong /etc/postfix/master.cf
Mở file master.cf và bỏ chú thích dòng dịch vụ submission:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unauth_destination=yes
Khởi động lại Postfix: sudo systemctl restart postfix
4. Cài Đặt và Cấu Hình Mail Delivery Agent (Dovecot)
Dovecot quản lý việc lưu trữ hộp thư dưới định dạng Maildir và cung cấp giao thức IMAPS an toàn để người dùng kết nối qua ứng dụng (Outlook, Thunderbird, Mail iOS/Android).
4.1. Cài đặt Dovecot
# Ubuntu / Debian:
sudo apt install dovecot-core dovecot-imapd -y
# AlmaLinux / Rocky Linux:
sudo dnf install dovecot -y
4.2. Cấu hình lưu trữ Maildir (/etc/dovecot/conf.d/10-mail.conf)
mail_location = maildir:~/Maildir
4.3. Cấu hình SASL xác thực kết nối với Postfix (/etc/dovecot/conf.d/10-master.conf)
Tìm khối service auth và sửa thành:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
4.4. Cấu hình chứng chỉ SSL cho Dovecot (/etc/dovecot/conf.d/10-ssl.conf)
ssl = required
ssl_cert = </etc/ssl/esc_certs/fullchain.crt
ssl_key = </etc/ssl/esc_certs/private.key
ssl_min_protocol = TLSv1.2
Khởi động lại Dovecot: sudo systemctl enable --now dovecot
5. Cấu Hình Xác Thực Số Toàn Diện: SPF, DKIM & DMARC
Đây là mắt xích quan trọng nhất để các nhà cung cấp dịch vụ email quốc tế (Google, Microsoft) xếp hạng tín nhiệm IP và đưa thư thẳng vào Inbox.
5.1. Cấu hình Bản ghi SPF (Sender Policy Framework)
Bản ghi SPF chỉ định công khai địa chỉ IP nào được phép gửi thư đại diện cho tên miền. Thêm bản ghi TXT vào cấu hình DNS của tên miền tại ESC:
- Tên bản ghi:
@
- Loại:
TXT
- Giá trị:
v=spf1 ip4:<IP_PUBLIC_ECLOUD_VPS> -all
5.2. Cài đặt và Sinh khóa ký số DKIM (DomainKeys Identified Mail) với OpenDKIM
DKIM mã hóa một chữ ký số vào tiêu đề (Header) của mỗi email gửi đi để chống giả mạo nội dung.
# Ubuntu / Debian:
sudo apt install opendkim opendkim-tools -y
# AlmaLinux / Rocky Linux:
sudo dnf install opendkim -y
Khởi tạo cặp khóa cho domain:
sudo mkdir -p /etc/opendkim/keys/tenmien.vn
cd /etc/opendkim/keys/tenmien.vn
sudo opendkim-genkey -s mail -d tenmien.vn
sudo chown -R opendkim:opendkim /etc/opendkim/keys
Lệnh trên sinh ra 2 file: mail.private (khóa bí mật trên server) và mail.txt (khóa công khai để trích xuất cấu hình DNS). Đọc nội dung file mail.txt bằng lệnh sudo cat mail.txt và thêm bản ghi TXT trên hệ thống DNS:
- Tên bản ghi:
mail._domainkey
- Loại:
TXT
- Giá trị: Dán chuỗi
v=DKIM1; k=rsa; p=MIIBIjANBgkqh... lấy từ file mail.txt.
Kết nối OpenDKIM với Postfix trong /etc/postfix/main.cf:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
Khởi chạy dịch vụ OpenDKIM: sudo systemctl enable --now opendkim && sudo systemctl restart postfix
5.3. Cấu hình Chính sách DMARC (Domain-based Message Authentication)
DMARC hướng dẫn máy chủ nhận thư phải làm gì khi một email bị lỗi kiểm tra SPF hoặc DKIM. Thêm bản ghi TXT trên DNS:
- Tên bản ghi:
_dmarc
- Loại:
TXT
- Giá trị:
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@tenmien.vn; pct=100; adkim=r; aspf=r (Chính sách p=quarantine yêu cầu đưa thư vào Spam nếu không khớp xác thực và gửi báo cáo định kỳ về email quản trị).
6. Bảng Kiểm Tra & Đánh Giá Tín Nhiệm Mail Server (Testing & Validation)
| Tiêu chuẩn kiểm tra |
Công cụ / Câu lệnh kiểm tra |
Tiêu chí đạt chuẩn |
| Kiểm tra điểm số Spam |
Gửi email thử nghiệm tới mail-tester.com |
Đạt điểm số 10/10 (Xanh toàn bộ SPF, DKIM, DMARC, PTR). |
| Kiểm tra Reverse DNS |
dig -x <IP_PUBLIC_VPS> +short |
Trả về chính xác hostname mail.tenmien.vn. |
| Kiểm tra chữ ký DKIM |
sudo opendkim-testkey -d tenmien.vn -s mail -vvv |
Trả về thông báo: key OK. |
| Kiểm tra log gửi thư |
sudo tail -f /var/log/mail.log |
Hiển thị status=sent (250 2.0.0 OK … dkim=pass). |
7. Quy Trình Khẩn Cấp Khi IP Bị Cảnh Báo Spam / Blacklist
Khi phát hiện lượng email gửi đi tăng đột biến và IP bị liệt vào danh sách chặn:
- Khóa ngay hàng đợi thư (Freeze Queue):
sudo postsuper -h ALL
- Kiểm tra tài khoản bị lộ mật khẩu:
mailq | grep -E "([A-Z0-9]{10})" | awk '{print $7}' | sort | uniq -c | sort -nr
Xác định user nào đang phát tán hàng nghìn thư rác để đổi mật khẩu tài khoản đó ngay lập tức.
- Xóa toàn bộ thư rác đang chờ gửi:
sudo postsuper -d ALL
- Yêu cầu gỡ bỏ IP khỏi Blacklist: Sau khi làm sạch máy chủ, truy cập các tổ chức chống spam (như Spamhaus, Barracuda, MXToolbox) để gửi yêu cầu Delist IP.
8. Kênh Tiếp Nhận Hỗ Trợ Kỹ Thuật 24/7/365 tại ESC.VN
Trong trường hợp Quý doanh nghiệp cần triển khai giải pháp Email Relay chuyên dụng qua cổng bảo vệ cao cấp, chuyển đổi hạ tầng Mail Server Hybrid kết hợp Microsoft 365 / Google Workspace hoặc cần cấp dải IP riêng sạch để gửi thư tiếp thị/giao dịch số lượng lớn, hãy liên hệ ngay với đội ngũ kỹ sư của ESC:
Hạ Tầng & Quản Trị Hệ Thống
XÂY DỰNG HỆ THỐNG LOAD BALANCING & REVERSE PROXY VỚI NGINX TRÊN eCLOUD VPS
Tối ưu khả năng chịu tải, mở rộng Scale-Out và bảo mật hạ tầng Backend chuyên nghiệp
1. Giới thiệu tổng quan
Khi website doanh nghiệp hoặc hệ thống thương mại điện tử phát triển vượt ngưỡng đáp ứng của một máy chủ đơn lẻ, mô hình mở rộng theo chiều ngang (Scale-Out) trở thành giải pháp bắt buộc. Bằng cách sử dụng một máy chủ eCloud VPS làm tầng cổng giao tiếp Reverse Proxy trung gian, quản trị viên có thể phân phối lưu lượng truy cập đồng đều tới nhiều máy chủ xử lý phía sau (Backend/Upstream Servers).
Mô hình này đem lại 3 giá trị kỹ thuật cốt lõi:
- Khả năng chịu lỗi và tính sẵn sàng cao (High Availability): Tự động phát hiện và cô lập máy chủ backend bị lỗi mà không làm gián đoạn trải nghiệm người dùng.
- Ẩn giấu hạ tầng backend (Security Shield): Khách hàng chỉ tương tác với IP Public của Reverse Proxy, IP thật của các cụm máy chủ ứng dụng và cơ sở dữ liệu được giấu hoàn toàn trong mạng nội bộ.
- Giảm tải xử lý (SSL Offloading & FastCGI/Microcaching): Tập trung giải mã mã hóa SSL/TLS và lưu bộ đệm tĩnh tại máy chủ proxy, giải phóng tài nguyên CPU/RAM cho máy chủ ứng dụng.
2. Mô Hình Kiến Trúc Triển Khai
Giả định kịch bản hạ tầng triển khai trên cụm máy chủ ảo eCloud VPS của ESC:
- Nginx Load Balancer (Proxy):
10.0.0.10 (Sở hữu IP Public trỏ tên miền tenmien.vn)
- Backend Node 01 (Web App 1):
10.0.0.11:8080 (Mạng nội bộ)
- Backend Node 02 (Web App 2):
10.0.0.12:8080 (Mạng nội bộ)
- Backend Backup Node:
10.0.0.13:8080 (Dự phòng khẩn cấp khi cả 2 node chính quá tải hoặc sập)
3. Cấu Hình Cân Bằng Tải Nâng Cao Trên Nginx Proxy
Mở hoặc tạo mới file cấu hình virtual host trên máy chủ proxy:
sudo nano /etc/nginx/conf.d/loadbalancer.conf
3.1. Thiết lập khối upstream với thuật toán điều phối
Nginx hỗ trợ nhiều thuật toán phân phối tải tùy theo đặc thù dịch vụ:
- Round Robin (mặc định): Phân chia lần lượt theo vòng tròn.
- Least Connections (least_conn): Chuyển tiếp request đến server đang xử lý ít kết nối nhất (khuyên dùng cho ứng dụng tải nặng).
- IP Hash (ip_hash): Cố định một IP người dùng vào cùng một backend server (giữ trạng thái Session).
Cấu hình mẫu tối ưu kết hợp trọng số (Weight) và kiểm tra tình trạng kết nối:
upstream backend_cluster {
least_conn; # Ưu tiên chuyển vào node có tải kết nối thấp nhất
# Node 1: Cấu hình mạnh hơn, gán trọng số 3 (nhận 60% lưu lượng)
server 10.0.0.11:8080 weight=3 max_fails=3 fail_timeout=15s;
# Node 2: Cấu hình cơ bản, gán trọng số 2 (nhận 40% lưu lượng)
server 10.0.0.12:8080 weight=2 max_fails=3 fail_timeout=15s;
# Node dự phòng: Chỉ kích hoạt khi cả Node 1 và Node 2 không phản hồi
server 10.0.0.13:8080 backup;
# Duy trì kết nối Keepalive để giảm độ trễ TCP handshake
keepalive 32;
}
3.2. Cấu hình khối Server, SSL Offloading và chuyển tiếp Header
Khi Reverse Proxy đảm nhiệm việc giải mã SSL, các backend phía sau chỉ cần chạy HTTP nội bộ để tối ưu tốc độ:
server {
listen 80;
server_name tenmien.vn www.tenmien.vn;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name tenmien.vn www.tenmien.vn;
# Chứng chỉ SSL cài đặt tập trung tại Proxy (Let's Encrypt hoặc Commercial SSL)
ssl_certificate /etc/ssl/esc_certs/fullchain.crt;
ssl_certificate_key /etc/ssl/esc_certs/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://backend_cluster;
# Bắt buộc chuyển tiếp đầy đủ Header thực của Client về cho Backend phân tích
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Thiết lập phiên HTTP/1.1 và xóa header Connection để tận dụng Keepalive
proxy_http_version 1.1;
proxy_set_header Connection "";
# Tinh chỉnh Timeout kết nối tới Backend
proxy_connect_timeout 5s;
proxy_send_timeout 15s;
proxy_read_timeout 15s;
# Xử lý tự động chuyển node nếu node hiện tại trả về mã lỗi 5xx
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
}
4. Thiết Lập Bộ Đệm Caching Tập Trung (Proxy Microcaching)
Để tăng tốc độ tải trang lên hàng chục lần và giảm tải trực tiếp cho các máy chủ backend, ta thiết lập bộ nhớ đệm trang tĩnh và API tạm thời ngay trên ổ SSD NVMe của Proxy:
4.1. Khởi tạo vùng lưu cache trong nginx.conf
Mở file /etc/nginx/nginx.conf, thêm dòng sau vào trong khối http { ... }:
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=PAGECACHE:50m max_size=5g inactive=60m use_temp_path=off;
4.2. Áp dụng Cache vào Virtual Host
Mở lại /etc/nginx/conf.d/loadbalancer.conf và điều chỉnh trong khối location /:
location / {
proxy_cache PAGECACHE;
proxy_cache_valid 200 301 302 5m; # Cache kết quả hợp lệ trong 5 phút
proxy_cache_valid 404 1m; # Cache trang không tìm thấy trong 1 phút
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
# Bỏ qua Cache đối với các trang quản trị hoặc giỏ hàng
proxy_cache_bypass $http_pragma $http_authorization $cookie_nocache;
proxy_no_cache $http_pragma $http_authorization $cookie_nocache;
# Thêm Header phản hồi để debug trạng thái Cache (HIT/MISS/BYPASS)
add_header X-Cache-Status $upstream_cache_status;
proxy_pass http://backend_cluster;
# ... (Các cấu hình proxy_set_header giữ nguyên)
}
Kiểm tra cú pháp và khởi động lại Nginx:
sudo nginx -t && sudo systemctl reload nginx
5. Cấu Hình Backend Nhận Diện IP Thật Của Khách Hàng (Real IP)
Vì toàn bộ request đến máy chủ backend đều bắt nguồn từ IP của Reverse Proxy (10.0.0.10), file log và phần mềm bảo vệ (như Fail2ban, phân tích truy cập) trên Backend sẽ ghi nhận nhầm IP của Proxy. Cần cấu hình module Real IP trên máy chủ Backend.
Nếu máy chủ Backend dùng Nginx:
Mở /etc/nginx/nginx.conf trên các máy Backend, thêm vào khối http { ... }:
set_real_ip_from 10.0.0.10; # Tin cậy IP của máy chủ Reverse Proxy
real_ip_header X-Forwarded-For;
real_ip_recursive on;
Nạp lại cấu hình: sudo systemctl reload nginx
Nếu máy chủ Backend dùng Apache:
Kích hoạt module remoteip:
sudo a2enmod remoteip # Trên Ubuntu/Debian
Mở file cấu hình Apache và thêm:
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 10.0.0.10
6. Giám Sát Và Chẩn Đoán Trạng Thái Cụm Cân Bằng Tải
| Nhu cầu chẩn đoán |
Câu lệnh kiểm tra chuẩn |
Mục tiêu |
| Kiểm tra trạng thái Cache |
curl -I https://tenmien.vn |
Quan sát header X-Cache-Status: HIT (đã nạp từ cache) hoặc MISS. |
| Theo dõi tải trên Proxy |
sudo tail -f /var/log/nginx/access.log |
Xem lưu lượng request đi qua máy chủ cân bằng tải thời gian thực. |
| Kiểm tra phân bổ Backend |
Định dạng log thêm biến $upstream_addr |
Xác định request thực tế đang rẽ nhánh vào Node 10.0.0.11 hay 10.0.0.12. |
7. Kênh Tiếp Nhận Hỗ Trợ Kỹ Thuật 24/7/365 tại ESC.VN
Trong trường hợp doanh nghiệp cần thiết kế kiến trúc cân bằng tải phần cứng độc lập, thiết lập cụm máy chủ chia sẻ Storage SAN/NFS hoặc chống tấn công DoS/DDoS tầng mạng diện rộng, đội ngũ kỹ sư hạ tầng của ESC luôn sẵn sàng đồng hành:
Hướng Dẫn Tối Ưu Hiệu Năng eCloud VPS Cho Nginx, PHP-FPM Và MariaDB
1. Giới thiệu tổng quan
Trong quá trình vận hành website doanh nghiệp hoặc ứng dụng thương mại điện tử trên hạ tầng eCloud VPS của ESC, hiện tượng phản hồi chậm, nghẽn kết nối hoặc xuất hiện lỗi 502 Bad Gateway / 504 Gateway Timeout thường không bắt nguồn từ thiếu hụt phần cứng mà do các thông số mặc định của Web Server và Database chưa được tinh chỉnh tương thích với lượng truy cập thực tế.
Tài liệu này hướng dẫn chi tiết quy trình chuẩn hóa các tham số cốt lõi của Nginx, PHP-FPM và MariaDB/MySQL nhằm khai thác tối đa tài nguyên CPU, RAM và ổ cứng SSD/NVMe trên máy chủ.
2. Tối ưu hóa Web Server Nginx
File cấu hình chính của Nginx nằm tại /etc/nginx/nginx.conf. Thực hiện mở file và điều chỉnh các khối tham số:
sudo nano /etc/nginx/nginx.conf
2.1. Cấu hình luồng xử lý (Worker Processes & Connections)
user www-data;
worker_processes auto; # Tự động gán theo số lõi vCPU của VPS
worker_rlimit_nofile 65535; # Tăng giới hạn file descriptor mở đồng thời
events {
worker_connections 4096; # Số kết nối tối đa trên mỗi worker
use epoll; # Cơ chế xử lý I/O hiệu năng cao nhất trên Linux
multi_accept on; # Cho phép worker nhận tất cả kết nối mới cùng lúc
}
2.2. Tinh chỉnh Buffer và Keepalive Timeout
Trong khối http { ... }, thêm hoặc sửa các thông số sau để giảm tải CPU và tăng tốc độ phân phối dữ liệu tĩnh:
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
types_hash_max_size 2048;
server_tokens off; # Ẩn thông tin phiên bản Nginx để tăng cường bảo mật
# Giới hạn kích thước gói tin gửi lên (Upload)
client_max_body_size 64M;
# Nén Gzip tiết kiệm băng thông và tăng tốc độ tải trang
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
}
Kiểm tra cú pháp và nạp lại cấu hình:
sudo nginx -t && sudo systemctl reload nginx
3. Tinh chỉnh Pool xử lý PHP-FPM
Vấn đề nghẽn tài nguyên phổ biến nhất trên máy chủ chạy mã nguồn PHP (như WordPress, Laravel) là việc cấu hình sai chế độ quản lý tiến trình (pm – process manager).
File cấu hình pool mặc định nằm tại /etc/php/<phiên_bản>/fpm/pool.d/www.conf (Ubuntu) hoặc /etc/php-fpm.d/www.conf (AlmaLinux).
# Ví dụ trên Ubuntu với PHP 8.2:
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
3.1. Công thức tính toán pm.max_children
Mỗi tiến trình PHP-FPM trung bình chiếm khoảng 40MB – 70MB RAM (đối với WordPress). Công thức phân bổ RAM cho PHP-FPM:
max_children = (Tổng RAM khả dụng cho PHP – trừ OS và MySQL) / (Bộ nhớ trung bình của 1 tiến trình PHP, VD: 50MB)
Ví dụ: Gói eCloud VPS có 4GB RAM, dành 1GB cho OS/Nginx, 1.5GB cho MySQL, còn lại 1.5GB (1536MB) cho PHP: 1536 / 50 ≈ 30 tiến trình.
3.2. Áp dụng thông số cấu hình tối ưu
pm = dynamic
pm.max_children = 30
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 12
pm.max_requests = 500 ; Tự giải phóng tiến trình sau 500 request để chống rò rỉ RAM (Memory Leak)
3.3. Kích hoạt OPcache trong php.ini
Mở file php.ini tương ứng (/etc/php/8.2/fpm/php.ini):
opcache.enable=1
opcache.memory_consumption=128 ; Bộ nhớ cấp cho OPcache (MB)
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 ; Đặt bằng 0 trên môi trường Production để đạt hiệu năng tối đa
Khởi động lại dịch vụ PHP-FPM:
sudo systemctl restart php8.2-fpm
4. Cấu hình Tối ưu Bộ đệm Database (MariaDB / MySQL)
Cơ sở dữ liệu lưu lượng lớn cần được cấp phát đủ bộ nhớ đệm để các truy vấn đọc/ghi diễn ra trực tiếp trên RAM thay vì truy xuất liên tục vào ổ cứng.
Tạo hoặc chỉnh sửa file cấu hình tùy chỉnh /etc/mysql/mariadb.conf.d/99-custom.cnf (Ubuntu) hoặc /etc/my.cnf.d/server.cnf (AlmaLinux):
[mysqld]
# Tùy chỉnh Engine InnoDB - trái tim của cơ sở dữ liệu
innodb_buffer_pool_size = 1536M # Chiếm khoảng 40% - 60% tổng RAM VPS
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2 # Ghi log bộ đệm mỗi giây (Tăng tốc độ ghi dữ liệu cực nhanh)
innodb_flush_method = O_DIRECT
# Quản lý kết nối
max_connections = 150 # Số kết nối tối đa phù hợp với max_children của PHP
max_connect_errors = 10000
wait_timeout = 60 # Tự động ngắt kết nối rảnh sau 60s
interactive_timeout = 60
# Bộ nhớ đệm bảng tạm
tmp_table_size = 64M
max_heap_table_size = 64M
Khởi động lại dịch vụ MariaDB/MySQL để áp dụng:
sudo systemctl restart mariadb
5. Kiểm tra Tải và Đánh giá Hiệu quả Tối ưu
Sau khi hoàn tất tinh chỉnh, cần tiến hành đo lường để đảm bảo hệ thống phản hồi ổn định dưới áp lực truy cập:
- Giám sát trực quan mức tiêu thụ: Chạy
htop để kiểm tra phân bổ CPU và RAM khi có lưu lượng truy cập.
- Kiểm tra trạng thái kết nối Nginx:
ss -s
Lệnh này hiển thị số lượng socket TCP đang ở trạng thái ESTABLISHED, TIME-WAIT để đánh giá mức độ dọn dẹp kết nối rác.
- Theo dõi truy vấn chậm (Slow Queries): Bật cờ
slow_query_log = 1 trong MySQL để phát hiện các câu lệnh SQL chiếm nhiều thời gian xử lý và đánh index bổ sung.
6. Tổng hợp Kênh Hỗ trợ Kỹ thuật Chuyên môn tại ESC.VN
Đối với các hệ thống có quy mô cơ sở dữ liệu lớn hàng chục GB, kiến trúc phân tán Master-Slave, hoặc các chiến dịch cao điểm đòi hỏi giải pháp cân bằng tải (Load Balancing), Quý khách hàng có thể liên hệ ngay bộ phận kỹ sư hạ tầng của ESC để được hỗ trợ chuyên sâu:
- Tổng đài Hỗ trợ Kỹ thuật 24/7: 1900 2069
- Hotline trực ban: TP.HCM: (028) 71 099 199 | Hà Nội: (024) 39 42 68 96
- Gửi yêu cầu hỗ trợ (Ticket): esc.vn/support-esc hoặc cổng quản trị member.esc.vn
- Website chính thức: https://esc.vn
Tài liệu hỗ trợ kỹ thuật chính thức từ ESC.VN
CẨM NANG VẬN HÀNH VÀ BẢO MẬT MÁY CHỦ LINUX CHUYÊN NGHIỆP
Chuyên trang Hỗ trợ & Triển khai Máy chủ Đám mây (eCloud VPS / Dedicated Server)
1. Giới thiệu tổng quan
Trong hạ tầng số hiện đại, hệ điều hành Linux (Ubuntu, Debian, AlmaLinux, Rocky Linux) là nền tảng cốt lõi cho hầu hết các dịch vụ web server, database và ứng dụng doanh nghiệp. Khi tiếp nhận bàn giao một máy chủ ảo eCloud VPS hoặc Dedicated Server tại ESC.VN, quản trị viên hệ thống (SysAdmin) cần nắm vững các kỹ năng vận hành, chuẩn hóa bảo mật và tối ưu tài nguyên.
Bài hướng dẫn này cung cấp quy trình toàn diện từ kết nối ban đầu, thiết lập bảo vệ đa lớp, quản lý dịch vụ hệ thống đến giám sát hiệu năng theo chuẩn kỹ thuật cao cấp nhất.
2. Kết nối và Quản lý Truy cập Ban đầu
2.1. Đăng nhập an toàn qua SSH
Trên máy trạm Linux/macOS hoặc Windows Terminal, kết nối tới máy chủ thông qua dòng lệnh:
ssh root@<IP_SERVER_ESC> -p 22
📌 Lưu ý: Trên giao diện dòng lệnh Linux, khi gõ mật khẩu hệ thống sẽ ẩn hoàn toàn ký tự (không xuất hiện dấu hoa thị). Hãy dán mật khẩu chính xác và nhấn Enter.
2.2. Khởi tạo tài khoản quản trị riêng biệt (Sudo User)
Vận hành trực tiếp bằng tài khoản root tiềm ẩn rủi ro thao tác nhầm hoặc bị tấn công dò mật khẩu. Hãy khởi tạo người dùng quản trị mới:
• Trên Ubuntu / Debian:
adduser escadmin
usermod -aG sudo escadmin
• Trên AlmaLinux / CentOS / Rocky Linux:
adduser escadmin
passwd escadmin
usermod -aG wheel escadmin
3. Cấu hình Bảo mật Cốt lõi (Server Hardening)
3.1. Cập nhật hệ điều hành và gói phần mềm
Ngay sau khi đăng nhập, thực hiện cập nhật toàn bộ bản vá bảo mật mới nhất:
# Dành cho Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y
# Dành cho AlmaLinux/Rocky Linux:
sudo dnf update -y
3.2. Đổi cổng kết nối SSH và vô hiệu hóa mật khẩu trực tiếp
Thay đổi cổng SSH mặc định từ 22 sang cổng ngẫu nhiên (ví dụ 2288) để hạn chế bot quét tự động:
sudo nano /etc/ssh/sshd_config
Chỉnh sửa hoặc thêm các tham số sau trong file cấu hình:
Port 2288
PermitRootLogin no
PasswordAuthentication no
🛡️ Khuyến nghị an toàn: Trước khi tắt mật khẩu và khởi động lại dịch vụ SSH, hãy cấu hình khóa SSH Key công khai (authorized_keys) và luôn giữ một cửa sổ terminal đang kết nối để kiểm tra thông tuyến tránh tình trạng bị khóa ngoài.
3.3. Thiết lập Tường lửa Hệ thống (UFW / Firewalld)
| Hệ điều hành |
Công cụ Tường lửa |
Câu lệnh mở SSH (Cổng 2288) |
Câu lệnh kích hoạt |
| Ubuntu / Debian |
UFW |
sudo ufw allow 2288/tcp |
sudo ufw enable |
| AlmaLinux / Rocky |
Firewalld |
sudo firewall-cmd --permanent --add-port=2288/tcp |
sudo firewall-cmd --reload |
3.4. Cài đặt Fail2ban ngăn chặn Brute-force
Cài đặt Fail2ban để tự động đưa các địa chỉ IP cố tình dò mật khẩu quá số lần quy định vào danh sách cấm truy cập:
# Ubuntu / Debian:
sudo apt install fail2ban -y && sudo systemctl enable fail2ban --now
# AlmaLinux / Rocky Linux:
sudo dnf install epel-release -y
sudo dnf install fail2ban -y && sudo systemctl enable fail2ban --now
4. Quản lý Dịch vụ và Tiến trình với Systemd
Quản trị viên cần thuần thục lệnh systemctl để điều khiển các dịch vụ cốt lõi (Nginx, Apache, MariaDB, Docker):
- Kiểm tra trạng thái dịch vụ:
sudo systemctl status <ten_dich_vu>
- Khởi chạy / Dừng dịch vụ:
sudo systemctl start <ten_dich_vu> / sudo systemctl stop <ten_dich_vu>
- Khởi động lại dịch vụ:
sudo systemctl restart <ten_dich_vu>
- Thiết lập tự khởi chạy cùng hệ thống:
sudo systemctl enable <ten_dich_vu>
5. Giám sát Hiệu năng và Xử lý Sự cố
5.1. Kiểm tra tài nguyên CPU, RAM và Ổ cứng
- Giám sát tải hệ thống trực quan: Sử dụng lệnh
htop (cài đặt qua apt install htop hoặc dnf install htop) để theo dõi tiến trình chiếm dụng phần trăm CPU/RAM lớn nhất.
- Kiểm tra dung lượng lưu trữ: Dùng lệnh
df -h để theo dõi các phân vùng ổ đĩa. Khi ổ cứng đạt ngưỡng 100%, các dịch vụ cơ sở dữ liệu sẽ tự động sập nguồn.
- Tìm thư mục chiếm nhiều dung lượng nhất:
5.2. Phân tích lưu lượng mạng và kết nối bất thường
Kiểm tra danh sách IP đang mở nhiều kết nối tới cổng dịch vụ (nghi vấn tấn công rà quét / DoS):
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -n 15
6. Chiến lược Sao lưu và Khôi phục Dữ liệu (Backup 3-2-1)
Bảo đảm an toàn dữ liệu là nguyên tắc sống còn trong quản trị hệ thống máy chủ:
- Chụp ảnh Snapshot định kỳ: Tận dụng tính năng Snapshot trên bảng điều khiển eCloud VPS tại khachhang.esc.vn trước khi tiến hành cập nhật hệ thống hoặc can thiệp mã nguồn quan trọng.
- Sao lưu cơ sở dữ liệu tự động: Thiết lập tác vụ Cronjob xuất bản ghi SQL và đẩy sang hệ thống lưu trữ độc lập (Cloud Storage / SFTP riêng).
7. Kênh Hỗ trợ Kỹ thuật Chuyên môn 24/7 từ ESC.VN
Khi hệ thống gặp các sự cố phức tạp vượt ngoài tầm kiểm soát như tấn công từ chối dịch vụ (DDoS) quy mô lớn, lỗi phân vùng ổ đĩa ảo hoặc cần nâng cấp phần cứng (Scale up CPU/RAM/SSD):
1. Giới thiệu tổng quan
Trong quá trình vận hành eCloud VPS tại esc.vn, đôi khi bạn sẽ gặp phải tình trạng website tải chậm, ứng dụng không phản hồi hoặc mất kết nối hoàn toàn. Sự cố này thường xuất phát từ hai nguyên nhân chính: quá tải tài nguyên phần cứng (CPU, RAM, Disk I/O) hoặc nghẽn băng thông mạng (do lượt truy cập tăng đột biến hoặc bị tấn công DDoS).
Tài liệu này hướng dẫn chi tiết cách tự kiểm tra, chẩn đoán nhanh hiệu suất của cả máy chủ VPS Linux và Windows, đồng thời đưa ra các bước xử lý sự cố kịp thời.
2. Giám sát và kiểm tra tài nguyên phần cứng VPS
2.1. Đối với eCloud VPS Linux (Ubuntu, CentOS, AlmaLinux, Rocky)
- Kiểm tra CPU và RAM bằng lệnh
top hoặc htop
- Sử dụng lệnh
top mặc định:
Đăng nhập SSH vào VPS và gõ:
top
Cách đọc các thông số quan trọng:
- Load average: Hiển thị tải trung bình của hệ thống trong 1 phút, 5 phút và 15 phút. Nếu con số này vượt quá số lượng Core CPU của VPS (ví dụ VPS có 2 Core nhưng Load average > 2.000), máy chủ đang bị quá tải nghiêm trọng.
- %Cpu(s): Xem dòng id (idle). Nếu %id gần bằng 0, nghĩa là CPU đang bị khai thác 100%.
- KiB Mem: Xem lượng RAM trống tại mục free. Nếu lượng RAM trống quá ít (< 100MB), hệ thống dễ rơi vào trạng thái tràn RAM (Out of Memory).
- Sử dụng công cụ trực quan
htop (Khuyên dùng):
Nếu hệ thống chưa cài đặt, bạn hãy cài đặt bằng lệnh:
- Với Ubuntu/Debian:
sudo apt install htop -y
- Với CentOS/AlmaLinux:
sudo dnf install epel-release -y && sudo dnf install htop -y
Sau đó khởi chạy:
htop
Giao diện htop sẽ hiển thị trực quan dạng thanh biểu đồ màu sắc cho từng Core CPU, dung lượng RAM đang sử dụng, và danh sách các tiến trình (process) đang chạy xếp theo thứ tự ngốn nhiều tài nguyên nhất. Để thoát ra ngoài, nhấn phím F10 hoặc q.
B. Kiểm tra dung lượng ổ cứng (Storage) và I/O (Đọc/Ghi)
- Kiểm tra dung lượng còn trống:
Nếu phân vùng hệ thống bị đầy 100%, các dịch vụ như MySQL, Nginx sẽ tự động bị crash (tắt ngang). Kiểm tra bằng lệnh:
df -h
Nhìn vào cột Use% của phân vùng / hoặc /dev/sdaX. Nếu đạt mức trên 90%, bạn cần tìm và xóa các file log dư thừa hoặc file backup cũ.
Mẹo tìm thư mục chiếm nhiều dung lượng nhất trên VPS:
du -sh /* 2>/dev/null | sort -h
- Kiểm tra tốc độ đọc ghi ổ cứng (Disk I/O):
Sử dụng công cụ iotop để xem tiến trình nào đang ghi đĩa quá nhiều (gây lag VPS):
sudo apt install iotop -y # Đối với Ubuntu
sudo iotop
2.2. Đối với eCloud VPS Windows Server
Sử dụng Task Manager nhanh chóng
- Kết nối vào VPS bằng Remote Desktop.
- Nhấp chuột phải vào thanh Taskbar và chọn Task Manager (hoặc nhấn tổ hợp phím Ctrl + Shift + Esc).
- Tại tab Processes, bạn có thể click vào đầu cột CPU hoặc Memory để sắp xếp xem ứng dụng nào đang chiếm dụng tài nguyên cao nhất (ví dụ: IIS, mssqlserver, chrome…).
- Chuyển sang tab Performance để xem biểu đồ trực quan về mức độ tải theo thời gian thực của CPU, RAM, ổ đĩa (Disk) và card mạng (Ethernet).
Phân tích chuyên sâu với Resource Monitor
Nếu cần kiểm tra chi tiết luồng dữ liệu hoặc file nào đang bị khóa/ghi liên tục:
- Nhấn Windows + R, gõ
resmon và nhấn Enter.
- Công cụ Resource Monitor sẽ hiển thị chi tiết các tiến trình đang đọc/ghi file nào trên Disk, kết nối đến IP nào trên Network với băng thông cụ thể.
3. Giám sát băng thông và xử lý nghẽn mạng
3.1. Các dấu hiệu nhận biết VPS bị nghẽn mạng
- Website phản hồi cực kỳ chậm hoặc xuất hiện lỗi 504 Gateway Time-out, 502 Bad Gateway.
- Khi thực hiện lệnh ping đến địa chỉ IP của VPS từ máy tính cá nhân, thời gian phản hồi (ms) rất cao hoặc xuất hiện thông báo bị mất gói tin (Request timed out / Packet Loss).
- Không thể kết nối SSH hoặc Remote Desktop vào VPS (báo lỗi kết nối hết hạn – Connection Timeout).
3.2. Giám sát băng thông mạng trên Linux
Đo băng thông thời gian thực bằng nload hoặc iftop
- Sử dụng nload để xem tổng lưu lượng mạng đang tải:
- Cài đặt:
sudo apt install nload -y (Ubuntu) hoặc sudo dnf install nload -y (AlmaLinux).
- Chạy lệnh:
Hệ thống hiển thị tốc độ mạng hiện tại (Incoming – Tải vào và Outgoing – Đẩy ra) giúp bạn biết card mạng có đang chạy hết công suất băng thông định mức hay không.
- Sử dụng iftop để xem IP nào đang ngốn băng thông:
- Cài đặt:
sudo apt install iftop -y / sudo dnf install iftop -y.
- Chạy lệnh:
Công cụ sẽ hiển thị chi tiết danh sách các IP ngoài đang kết nối tới VPS và lượng dữ liệu trao đổi giữa hai bên. Từ đây bạn dễ dàng phát hiện ra IP lạ đang cố tình tải file lớn hoặc spam request.
B. Kiểm tra số lượng kết nối TCP để phát hiện DDoS
Khi bị tấn công DDoS dạng Flood, lượng kết nối TCP ở trạng thái ESTABLISHED hoặc SYN_RECV sẽ tăng vọt. Hãy chạy lệnh sau để thống kê số lượng kết nối từ mỗi địa chỉ IP đến máy chủ của bạn:
netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Kết quả trả về sẽ có dạng:
12 127.0.0.1
15 42.113.12.14
850 1.2.3.4 <-- Địa chỉ IP này đang mở tới 850 kết nối (Bất thường/Nghi ngờ DDoS)
4. Quy trình xử lý nhanh khi VPS bị sự cố
Bước 1: Khởi động lại dịch vụ bị treo hoặc tiến trình chiếm tài nguyên cao
- Khởi động lại Web Server:
- Nginx:
sudo systemctl restart nginx
- Apache:
sudo systemctl restart apache2 (hoặc httpd)
- Khởi động lại Database (Nếu bị treo do tràn RAM/CPU):
- MySQL/MariaDB:
sudo systemctl restart mysql (hoặc mariadb)
- Sát hại (Kill) tiến trình chạy ngầm bị treo:
Tìm PID (Process ID) của tiến trình gây treo từ top hoặc htop rồi chạy lệnh:
kill -9 <PID_TIẾN_TRÌNH>
Bước 2: Chặn IP có hành vi bất thường/Tấn công
Nếu phát hiện một hoặc nhiều IP lạ đang spam kết nối phá hoại hệ thống ở bước 3.2, bạn tiến hành chặn ngay lập tức qua tường lửa của VPS:
- Sử dụng UFW (Ubuntu):
sudo ufw deny from 1.2.3.4 to any
sudo ufw reload
- Sử dụng Firewalld (AlmaLinux/CentOS):
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='1.2.3.4' reject"
sudo firewall-cmd --reload
- Sử dụng Windows Firewall:
- Truy cập Windows Defender Firewall with Advanced Security.
- Tạo một Inbound Rule mới, chọn loại Custom.
- Tại mục Scope, thêm IP cần chặn vào phần Remote IP addresses.
- Chọn hành động Block the connection.
5. Khi nào cần liên hệ bộ phận kỹ thuật esc.vn hỗ trợ?
Nếu bạn đã thực hiện các bước chẩn đoán trên nhưng:
- Máy chủ VPS hoàn toàn mất kết nối, không thể ping hay SSH từ bên ngoài (kể cả sau khi đã khởi động lại VPS qua trang quản trị).
- Lượng traffic tấn công DDoS quá lớn (vượt ngưỡng hàng Gbps), làm nghẽn toàn bộ đường truyền băng thông vật lý dẫn vào VPS từ tầng hạ tầng mạng Core của Datacenter.
- Bạn muốn mở rộng khẩn cấp cấu hình (Scale up CPU, RAM, SSD) để gánh tải lượng người dùng đang truy cập lớn đột ngột.
Cách thức liên hệ hỗ trợ kỹ thuật tại ESC:
- Gửi Ticket hỗ trợ (Khuyên dùng): Đăng nhập vào trang quản trị dịch vụ esc.vn, chọn mục Gửi yêu cầu hỗ trợ. Mô tả chi tiết lỗi bạn đang gặp phải, đính kèm ảnh chụp màn hình biểu đồ quá tải của VPS để kỹ sư hệ thống ESC khoanh vùng xử lý nhanh nhất.
- Đường dây nóng hỗ trợ kỹ thuật 24/7/365: Gọi ngay tới số 1900 2069 để gặp trực tiếp nhân viên kỹ thuật trực ca xử lý can thiệp khẩn cấp trên hạ tầng VMware vSphere.
1. Giới thiệu tổng quan
Khi bạn vừa khởi tạo thành công một máy chủ ảo eCloud VPS chạy hệ điều hành Linux (như Ubuntu, CentOS, AlmaLinux hay Rocky Linux) tại esc.vn, hệ thống sẽ được cấp phát một địa chỉ IP Public tĩnh. Ngay lập tức, địa chỉ IP này sẽ lọt vào tầm quét của hàng triệu robot tự động (botnet) trên Internet nhằm dò tìm tài khoản quản trị mặc định qua cổng SSH để chiếm quyền điều khiển.
Để đảm bảo máy chủ hoạt động an toàn và bảo mật tuyệt đối dữ liệu doanh nghiệp, việc thiết lập các lớp phòng thủ ban đầu là cực kỳ cấp thiết. Tài liệu này hướng dẫn chi tiết 6 bước chốt chặn bảo mật từ cơ bản đến nâng cao mà bất kỳ quản trị viên nào cũng cần thực hiện ngay sau khi nhận bàn giao VPS.
2. Quy trình 6 bước bảo mật eCloud VPS Linux
Lưu ý an toàn trước khi thực hiện: Trong quá trình thay đổi cấu hình bảo mật (đặc biệt là đổi cổng SSH hoặc cấu hình tường lửa), bạn không nên tắt cửa sổ kết nối SSH hiện tại. Hãy mở thêm một cửa sổ terminal mới để kiểm tra thử kết nối bằng cấu hình mới thành công rồi mới đóng cửa sổ cũ. Điều này giúp bạn tránh tình trạng bị khóa tài khoản hoặc mất quyền truy cập VPS ngoài ý muốn.
Bước 1: Cập nhật hệ thống lên phiên bản mới nhất
Nhà phát triển hệ điều hành luôn liên tục cập nhật các bản vá lỗi bảo mật (security patches) để ngăn chặn các lỗ hổng zero-day nguy hiểm. Việc đầu tiên là nâng cấp toàn bộ hệ thống.
Bước 2: Tạo tài khoản User mới và cấu hình quyền Sudo (Hạn chế dùng Root)
Tài khoản root là tài khoản có quyền hạn tối cao nhất trên hệ điều hành Linux. Sử dụng tài khoản này hàng ngày tiềm ẩn rủi ro thao tác sai gây lỗi hệ thống hoặc bị hacker nhắm mục tiêu tấn công dò mật khẩu trực tiếp. Giải pháp an toàn nhất là tạo một user thông thường và chỉ cấp quyền quản trị (Sudo) khi thực sự cần thiết.
1. Tạo tài khoản người dùng mới (Ví dụ tên user là esc_admin):
sudo adduser esc_admin
Hệ thống sẽ yêu cầu bạn nhập mật khẩu mới và xác nhận lại mật khẩu cho user này.
2. Cấp quyền quản trị (Sudo/Wheel) cho user mới:
3. Kiểm tra đăng nhập thử bằng user mới:
Hãy mở một cửa sổ SSH mới trên máy tính của bạn và đăng nhập bằng tài khoản esc_admin. Để kiểm tra quyền Sudo, bạn chạy lệnh:
sudo whoami
Nếu hệ thống trả về kết quả là root, tài khoản mới đã được cấp quyền quản trị thành công.
Bước 3: Thay đổi cổng kết nối SSH mặc định (Port 22)
Mặc định dịch vụ SSH lắng nghe trên cổng 22. Các botnet liên tục dò quét cổng này. Thay đổi sang một cổng ngẫu nhiên khác sẽ giảm thiểu đến 99% lượng log tấn công dò mật khẩu tự động.
1. Mở file cấu hình dịch vụ SSH:
sudo nano /etc/ssh/sshd_config
2. Tìm dòng chứa tham số Port:
Mặc định hệ thống sẽ để dòng ẩn #Port 22. Bạn hãy xóa dấu # ở đầu dòng và thay đổi số 22 thành một cổng ngẫu nhiên bảo mật nằm trong khoảng từ 1024 đến 65535 (Ví dụ chọn cổng 2288):
Port 2288
3. Cấu hình SELinux (Chỉ áp dụng với hệ CentOS/AlmaLinux/Rocky Linux):
Mặc định, chính sách bảo mật SELinux sẽ chặn dịch vụ SSH khởi động trên các cổng không phải cổng 22. Nếu VPS của bạn đang bật SELinux, bạn cần khai báo cổng mới:
sudo semanage port -a -t ssh_port_t -p tcp 2288
Nếu hệ thống báo lệnh semanage không tồn tại, bạn cài đặt thêm bằng lệnh: sudo dnf install policycoreutils-python-utils -y.
4. Khởi động lại dịch vụ SSH để áp dụng cấu hình:
Bước 4: Thiết lập và kích hoạt tường lửa (Firewall) bảo vệ VPS
Tường lửa đóng vai trò là chốt chặn lọc mọi dữ liệu ra vào máy chủ ảo. Bạn chỉ nên mở các cổng dịch vụ thực sự cần thiết (như SSH mới, HTTP, HTTPS) và khóa tất cả các cổng còn lại.
A. Hướng dẫn cấu hình UFW (Dành cho Ubuntu/Debian)
Cấu hình cho phép cổng SSH mới hoạt động (Ví dụ: 2288):
sudo ufw allow 2288/tcp
Cho phép các cổng chạy dịch vụ Web (HTTP và HTTPS):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Kích hoạt tường lửa hệ thống:
sudo ufw enable
Nhấn y để đồng ý kích hoạt.
Kiểm tra trạng thái hoạt động:
sudo ufw status verbose
B. Hướng dẫn cấu hình Firewalld (Dành cho CentOS/AlmaLinux/Rocky Linux)
Kích hoạt dịch vụ Firewalld chạy cùng hệ thống:
sudo systemctl enable firewalld –now
Thêm cổng SSH mới vào danh sách cho phép (Ví dụ: 2288):
sudo firewall-cmd –permanent –add-port=2288/tcp
Cho phép cổng Web mặc định hoạt động:
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
Áp dụng các thay đổi cấu hình tường lửa:
sudo firewall-cmd –reload
Kiểm tra danh sách các cổng đang mở:
sudo firewall-cmd –list-all
Bước 5: Cấu hình xác thực bằng SSH Key thay cho mật khẩu thường
Xác thực bằng cặp khóa SSH Key (Private Key / Public Key) là phương thức bảo mật tối ưu nhất hiện nay. Hacker hoàn toàn không thể dò tìm mật khẩu vì hệ thống chỉ chấp nhận tệp tin khóa bí mật trùng khớp lưu trên máy tính cá nhân của bạn để mở khóa.
1. Tạo cặp khóa SSH Key trên máy tính cá nhân của bạn (Client)
2. Sao chép khóa Public Key lên máy chủ eCloud VPS
Chạy lệnh sau từ máy tính cá nhân của bạn để chuyển khóa Public lên server (nhớ chỉ định đúng cổng SSH mới ở Bước 3, ví dụ: 2288):
ssh-copy-id -p 2288 esc_admin@IP_CỦA_VPS
Nhập mật khẩu của user esc_admin để xác nhận tải khóa lên.
3. Kiểm tra đăng nhập không cần mật khẩu
Thử kết nối lại từ máy tính cá nhân:
ssh -p 2288 esc_admin@IP_CỦA_VPS
Nếu bạn truy cập thẳng vào màn hình VPS mà không yêu cầu nhập mật khẩu, cấu hình SSH Key đã hoạt động.
4. Tắt tính năng đăng nhập bằng mật khẩu thường và tắt tài khoản Root đăng nhập trực tiếp
Khi SSH Key đã chạy ổn định, bạn hãy tiến hành khóa hẳn tính năng đăng nhập bằng mật khẩu truyền thống và chặn hoàn toàn tài khoản root kết nối SSH:
- Mở lại file cấu hình SSH trên VPS:
sudo nano /etc/ssh/sshd_config
- Tìm và thay đổi các cấu hình sau (xóa dấu # ở đầu dòng nếu có):
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
- Lưu file và khởi động lại dịch vụ SSH (sudo systemctl restart ssh hoặc sudo systemctl restart sshd). Từ thời điểm này, không ai có thể đăng nhập bằng tài khẩu root hoặc dùng mật khẩu thông thường để kết nối vào VPS của bạn nữa.
Bước 6: Cài đặt và cấu hình Fail2ban ngăn chặn Brute Force
Fail2ban là một dịch vụ bảo vệ nền tảng chạy ngầm mạnh mẽ. Nó sẽ liên tục đọc tệp tin lịch sử hệ thống (log files) để phát hiện các IP đang cố tình kết nối sai mật khẩu nhiều lần liên tục, sau đó tự động kích hoạt tường lửa block (cấm) IP đó trong một khoảng thời gian thiết lập trước.
1. Tiến hành cài đặt Fail2ban:
- Đối với Ubuntu/Debian:
sudo apt install fail2ban -y
- Đối với CentOS/AlmaLinux/Rocky Linux:
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
2. Cấu hình bảo vệ dịch vụ SSH:
Tạo một file cấu hình riêng để ghi đè cấu hình mặc định:
sudo nano /etc/fail2ban/jail.local
Sao chép nội dung cấu hình sau và dán vào file (Nhớ sửa cổng port = 2288 trùng với cổng SSH bạn đã đổi ở bước 3):
[sshd]
enabled = true
port = 2288
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600
Giải thích thông số cấu hình:
- maxretry = 5: Nếu một IP kết nối sai quá 5 lần.
- findtime = 600: Trong khoảng thời gian cửa sổ giám sát là 600 giây (10 phút).
- bantime = 3600: Thì IP đó sẽ bị tường lửa khóa chặn kết nối hoàn toàn trong 3600 giây (1 tiếng).
Lưu ý: Đối với hệ điều hành CentOS/AlmaLinux, bạn hãy đổi đường dẫn log thành logpath = /var/log/secure.
3. Khởi động dịch vụ Fail2ban hoạt động cùng hệ thống:
sudo systemctl enable fail2ban –now
3. Tổng kết và danh sách kiểm tra nhanh (Checklist)
Sau khi hoàn tất 6 bước cấu hình trên, máy chủ eCloud VPS Linux của bạn đã có một lớp áo bảo vệ vô cùng kiên cố. Dưới đây là bảng checklist kiểm tra nhanh các hạng mục bảo mật đã triển khai thành công:
| STT |
Hạng mục kiểm tra |
Trạng thái bảo vệ đạt được |
| 1 |
Cập nhật hệ thống |
Hệ thống vận hành trên phiên bản nhân nhân và gói ứng dụng bảo mật mới nhất. |
| 2 |
Hạn chế Root |
Không sử dụng trực tiếp tài khoản root cho thao tác công việc thường ngày. |
| 3 |
Đổi Port mặc định |
Tránh được 99% các đợt quét cổng dịch vụ tự động từ bên ngoài mạng. |
| 4 |
Kích hoạt Firewall |
Chỉ các cổng dịch vụ mong muốn được mở, chặn đứng mọi kết nối rác qua các cổng khác. |
| 5 |
Áp dụng SSH Key |
Khóa hoàn toàn tính năng xác thực mật khẩu thông thường, triệt tiêu nguy cơ rò mật khẩu. |
| 6 |
Cài đặt Fail2ban |
Tự động phát hiện và ngăn chặn hiệu quả các cuộc tấn công Brute Force vào cổng SSH. |
Nếu bạn gặp khó khăn trong bất kỳ thao tác nào hoặc vô tình cấu hình sai tường lửa dẫn đến bị khóa kết nối, đừng ngần ngại truy cập trực tiếp tính năng View Console cứu hộ trên trang quản trị khachhang.esc.vn hoặc liên hệ ngay hotline hỗ trợ kỹ thuật 24/7 của ESC 1900 2069 để được kỹ sư hệ thống xử lý hỗ trợ nhanh chóng.