Chặn các kết nối gửi đi trên RHEL7 / CentOS7 bằng tường lửa?


12

RHEL7 / CentOS7 có firewallddịch vụ tường lửa mới , thay thế iptables service(cả hai đều sử dụng iptablescông cụ để tương tác với Netfilter của kernel bên dưới).

firewalldcó thể dễ dàng điều chỉnh để chặn lưu lượng truy cập đến, nhưng như Thomas Woerner đã lưu ý cách đây 1,5 năm, "hạn chế lưu lượng đi là không thể với tường lửa theo cách đơn giản tại thời điểm này". Và theo như tôi có thể thấy tình hình đã không thay đổi kể từ đó. Hay là có nó? Có cách nào để chặn lưu lượng đi firewalldkhông? Nếu không có bất kỳ cách "tiêu chuẩn" nào khác (trên bản phân phối RHEL7) về việc chặn lưu lượng đi ngoại trừ việc thêm quy tắc thủ công thông qua iptablescông cụ?

Câu trả lời:


11

Tôi không tìm thấy bất kỳ tùy chọn nào trong GUI đẹp đó, nhưng có thể thông qua giao diện trực tiếp

Để chỉ bật cổng 80:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP

Điều này sẽ thêm nó vào các quy tắc vĩnh viễn, không phải các quy tắc thời gian chạy.
Bạn sẽ cần tải lại các quy tắc vĩnh viễn để chúng trở thành quy tắc thời gian chạy.

firewall-cmd --reload

để hiển thị các quy tắc vĩnh viễn

firewall-cmd --permanent --direct --get-all-rules

để hiển thị các quy tắc thời gian chạy

firewall-cmd --direct --get-all-rules

Làm thế nào để một người đạt được điều này bằng cách sử dụng ngôn ngữ quy tắc phong phú thực tế?
Casey

@Casey Theo hiểu biết của tôi, các quy tắc phong phú được sử dụng nghiêm ngặt cho chuỗi INPUT.
Gạo

Tôi đoán các quy tắc trên chỉ hoạt động cho ipv4(iptables). Có thể mong muốn có các quy tắc tương tự cho ipv6(đối với ip6tables) hoặc eb(đối với ebtables).
mwfearnley

Ngoài ra, điều này đã giết kết nối SSH của tôi với máy chủ! Xem câu trả lời của user253068 để biết cách giữ lại các kết nối đã thiết lập.
mwfearnley

5

Sau khi tự đặt câu hỏi tương tự và với một số sửa đổi, tôi đã thu thập một số quy tắc hay để hạn chế lưu lượng đi đối với các truy vấn HTTP / HTTPS và DNS:

Cho phép kết nối được thiết lập:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Cho phép HTTP:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT

Cho phép HTTPS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT

Cho phép truy vấn DNS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT

Từ chối mọi thứ khác:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

Trước tiên, có thể nên thử nghiệm bằng cách bỏ qua đối số '--permanent'.

Tôi không có nghĩa là một chuyên gia, nhưng điều này dường như làm việc tốt với tôi :)


Tại một số điểm bạn có thể thấy hữu ích để loại bỏ các quy tắc. Loại bỏ các quy tắc trực tiếp duy nhất có vẻ khó khăn, nhưng đối với búa tạ, firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTsẽ loại bỏ hàng loạt.
mwfearnley

1

Liên quan đến GUI; Tôi nghĩ rằng bạn tìm thấy điều này trong " Cấu hình trực tiếp ". Để truy cập nó, bạn phải chọn nó trong " Xem ". Tôi có thể sai.

Lưu ý bên

Để xóa các quy tắc; bạn phải thoát ra và sau đó nhập lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.