Giảm một nửa quy tắc tường lửa - một quy tắc iptables cho tcp và udp


12

Tôi có một số quy tắc iptables trên tường lửa của mình giống như thế này:

iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT

Có một lối tắt để có hai quy tắc - một cho tcp và một cho udp - cho mọi địa chỉ? Ý tôi là tôi có thể làm một cái gì đó như thế này:

iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT

Câu trả lời:


22

Tạo một chuỗi mới sẽ chấp nhận bất kỳ gói TCP và UDP nào và nhảy đến chuỗi đó từ các quy tắc cho phép IP / cổng riêng lẻ:

iptables -N ACCEPT_TCP_UDP
iptables -A ACCEPT_TCP_UDP -p tcp -j ACCEPT
iptables -A ACCEPT_TCP_UDP -p udp -j ACCEPT

iptables -A zone_lan_forward -d 1.2.3.0/24 -j ACCEPT_TCP_UDP

Điều này thêm chi phí của một vài dòng bổ sung, nhưng giảm một nửa số quy tắc TCP / UDP.

Tôi sẽ không bỏ qua -pđối số, bởi vì bạn không chỉ mở tường lửa cho ICMP, mà còn bất kỳ giao thức nào khác. Từ trang người đàn ông iptables trên -p:

Giao thức được chỉ định có thể là một trong các tcp, udp, icmp hoặc tất cả hoặc nó có thể là một giá trị số, đại diện cho một trong các giao thức này hoặc một giao thức khác. Tên giao thức từ / etc / giao thức cũng được cho phép.

Bạn có thể không nghe trên bất kỳ giao thức nào ngoại trừ TCP, UDP và ICMP ngay bây giờ , nhưng ai biết được tương lai có thể nắm giữ điều gì. Sẽ là một thực tế tồi khi để tường lửa mở một cách không cần thiết.

Disclaimer: Các lệnh iptables nằm ngoài đỉnh đầu của tôi; Tôi không có quyền truy cập vào hộp để kiểm tra ATM của họ.


Đây là một giải pháp rất thanh lịch mà không để tường lửa mở một cách không cần thiết.
Big McLUNDHuge

4
Nhưng phương pháp tạo chuỗi mới này sẽ thất bại nếu quá trình lọc được thực hiện thông qua số cổng đích. Bất cứ ai có thể đề nghị làm thế nào để khắc phục từ vấn đề nêu trên?
Amor

@Amor Trong ví dụ này nếu bạn sử dụng -p alltrong tất cả các --dportquy tắc trên zone_lan_forwardchuỗi, điều đó có thể đạt được những gì bạn đang tìm kiếm. Tất nhiên tôi cho rằng không có cách nào khác để vào chuỗi đó bằng giao thức không phải TCP / UDP do ACCEPT_TCP_UDPchuỗi. Rõ ràng đây là một chiến lược rủi ro nếu nhiều người có quyền truy cập để sửa đổi các quy tắc và ai đó đi cùng và chỉnh sửa quy tắc của bạn mà không hiểu sự tinh tế này.
Samuel Harmer

Ôi Không nhận thấy thứ tự của chuỗi. Bạn sẽ cần phải chuyển đổi thứ tự của các chuỗi trong ví dụ này cho những gì tôi vừa nói để hoạt động đúng. Vì vậy, ACCEPT_TCP_UDPnhảy đến zone_lan_forwardmà sau đó nhảy đến ACCEPT.
Samuel Harmer

2

Nếu bạn không thực sự quan tâm đến lưu lượng ICMP (dù sao bạn cũng có thể chặn quy tắc toàn cầu), bạn có thể bỏ qua cờ -p và nó sẽ bao gồm tất cả các giao thức.


Tôi có nên quan tâm đến lưu lượng truy cập ICMP? Tôi chủ yếu quan tâm đến truy cập HTTP.
Big McLUNDHuge

Không hẳn vậy. Bạn có thể chặn ICMP (ping) nếu bạn muốn nhưng vì nó vẫn phục vụ lưu lượng HTTP dù sao cũng không có nhiều điểm.
Nathan C

@NathanC, tôi nghĩ rằng lời khuyên để mở TẤT CẢ các cổng khi OP đang hỏi cách giảm một nửa quy tắc của mình có thể dẫn đến rắc rối, ngay bây giờ hoặc trong tương lai.
Jed Daniels

@JedDaniels công tắc -p chỉ định các giao thức và không phải cổng. Câu trả lời dưới đây có một giải pháp thay thế nếu họ quan tâm đến việc khóa bất cứ thứ gì khác ngoài tcp & udp.
Nathan C

@NathanC Có, và loại bỏ -p có nghĩa là "mở tất cả các giao thức, không chỉ tcp hoặc udp", điều này là liều lĩnh nếu không nguy hiểm.
Jed Daniels
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.