Nhiều hệ thống bị xâm nhập không phải vì hacker quá giỏi, mà vì server được vận hành quá chủ quan.
Một rule firewall mở thừa, một user test quên xóa, một service chạy mặc định… cũng đủ biến production thành “cửa mở”.
Bảo mật Linux không phải thao tác một lần rồi thôi, mà là quy trình vận hành chuẩn, lặp lại mỗi ngày.
Nếu đang quản lý server production, bạn cần xem bảo mật như một phần của công việc hằng ngày – không phải việc làm cho có.
Dưới đây là 10 nguyên tắc bảo mật Linux mang tính thực chiến, được áp dụng trong môi trường production thực tế mà bất kỳ hệ thống nào cũng nên tuân thủ.
- Bảo mật dịch vụ SSH – Cổng sống còn của cả hệ thống
SSH là đường vào duy nhất để quản trị server, nên phải siết chặt tối đa.
Những việc cần làm ngay:
-
- Không cho đăng nhập trực tiếp bằng root: PermitRootLogin no → Tránh trường hợp brute-force vào tài khoản root.
- Dùng SSH key, không dùng mật khẩu: ssh-copy-id admin@server → Vừa an toàn, vừa tiện.
- Đổi port mặc định 22 sang port ít ai để ý (ví dụ 2222) → Không phải giải pháp “thần thánh”, nhưng giảm bớt số lượng bot quét.
- Giới hạn IP truy cập SSH bằng firewall: ufw allow from 118.70.15.99 to any port 2222.
- Chỉ định tài khoản được phép SSH: AllowUsers devops_admin service_account
Thực tế: Hơn 80% cuộc tấn công vào server Linux đều xuất phát từ SSH.
- Quản lý quyền sudo – Mạnh nhưng nguy hiểm
Sudo cho phép người dùng thực hiện lệnh của root. Nếu lỏng tay, hậu quả rất lớn.
Quy tắc an toàn:
-
- Chỉ tài khoản quản trị được dùng sudo đầy đủ.
- Bật log toàn bộ lệnh sudo để truy vết sự cố.
- Với tài khoản đặc thù, chỉ cho phép chạy 1 vài lệnh cụ thể
- app_runner ALL=(ALL) NOPASSWD: /usr/bin/tail -f /var/log/my_app/activity.log
Thực tế: Rất nhiều lỗi “xóa nhầm file”, “stop nhầm service” do quyền sudo quá thoải mái.
- Quản lý tài khoản người dùng – Tránh tài khoản “ma”
Máy chủ lâu ngày thường tồn tại các tài khoản không còn dùng → cực kỳ nguy hiểm.
Việc cần làm định kỳ:
-
- Xóa tài khoản cũ + home directory: userdel -r old_user
- Xem danh sách người dùng hiện tại: cat /etc/passwd | cut -d: -f1
- Dùng group để quản lý quyền, không phân quyền rải rác từng tài khoản.
Một tài khoản quên xóa, mật khẩu yếu, có thể bị khai thác để chiếm server.
- Cấu hình tường lửa – Nguyên tắc “deny all”
Tường lửa là lớp phòng thủ đầu tiên, phải dùng đúng cách:
-
- Chặn toàn bộ incoming.
- Chỉ mở đúng dịch vụ cần thiết.
Ví dụ:
ufw default deny incoming
ufw default allow outgoing
ufw allow 'Nginx Full'
ufw allow from 10.0.1.0/24 to any port 5432 proto tcp
ufw enable
Trong môi trường production, không bao giờ để server “trần truồng” không firewall.
- Ngăn chặn brute-Force với Faillock
Faillock giúp khóa tài khoản khi nhập sai nhiều lần liên tiếp.
Ví dụ cấu hình:
deny = 3
unlock_time = 900 # 15 phút
→ Chặn ngay hành vi brute-force mật khẩu.
Không bật Faillock = mở cửa mời hacker thử mật khẩu hàng nghìn lần.
- Áp dụng chính sách mật khẩu mạnh (PAM)
PAM giúp enforce mật khẩu phức tạp.
Ví dụ:
password requisite pam_pwquality.so retry=3 minlen=14 ucredit=-1 lcredit=-1 dcredit=-2 ocredit=-1
Yêu cầu: 14 ký tự + chữ hoa + chữ thường + số + ký tự đặc biệt.
Trong môi trường sản xuất, mật khẩu “123456”, “Welcome123” rất là … luôn.
- Quản lý vòng đời mật khẩu
Không ai nhớ thay mật khẩu nếu hệ thống không ép.
Cấu hình trong /etc/login.defs:
PASS_MAX_DAYS 60
PASS_WARN_AGE 7
→ Mật khẩu hết hạn sau 60 ngày, cảnh báo trước 7 ngày.
Quy trình DevOps/SysAdmin thật sự phải đi kèm rotation mật khẩu định kỳ.
- Hạn chế truy cập Internet từ server
Không phải server nào cũng cần internet full.
Hạn chế outbound traffic giúp giảm:
-
- Nguy cơ server bị chiếm quyền → download malware
- Lộ dữ liệu ra ngoài
Ví dụ:
ufw default deny outgoing
ufw allow out 53
ufw allow out to 192.168.1.100 port 8081 proto tcp
Server production mà được truy cập Internet thoải mái là rủi ro rất lớn.
- Bật logging + giám sát tập trung
Logging giúp tìm nguyên nhân sự cố và phát hiện hành vi bất thường.
-
- Bật log sudo:
- Defaults logfile=”/var/log/sudo.log”
- Gửi log về hệ thống tập trung như:
ELK Stack
Graylog
Splunk
Loki + Promtail
Không có log = không biết chuyện gì đang xảy ra khi sự cố xảy ra.
- Triển khai xác thực hai yếu tố (2FA)
Thêm một lớp bảo mật cực mạnh cho SSH, dùng:
-
- Google Authenticator (libpam-google-authenticator)
- OTP trên điện thoại
→ Kẻ xấu dù có mật khẩu vẫn không đăng nhập được.
11. Backup backup và backup. cái gì quan trọng nhắc lại nhiều lần 🙂
Đây là bước quan trọng khi server chứa dữ liệu quan trọng hoặc nằm trên Internet.
Vậy nên, Trong môi trường Production, bảo mật Linux không phải chuyện “làm một lần rồi thôi”. Nó là thói quen, là kỷ luật, và là trách nhiệm mỗi ngày. Bạn càng chuẩn chỉ từ những thứ nhỏ — từ SSH, quyền sudo, firewall, cho đến log và giám sát — thì hệ thống càng ít sự cố, càng ít bị tấn công, và bạn càng ít phải thức đêm. Bảo mật thật ra không phức tạp… chỉ cần bạn làm đúng ngay từ đầu và luôn giữ thói quen làm đúng.