Bài Học Nhớ Đời Khi Cấu Hình Tường Lửa Từ Xa
Hôm nay, tôi quyết định thiết lập tường lửa cho một máy chủ FreeBSD đang quản lý từ xa. Khi bắt đầu sử dụng ipfw, tôi phát hiện module ipfw chưa được nạp vào hệ thống. Trong lúc nóng vội, tôi liền chạy lệnh kldload ipfw
mà không suy nghĩ kỹ. Hậu quả là ngay lập tức bị chặn khỏi máy chủ qua kết nối SSH - một trải nghiệm “đắt giá” khiến tôi phải nhờ đồng nghiệp ở trung tâm dữ liệu hỗ trợ reset máy.
Sau sự cố này, tôi mới hiểu tại sao cấu hình mặc định của FreeBSD với ipfw lại có quy tắc ngầm 65535 deny ip from any to any
. Việc nạp module ipfw trực tiếp khiến tất cả kết nối bị chặn ngay lập tức, không cho phép thêm bất kỳ quy tắc mới nào từ xa. Trước đây khi làm việc trên máy cục bộ trong văn phòng, tôi chưa từng gặp rủi ro này, nhưng lần đầu cấu hình tường lửa cho máy chủ ở “đầu kia Trái Đất” đã dạy tôi một bài học nhớ đời.
Khi khởi động lại máy, tôi thận trọng hơn hẳn. Thay vì nạp module thủ công, tôi chỉnh sửa file /etc/rc.conf
và sử dụng script khởi động chính thống /etc/rc.d/ipfw start
. Để đảm bảo an toàn, tôi thiết lập:
|
|
Trên máy trạm, tôi kiểm tra kỹ kịch bản này hoạt động ổn định trước khi triển khai lên máy chủ từ xa.
Tuy nhiên, khi thực thi lệnh /etc/rc.d/ipfw start
trên máy chủ, tôi lại một lần nữa bị ngắt kết nối đầy cay đắng. Một đồng nghiệp tinh ý đã chỉ ra nguyên nhân: Trong quá trình thêm quy tắc, ipfw xuất ra luồng stdout. Khi module được nạp, kết nối SSH của tôi bị chấm dứt trước khi các quy tắc mới kịp áp dụng, khiến script bị hủy bỏ giữa chừng.
Phải nhờ đến sự hỗ trợ reset máy lần nữa từ đồng nghiệp, tôi mới có thể hoàn tất cấu hình. Bài học rút ra: Khi khởi động ipfw từ xa, tuyệt đối phải chuyển hướng cả hai luồng xuất stdout và stderr để tránh tình trạng script bị ngắt đột ngột:
|
|
Sự cố này đã dạy tôi 3 bài học quý giá:
- Luôn kiểm tra kỹ cấu hình tường lửa trên môi trường thử nghiệm trước khi triển khai
- Sử dụng chuyển hướng xuất (redirection) khi thực thi lệnh nhạy cảm từ xa
- Ưu tiên sử dụng các script quản lý dịch vụ hệ thống thay vì thao tác thủ công
Giờ đây, mỗi khi làm việc với tường lửa từ xa, tôi luôn mở một session screen
dự phòng và chuẩn bị sẵn kịch bản rollback. Công nghệ thì vô tình, nhưng con người thì hữu ý - chỉ cần cẩn trọng hơn một chút, nhiều sự cố có thể tránh khỏi.