Nội dung bài viết
1 Các nguyên tắc cơ bản về firewall
1.1 Các thuật ngữ cơ bản
Rule và ruleset là hai thuật ngữ sẽ được sử dụng suốt trong phần này:
Rule hay còn gọi là quy tắc được quản lý ở phần Firewall > Rules.
Ruleset đề cập đến một nhóm quy tắc chung. Tất cả các rule firewall nói chung hoặc một tập hợp các rule trong ngữ cảnh cụ thể, chẳng hạn như các rule trên tab interface
1.2 Trạng thái filter
PfSense là một trạng thái firewall, có nghĩa là nó ghi nhớ thông tin về các kết nối chảy qua firewall để lưu lượng truy cập trả lời có thể được cho phép tự động. Dữ liệu này được giữ lại trong State Table. Thông tin kết nối trong State Table bao gồm nguồn, đích, protocol, port.
Sử dụng cơ chế này, lưu lượng truy cập chỉ cần được cho phép trên interface nơi nó đi vào firewall. Khi kết nối khớp với rule firewall thì sẽ tạo mục nhập trong state table. Lưu lượng truy cập trả lời các kết nối được tự động cho phép trở lại thông qua firewall bằng cách kết hợp nó với state table thay vì phải kiểm tra nó với các rule trong cả hai hướng. Điều này bao gồm bất kỳ lưu lượng liên quan nào sử dụng một giao thức khác, chẳng hạn như thông báo điều khiển ICMP có thể được cung cấp để phản hồi lại TCP, UDP hoặc kết nối khác.
Kích thước State table
State Table firewall có kích thước tối đa có thể tránh việc cạn kiệt bộ nhớ. Mỗi trạng thái chiếm khoảng 1 KB RAM. Kích thước State Table mặc định trong pfSense được tính toán bằng cách chiếm khoảng 10% RAM có sẵn trong firewall theo mặc định. Trên tường lửa có RAM 1GB, kích thước bảng trạng thái mặc định có thể chứa khoảng 100.000 mục. Do đó, với kích thước state table là 1.000.000, firewall có thể xử lý khoảng 500.000 phiên người dùng chủ động đi qua firewall trước khi bất kỳ kết nối bổ sung nào bị ngắt. Giới hạn này có thể được tăng lên khi cần thiết miễn là nó không vượt quá dung lượng RAM khả dụng trong tường lửa.
Để tăng kích thước State Table:
- Từ System > Advanced click tab Firewall & NAT
- Nhập số mong muốn cho Firewall Maximum States hoặc để trống hộp cho giá trị được tính toán mặc định.
- Click Save để lưu
Sử dụng Historical state table được theo dõi bởi tường lửa. Để xem biểu đồ:
- Từ Status > Monitoring
- Click icon Setting để mở rộng các tùy chọn đồ thị
- Set Category cho Left Axis thành system
- Set Graph cho Left Axis thành State
- Click Update Graphs
1.3 Block và Reject
Có hai cách để không cho phép lưu lượng truy cập bằng các rule firewall trên pfSense: Block và reject.
Một rule được đặt để Block sẽ âm thầm giảm lưu lượng truy cập. Nếu block thì client sẽ không nhận được bất kỳ phản hồi nào sau đó sẽ đợi cho đến đến khi kết nối của nó hết thời gian chờ. Đây sẽ là rule deny mặc định trên pfSense.
Rule được đặt Reject sẽ phản hồi lại client đối với lưu lượng TCP và UDP bị từ chối, cho người gửi biết rằng kết nối đã bị từ chối. Reject lưu lượng truy cập TCP nhận được một RST TCP (reset) để phản hồi lại, và Reject lưu lượng truy cập UDP nhận được một thông báo ICMP không thể truy cập để phản hồi. Mặc dù reject là một lựa chọn hợp lệ cho bất kỳ rule firewall nào, các giao thức IP ngoài TCP và UDP sẽ không có khả năng bị từ chối; Các rule này sẽ âm thầm loại bỏ các giao thức IP khác vì không có tiêu chuẩn nào để từ chối các giao thức khác.
2 Filter Ingress
Filter Ingress đề cập đến khái niệm về lưu lượng truy cập firewall xâm nhập vào mạng từ một nguồn bên ngoài như Internet. Trong triển khai với multi-WAN, firewall có nhiều điểm xâm nhập. Chính sách ingress mặc định trên pfSense sẽ chặn tất cả lưu lượng truy cập vì không có quy tắc cho phép trên WAN trong bộ quy tắc mặc định. Các câu trả lời lưu lượng truy cập bắt đầu từ bên trong mạng cục bộ được tự động cho phép quay trở lại thông qua tường lửa của bảng trạng thái.
3 Filter Egress
Filter Egress nói về lưu lượng truy cập firewall được khởi tạo bên trong mạng local, dành cho mạng từ xa như Internet. PfSense đi kèm với quy tắc mạng LAN cho phép mọi thứ từ mạng LAN ra Internet. Tuy nhiên, đây không phải là cách tốt nhất để hoạt động. Trên thực tế nó đã trở thành mặc định trong hầu hết các giải pháp firewall bởi vì nó là những gì người dùng muốn. Một sai lầm phổ biến là “bất kỳ thứ gì trên mạng local đều là đáng tin cậy”.
3.1 Tại sao phải sử dụng Filter Egress
Hầu hết các công ty nhỏ và mạng gia đình không sử dụng tính năng Filter Egress. Vì nó có thể làm tăng gánh nặng quản trị vì mỗi ứng dụng hoặc dịch vụ mới có thể yêu cầu mở thêm port hoặc protocol trong firewall. Trong một số môi trường rất khó để các quản trị viên biết những gì đang xảy ra trên mạng, và họ do dự để phá vỡ mọi thứ.
3.2 Các phương pháp để triển khai Filter Egress
Trên một mạng trước đây không sử dụng tính năng Filter Egress, rất khó biết lưu lượng truy cập nào là hoàn toàn cần thiết. Phần này mô tả một số cách tiếp cận để xác định lưu lượng truy cập và thực hiện Filter Egress.
Cho phép những gì đã biết, chặn phần còn lại và khắc phục hậu quả
Một cách tiếp cận là add thêm các rule firewall để cho lưu lượng truy cập cần thiết đã biết được cho phép. Bắt đầu bằng việc lập danh sách những thứ được biết là cần thiết, chẳng hạn như trong bảng Egress Traffic Required.
Description |
Source |
Destination |
Destination port |
HTTP và HTTPS từ tất cả máy chủ |
LAN Network |
Any |
TCP 80 và 443 |
SMTP từ mail server |
Mail Server |
Any |
TCP 25 |
Truy vấn DNS từ các máy chủ DNS nội bộ |
DNS Servers |
Any |
TCP và UDP 53 |
Sau khi lập danh sách, hãy định cấu hình các rule của firewall để chỉ vượt qua lưu lượng truy cập đó và để mọi thứ khác trở thành mặc định là deny rule.
Log Traffic và Analyze Logs
Một giải pháp thay thế khác là enable logging trên tất cả các rule vượt qua và gửi logs đến syslog server. Các bản ghi log có thể được phân tích bởi syslog server để xem những gì lưu lượng truy cập đi ra ngoài mạng. PfSense sử dụng tuỳ chỉnh log format, vì vậy các bản ghi log thường cần được phân tích cú pháp bởi một tập lệnh tùy chỉnh. Phân tích nhật ký log sẽ giúp xây dựng bộ quy tắc bắt buộc với ít thất thoát hơn vì nó sẽ mang lại ý tưởng tốt hơn về lưu lượng truy cập cần thiết trên mạng local.