Quy tắc trình lắng nghe của firewalld so với chính sách chuyển tiếp: mỗi thứ làm gì
Trong firewalld, cho phép vận chuyển bên ngoài và cho phép truy cập tài nguyên riêng là hai chính sách riêng biệt. Mở trình lắng nghe, rồi cấp quyền cho đường đi.
Một VPN kết nối được nhưng không đến được đâu thường được mô tả là vấn đề tường lửa, và cách khắc phục mà người ta thường chọn là đưa giao diện đường hầm vào một vùng tin cậy. Cách đó có tác dụng theo nghĩa lưu lượng bắt đầu chảy, nhưng cũng cho phép nhiều thứ hơn hẳn dịch vụ dự định. Hai chính sách liên quan thì khác nhau: một cái cho phép vận chuyển bên ngoài đến một ổ cắm đang lắng nghe, cái kia cấp quyền cho lưu lượng đã giải mã đến một tài nguyên cụ thể. Chính việc coi hai thứ đó là một thiết lập đã biến một sự cho phép hẹp thành rộng. Cả hai được quyết định ở những nơi khác nhau, nên lỗi này rất dễ mắc.
Hai chính sách, một đường hầm
Chính sách bên ngoài trả lời một câu hỏi đơn giản: một gói tin từ nguồn này có được đến UDP 1194 trên máy chủ này không? Chính sách bên trong trả lời câu khác: máy khách đã xác thực phía sau đường hầm đó có được đến đích này, bằng giao thức này, trên cổng này không? Cái đầu nói về ổ cắm, cái sau nói về đường đi, và firewalld mô hình hóa chúng bằng các đối tượng khác nhau vì chúng được quyết định ở những điểm khác nhau. Một cái là thuộc tính của một ổ cắm trên máy chủ này, cái kia là thuộc tính của một đường đi qua nó.
Hệ quả thực tế là một đường hầm đang hoạt động không nói gì về chính sách thứ hai, và một chính sách thứ hai đúng không làm cho chính sách thứ nhất trở nên thừa.
Cho phép trình lắng nghe bên ngoài thật sự
Hãy bắt đầu bằng việc xem xét những gì đã được gán thay vì giả định. Đọc các vùng đang hoạt động, liệt kê vùng thực sự mang lưu lượng vào, và kiểm tra định nghĩa dịch vụ đã cài đặt, vì tên dịch vụ mô tả một tập cổng và không nói gì về việc trình lắng nghe của máy chủ này có khớp với nó hay không.
firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-all
firewall-cmd --info-service=openvpnNếu trình lắng nghe thực sự là UDP 1194 trong vùng đó, hãy mở đúng cổng và giao thức vận chuyển đó, rồi làm cho đúng quy tắc cụ thể ấy trở nên lâu bền sau khi đã kiểm thử. Cũng hãy kiểm tra các phép gán dựa trên nguồn, vì một vùng gắn với dải nguồn có thể bắt lưu lượng trước khi vùng giao diện kịp thấy nó.
Cấp quyền cho đích đã giải mã một cách riêng biệt
Kết nối đến một dịch vụ chạy trên chính máy chủ VPN là chính sách đầu vào cục bộ. Kết nối được chuyển tiếp đến một máy chủ khác trong LAN cần chính sách chuyển tiếp, chuyển tiếp được bật trong nhân và một tuyến phản hồi — ba yêu cầu riêng biệt mà người ta thường gộp thành một. Các đối tượng chính sách hiện đại của firewalld mô tả lưu lượng có hướng giữa vùng vào và vùng ra, và đó là nơi đúng để diễn đạt nguồn VPN nào được đến dịch vụ riêng nào.
Hãy định nghĩa rõ các nguồn được phép và để mọi thứ còn lại rơi vào từ chối. Sự cho phép cho dịch vụ bên ngoài không phải chính sách đó, dù bố cục vùng trông thế nào.
Vì sao tin vào giao diện là lối tắt sai
Đưa giao diện đường hầm vào một vùng mà đích của nó chấp nhận mọi thứ sẽ cho toàn bộ lưu lượng đã giải mã đi đến mọi dịch vụ mà máy chủ phơi bày, kể cả những dịch vụ bạn chưa xem xét. Việc nhắm lại vùng tin cậy thành hạn chế trên một máy đang chạy còn tệ hơn, vì các giao diện và dải nguồn khác có thể đã phụ thuộc vào ý nghĩa của nó và sẽ thay đổi hành vi khi bạn sửa. Nếu cần một chính sách hẹp, hãy tạo một cái mới; đừng tái sử dụng một vùng dùng chung.
Cũng hãy giữ cho phép gán vùng của đường hầm ổn định qua bất kỳ thành phần nào sở hữu cấu hình đó. Mất phép gán khi khởi động lại tạo ra sự cố trông như vấn đề quy tắc tường lửa nhưng thực chất là vấn đề bền vững.
Hãy xác minh ba điều, trong đó có một lần từ chối
Kiểm thử kết nối bên ngoài từ bên ngoài, kiểm thử một dịch vụ bên trong được cấp quyền từ một máy khách đã kết nối, và kiểm thử một dịch vụ phải tiếp tục không thể truy cập. Lần kiểm thử thứ ba chính là thứ phân biệt một chính sách với một tác dụng phụ, và đó là thứ người ta bỏ qua vì mọi thứ có vẻ hoạt động. Nếu dịch vụ bị từ chối trả lời, bạn đã cho phép một vùng chứ không phải một dịch vụ.
Ghi lại vùng, cổng, giao thức vận chuyển và đối tượng chính sách vào ghi chú của máy chủ. Nếu không, thay đổi tiếp theo trên máy chủ này sẽ bắt đầu từ đúng giả định đó.