Làm cho iptables dễ bảo trì hơn


13

Mạng của tôi hoàn toàn bị khóa ngoại trừ một vài trang web được đưa vào danh sách trắng. Tất cả điều này được thực hiện thông qua iptables, trông giống như thế này:

# Allow traffic to google.com
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
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...

Rõ ràng những địa chỉ đó là giả thuyết, nhưng bạn có ý tưởng. Tường lửa của tôi đang trở nên to lớn. Sẽ dễ dàng hơn nhiều để duy trì nếu tôi có thể làm điều này:

# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT

Tôi tin rằng điều này là có thể, vì man iptablesnói:

Địa chỉ có thể là tên mạng, tên máy chủ (xin lưu ý rằng việc chỉ định bất kỳ tên nào được giải quyết bằng truy vấn từ xa như DNS là một ý tưởng thực sự tồi tệ), địa chỉ IP mạng (có / mặt nạ) hoặc địa chỉ IP đơn giản.

Nhưng điều tôi quan tâm là phần "chỉ định bất kỳ tên nào sẽ được giải quyết bằng ... DNS là một ý tưởng thực sự tồi tệ". Tại sao đây là một ý tưởng tồi? Nó chỉ làm chậm mọi thứ?

Nếu tôi thực sự không nên sử dụng tên máy chủ trong quy tắc iptables, vậy tôi nên làm gì để đơn giản hóa tường lửa của mình?


Bạn sẽ nhận được câu trả lời tốt hơn về security.stackexchange.com
Jim B

Bạn có thể đúng khi câu hỏi này thuộc về trang web đó, nhưng nếu bạn gặp vấn đề với câu trả lời được chấp nhận, vui lòng giải thích lý do.
David Kennedy

Nếu bạn muốn biết về việc khóa mạng của mình và cách thực hiện, hãy hỏi về bảo mật, nếu bạn muốn sử dụng iptables (trái ngược với việc sử dụng IPtables) thì đây là nơi.
Jim B

Câu trả lời:


27
  • Tên DNS được giải quyết khi các quy tắc được thêm vào, không, khi các gói được kiểm tra. Điều này vi phạm những kỳ vọng mà hầu hết mọi người có.
    • Quy tắc không được cập nhật để phản ánh kết quả DNS đã thay đổi. Nó được giải quyết khi thêm vào và đó là nó. Bạn sẽ cần phải tải lại định kỳ các quy tắc hoặc một số trang web có thể bị hỏng.
  • Có một chút vấn đề bảo mật ở chỗ bạn về cơ bản ủy quyền kiểm soát các quy tắc tường lửa của bạn cho một thực thể bên ngoài.
    • Điều gì xảy ra nếu máy chủ DNS gốc của bạn bị xâm phạm và trả về dữ liệu sai.

Nếu mục đích của bạn là chặn truy cập HTTP, thì bạn thường sẽ tốt hơn nhiều khi thiết lập một phần mềm được thiết kế để lọc ở cấp độ đó (ví dụ: mực + mực).


1) Tôi thấy điều này có thể là một vấn đề - google.com có ​​thể giải quyết đến 1.2.3.4 hôm nay nhưng ngày mai địa chỉ đó không hợp lệ. Đơn giản chỉ cần khởi động lại tường lửa sẽ quan tâm đến điều này? 2) Đây có còn là vấn đề bảo mật hay không nếu máy chủ DNS nổi tiếng - chẳng hạn như DNS của Google hoặc OpenDNS?
David Kennedy

Tôi đã đánh dấu đây là câu trả lời vì nó giải thích tại sao tôi không nên sử dụng tên máy chủ trong các quy tắc iptables và cung cấp cho tôi một quá trình hành động để đơn giản hóa tường lửa của mình.
David Kennedy

Tôi muốn thêm hỗ trợ của tôi cho Mực. Tôi đã triển khai Squid cho văn phòng của mình và sau khi thiết lập nó rất dễ duy trì cho các máy chủ trong danh sách trắng (mặc dù tôi sử dụng nó để đưa vào danh sách đen). Có vẻ như bạn có một công việc hoành tráng trên tay; Tôi thậm chí sẽ không biết bắt đầu danh sách trắng của Google ở ​​đâu. www.google.com chỉ giải quyết được 5 IP, nghĩa là không có gì cho ssl.gstatic.com và tất cả các máy chủ khác liên quan đến xác thực, G +, v.v. có thể phân giải thành nhiều IP mỗi IP.
s.co.tt

Tượng đài là một cách tốt để đặt nó. Nhưng tôi chỉ sử dụng Google làm ví dụ. Một phác thảo cơ bản về tường lửa của tôi diễn ra như sau: nếu đích của gói được đưa vào danh sách trắng, hãy chấp nhận nó. Nếu không thì gửi nó qua một máy chủ proxy.
David Kennedy

Ngoài ra còn có vấn đề của các hệ thống sử dụng DNS để cân bằng tải. Bạn có thể không nhận được kết quả tương tự nếu bạn tìm kiếm một tên miền như vậy hai lần liên tiếp, do đó, một lần tra cứu thậm chí sẽ không cung cấp cho bạn một danh sách đầy đủ các địa chỉ IP mà tên miền có thể giải quyết.
cdhowie

9

Nếu bạn sử dụng tên máy chủ trong tường lửa, tường lửa của bạn hiện phụ thuộc vào DNS. Điều này mở ra tường lửa cho một số vấn đề:

  • Tra cứu DNS dưới khối lượng lớn có thể gây ra độ trễ.
  • Thay đổi DNS không lan truyền ngay lập tức. Vì vậy, tường lửa của bạn có thể được sử dụng IP lưu trữ.
  • DNS có thể bị giả mạo, bị tấn công, bị hack.
  • DNS có thể thất bại - có nghĩa là tường lửa của bạn thất bại.
  • Quy tắc tường lửa của bạn hiện được kiểm soát bởi bên thứ 3.

Nếu bạn sử dụng tên máy chủ và bạn không kiểm soát DNS, thì người khác sẽ kiểm soát hiệu quả các quy tắc IPtables của bạn. Những sai lầm, lỗi hoặc vấn đề bảo mật cuối cùng trở thành vấn đề đối với bạn.

Lần duy nhất tôi thấy tên máy chủ được sử dụng tốt là cho các hoạt động nội bộ. Tôi đã làm việc trong một văn phòng nơi IP và tên máy chủ được gán qua DHCP. Tường lửa sử dụng tên máy chủ để đặt rào cản giữa các nhóm khác nhau. Vì đây là tất cả nội bộ được kiểm soát, nó hoạt động tốt.


2
Đây là một câu trả lời hay nhưng nó thiếu phần giúp tôi đơn giản hóa tường lửa.
David Kennedy

3

Bạn có thể sử dụng một trình bao bọc xung quanh iptables như shorewall để làm cho quy tắc của bạn dễ dàng hơn để xác định.


Đây là một ý tưởng hay nhưng bạn đã không cho tôi biết lý do tại sao tôi không nên sử dụng tên máy chủ trong quy tắc iptables.
David Kennedy

Tôi không biết nhiều về Shorewall, nhưng tôi có ấn tượng rằng davidkennedy85 vẫn sẽ cần duy trì danh sách mọi địa chỉ IP của dịch vụ mà anh ta muốn cho phép trong các cấu hình Shorewall. Nó có thể giúp việc quản lý bộ lọc mạng [& etc] dễ dàng hơn một chút, nhưng sẽ không giải quyết được vấn đề cốt lõi của anh ta, đó là một danh sách lớn các IP.
s.co.tt

1

Như những người khác đã nói, bạn không nên sử dụng tên có thể phân giải DNS trong quy tắc iptables. Chúng không chính xác, được kiểm soát bởi bên thứ ba và nói chung là một điều xấu (tm). Tôi cũng nói thêm rằng DNS của bạn có thể bị lỗi hoặc có thể không truy cập được tại thời điểm dịch vụ iptables bắt đầu. Trong trường hợp đó, quy tắc sẽ không được thêm vào và một loại vấn đề hoàn toàn mới có thể xảy ra (như mất quyền truy cập ssh sau khi khởi động lại).

Những gì bạn có thể làm là:

  1. Sử dụng chuỗi tùy chỉnh để phân tách hợp lý các quy tắc
  2. Sử dụng ipsets để có các địa chỉ được nhóm và tách biệt khỏi các quy tắc
  3. Thêm ý kiến ​​cho các quy tắc

Ngoài ra, không ai nói bất cứ điều gì xấu về tên máy chủ không được giải quyết bằng DNS (nghĩa là được chỉ định trong hosts. Bạn có thể sử dụng chúng nếu bạn thực sự cần.


1

Cá nhân tôi gán tên máy chủ cho một ip theo cách thủ công trong / etc / hosts và sau đó sử dụng nó trong iptables.

Cách này bạn

  1. Không giảm các quy tắc Tường lửa của bạn cho một thực thể bên ngoài
  2. Dễ dàng bảo trì iptables
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.