Firewall là gì và nó hoạt động như thế nào?
Tường lửa là một hệ thống cung cấp bảo mật mạng bằng cách lọc lưu lượng mạng đến và đi dựa trên một tập hợp các luật do user xác định. Nói chung, mục đích của firewall là giảm hoặc loại bỏ sự xuất hiện của các giao tiếp mạng không mong muốn trong khi vẫn cho phép tất cả các giao tiếp hợp lệ tự do lưu thông. Trong hầu hết các cơ sở hạ tầng server , firewall cung cấp một lớp bảo mật thiết yếu, kết hợp với các biện pháp khác, ngăn những kẻ tấn công truy cập vào server của bạn theo những cách độc hại.Hướng dẫn này sẽ thảo luận về cách hoạt động của firewall , tập trung vào firewall phần mềm trạng thái , chẳng hạn như iptables và FirewallD, vì chúng liên quan đến các server cloud . Ta sẽ bắt đầu với phần giải thích ngắn gọn về các gói TCP và các loại firewall khác nhau. Sau đó, ta sẽ thảo luận về nhiều chủ đề có liên quan đến firewall trạng thái. Cuối cùng, ta sẽ cung cấp các liên kết đến các hướng dẫn khác sẽ giúp bạn cài đặt firewall trên server của riêng mình.
Gói mạng TCP
Trước khi thảo luận về các loại firewall khác nhau, ta hãy xem nhanh lưu lượng mạng Giao thức điều khiển truyền tải (TCP) trông như thế nào.
Lưu lượng mạng TCP di chuyển xung quanh mạng trong các gói , là các container bao gồm tiêu đề gói — phần này chứa thông tin điều khiển như địa chỉ nguồn và đích, thông tin trình tự gói — và dữ liệu ( còn gọi là tải trọng). Mặc dù thông tin điều khiển trong mỗi gói giúp đảm bảo dữ liệu liên quan của nó được phân phối đúng cách, các phần tử mà nó chứa cũng cung cấp cho firewall nhiều cách để khớp các gói với các luật firewall .
Điều quan trọng cần lưu ý là việc nhận thành công các gói TCP gửi đến yêu cầu người nhận phải gửi các gói thông báo đi ngược lại cho người gửi. Sự kết hợp của thông tin điều khiển trong các gói đến và đi được dùng để xác định trạng thái kết nối (ví dụ: mới, đã cài đặt , có liên quan) giữa người gửi và người nhận.
Các loại firewall
Hãy nhanh chóng thảo luận về ba loại firewall mạng cơ bản: lọc gói (không trạng thái), trạng thái và lớp ứng dụng.
Tường lửa lọc gói hay không trạng thái hoạt động bằng cách kiểm tra các gói riêng lẻ một cách riêng biệt. Do đó, họ không biết về trạng thái kết nối và chỉ có thể cho phép hoặc từ chối các gói tin dựa trên các tiêu đề gói tin riêng lẻ.
Tường lửa trạng thái có thể xác định trạng thái kết nối của các gói, điều này làm cho chúng linh hoạt hơn nhiều so với firewall không trạng thái. Chúng hoạt động bằng cách thu thập các gói liên quan cho đến khi có thể xác định được trạng thái kết nối trước khi bất kỳ luật firewall nào được áp dụng cho lưu lượng.
Tường lửa ứng dụng tiến thêm một bước nữa bằng cách phân tích dữ liệu đang được truyền, điều này cho phép lưu lượng mạng trùng với các luật firewall dành riêng cho các dịch vụ hoặc ứng dụng riêng lẻ. Chúng còn gọi là firewall dựa trên proxy.
Ngoài phần mềm firewall , có sẵn trên tất cả các hệ điều hành hiện đại, chức năng firewall cũng có thể được cung cấp bởi các thiết bị phần cứng, chẳng hạn như bộ định tuyến hoặc thiết bị firewall . , cuộc thảo luận của ta sẽ tập trung vào firewall phần mềm trạng thái chạy trên các server mà chúng được thiết kế để bảo vệ.
Luật firewall
Như đã đề cập ở trên, lưu lượng mạng đi qua firewall phù hợp với các luật để xác định xem nó có nên được phép đi qua hay không.Một cách dễ dàng để giải thích các luật firewall trông như thế nào là hiển thị một vài ví dụ, vì vậy ta sẽ làm điều đó ngay bây giờ.
Giả sử bạn có một server với danh sách các luật firewall áp dụng cho lưu lượng truy cập đến:
- Chấp nhận lưu lượng đến mới và được cài đặt vào network interface công cộng trên cổng 80 và 443 (lưu lượng truy cập web HTTP và HTTPS)
- Giảm lưu lượng truy cập từ địa chỉ IP của nhân viên không phải là kỹ thuật trong văn phòng của bạn xuống cổng 22 (SSH)
- Chấp nhận lưu lượng đến mới và được cài đặt từ dải IP văn phòng của bạn đến network interface riêng trên cổng 22 (SSH)
Lưu ý từ đầu tiên trong mỗi ví dụ này là “chấp nhận”, “từ chối” hoặc “bỏ”. Điều này chỉ định hành động mà firewall phải thực hiện trong trường hợp một phần lưu lượng mạng trùng với một luật . Chấp nhận phương tiện để cho phép lưu lượng truy cập, từ chối phương tiện chặn lưu lượng nhưng trả lời với lỗi "không thể truy cập" và bỏ phương tiện chặn lưu lượng và không gửi trả lời. Phần còn lại của mỗi luật bao gồm điều kiện mà mỗi gói được so trùng với nhau.
Hóa ra, lưu lượng mạng được so trùng với danh sách các luật firewall theo một trình tự hoặc chuỗi từ đầu tiên đến cuối cùng. Cụ thể hơn, khi một luật được đối sánh, hành động được liên kết sẽ được áp dụng cho lưu lượng mạng được đề cập. Trong ví dụ của ta , nếu một nhân viên kế toán cố gắng cài đặt kết nối SSH với server , họ sẽ bị từ chối dựa trên luật 2, trước khi luật 3 được kiểm tra. Tuy nhiên, administrator hệ thống sẽ được chấp nhận vì họ chỉ phù hợp với luật 3.
Chính sách mặc định
Nó là điển hình cho một chuỗi các luật firewall không bao gồm rõ ràng mọi điều kiện có thể. Vì lý do này, chuỗi firewall phải luôn có policy mặc định được chỉ định, policy này chỉ bao gồm một hành động (chấp nhận, từ chối hoặc bỏ).
Giả sử policy mặc định cho chuỗi ví dụ trên được đặt thành giảm . Nếu bất kỳ máy tính nào bên ngoài văn phòng của bạn cố gắng cài đặt kết nối SSH với server , lưu lượng truy cập sẽ bị ngắt do không phù hợp với các điều kiện của bất kỳ luật nào.
Nếu policy mặc định được đặt thành chấp nhận , thì bất kỳ ai, ngoại trừ nhân viên không chuyên về kỹ thuật của chính bạn, đều có thể cài đặt kết nối với bất kỳ dịch vụ mở nào trên server của bạn. Đây sẽ là một ví dụ về firewall được cấu hình rất kém vì nó chỉ ngăn chặn một tập hợp con nhân viên của bạn.
Lưu lượng đến và đi
Vì lưu lượng mạng, từ quan điểm của server , có thể đến hoặc đi, firewall duy trì một bộ luật riêng biệt cho cả hai trường hợp. Lưu lượng truy cập bắt nguồn từ nơi khác, lưu lượng đến, được xử lý khác với lưu lượng đi mà server gửi. Nó là điển hình cho một server cho phép hầu hết lưu lượng gửi đi vì server thường, đối với chính nó, tin cậy . Tuy nhiên, bộ luật gửi đi được dùng để ngăn chặn giao tiếp không mong muốn trong trường hợp server bị xâm nhập bởi kẻ tấn công hoặc file thực thi độc hại.
Để tối đa hóa lợi ích bảo mật của firewall , bạn nên xác định tất cả các cách bạn muốn các hệ thống khác tương tác với server của bạn , tạo các luật cho phép chúng một cách rõ ràng, sau đó loại bỏ tất cả các lưu lượng khác. Lưu ý các luật gửi đi thích hợp phải được áp dụng để server sẽ tự cho phép gửi các xác nhận đi đến bất kỳ kết nối đến thích hợp nào. Ngoài ra, vì một server thường cần khởi tạo lưu lượng gửi đi của chính nó vì nhiều lý do khác nhau — ví dụ: download các bản cập nhật hoặc kết nối với database — điều quan trọng là phải bao gồm những trường hợp đó trong bộ luật gửi đi của bạn.
Viết luật gửi đi
Giả sử firewall mẫu của ta được đặt để bỏ lưu lượng gửi đi theo mặc định. Điều này nghĩa là các luật chấp nhận đến của ta sẽ vô dụng nếu không có các luật gửi đi bổ sung.
Để bổ sung cho các luật firewall đến ví dụ (1 và 3), từ phần Luật firewall và cho phép xảy ra giao tiếp thích hợp trên các địa chỉ và cổng đó, ta có thể sử dụng các luật firewall đi sau:
- Chấp nhận lưu lượng gửi đi đã cài đặt vào network interface công cộng trên cổng 80 và 443 (HTTP và HTTPS)
- Chấp nhận lưu lượng đi đã cài đặt vào network interface riêng trên cổng 22 (SSH)
Lưu ý ta không cần phải viết rõ ràng luật cho lưu lượng đến bị bỏ ( luật đến 2) vì server không cần cài đặt hoặc xác nhận kết nối đó.
Phần mềm và công cụ firewall
Bây giờ ta đã xem qua cách hoạt động của firewall , ta hãy xem xét các gói phần mềm phổ biến có thể giúp ta cài đặt firewall hiệu quả. Trong khi có nhiều gói khác liên quan đến firewall , những gói này có hiệu quả và là những gói bạn sẽ gặp nhiều nhất.
Iptables
Iptables là một firewall tiêu chuẩn có trong hầu hết các bản phân phối Linux theo mặc định (một biến thể hiện đại được gọi là nftables là mộtversion tiếp theo ). Nó thực sự là một giao diện user cho các netfilter hooks cấp kernel có thể thao tác với mạng Linux. Nó hoạt động bằng cách khớp từng gói đi qua network interface với một bộ luật để quyết định việc cần làm.
Để tìm hiểu cách triển khai firewall với iptables, hãy xem các liên kết sau:
- Cách cài đặt firewall bằng IPTables trên Ubuntu 14.04
- Cách triển khai mẫu firewall cơ bản với Iptables trên Ubuntu 14.04
- Cách cài đặt firewall Iptables để bảo vệ lưu lượng truy cập giữa các server của bạn
UFW
UFW, viết tắt của Uncomplicated Firewall, là một giao diện của iptables nhằm mục đích đơn giản hóa quá trình cấu hình firewall .
Để tìm hiểu thêm về cách sử dụng UFW, hãy xem hướng dẫn này: Cách Cài đặt Tường lửa với UFW trên Server Đám mây Ubuntu và Debian .
Tường lửaD
FirewallD là một giải pháp firewall hoàn chỉnh có sẵn theo mặc định trên server CentOS 7. Ngẫu nhiên, FirewallD sử dụng iptables để cấu hình netfilter.
Để tìm hiểu thêm về cách sử dụng FirewallD, hãy xem hướng dẫn này: Cách cấu hình FirewallD để bảo vệ server CentOS 7 của bạn .
Nếu bạn đang chạy CentOS 7 nhưng thích sử dụng iptables, hãy làm theo hướng dẫn này: Cách di chuyển từ FirewallD sang Iptables trên CentOS 7 .
Fail2ban
Fail2ban là một phần mềm ngăn chặn xâm nhập có thể tự động cấu hình firewall của bạn để chặn các nỗ lực đăng nhập bạo lực và các cuộc tấn công DDOS.
Để tìm hiểu thêm về Fail2ban, hãy xem các liên kết sau:
- Cách Fail2ban hoạt động để bảo vệ các dịch vụ trên server Linux
- Cách bảo vệ SSH bằng Fail2Ban trên Ubuntu 14.04
- Cách bảo vệ server Nginx với Fail2Ban trên Ubuntu 14.04
- Cách bảo vệ server Apache với Fail2Ban trên Ubuntu 14.04
Kết luận
Đến đây bạn đã hiểu cách hoạt động của firewall , bạn nên xem xét việc triển khai firewall sẽ cải thiện tính bảo mật của cài đặt server của bạn bằng cách sử dụng các hướng dẫn ở trên.
Nếu bạn muốn tìm hiểu thêm về cách hoạt động của firewall , hãy xem các liên kết sau:
- Cách thức hoạt động của firewall Iptables
- Cách chọn policy firewall hiệu quả để bảo vệ server của bạn
- Tìm hiểu sâu về kiến trúc Iptables và Netfilter
Các tin liên quan