Gần đây tôi lại ngồi "cày" một server VPS cũ, vừa nâng cấp cấu hình vừa cố gắng tối ưu hóa bảo mật. Thú thật là hồi mới làm dev, tôi cứ nghĩ Firewall là thần thánh, cứ bật lên là an toàn 100%. Nhưng rồi mới biết cuộc đời không đơn giản thế, nhất là khi bạn đang expose port 22 của SSH ra公网 mà không có bất kỳ biện pháp gì ngoài mật khẩu.
Câu chuyện của tôi bắt đầu khi tôi quên tắt fail2ban trong một thời gian dài, tưởng chừng như vô hại. Kết quả là log server đầy rẫy các dòng cảnh báo từ những IP lạ lùng trên khắp thế giới, đang cố brute force vào tài khoản root của tôi. Lúc đó tôi mới thấm thía: Firewall chỉ chặn port không cần thiết, còn fail2ban mới là "thợ canh cửa" thực thụ, tự động ban IP những kẻ xấu cố ý tấn công.
Nhưng dù đã cài đặt fail2ban và cấu hình firewall kỹ lưỡng, tôi vẫn thấy "nhột nhột" khi nghĩ đến việc dữ liệu truyền qua mạng. Đó là lúc tôi quyết định bật SSL/TLS ngay cả cho những dịch vụ nội bộ hoặc SSH (thông qua certificate tự tạo). Nhiều người sẽ bảo: "Server của tôi không có traffic công cộng, làm gì cần SSL?". Tôi thì không nghĩ vậy. Trong thời đại này, an ninh phải là mindset từ dưới lên. Việc thiết lập openssl genrsa để tạo key riêng hay cấu hình sudo systemctl restart nginx sau khi mount certificate cũng không mất nhiều thời gian, nhưng nó mang lại một lớp bảo vệ bổ sung về tính toàn vẹn dữ liệu mà ta không nên phớt lờ.
Tóm lại, bảo mật không phải là một công cụ đơn lẻ mà là một "tổng thể". SSH an toàn hơn khi có fail2ban, firewall cần được cấu hình thông minh, và SSL/TLS nên được áp dụng ở mọi nơi có thể. Đừng đợi bị hack rồi mới nhớ đến những layer bảo vệ này nhé các bạn. Cảm giác được kiểm soát toàn bộ hệ thống, biết rằng server của mình đang "đóng chặt cửa" với những kẻ không mời, là một niềm vui nhỏ nhưng rất quý giá của nghề này.