Làm cách nào tôi có thể viết bài kiểm tra tự động cho iptables?


13

Tôi đang cấu hình một bộ định tuyến Linux với iptables. Tôi muốn viết các bài kiểm tra chấp nhận cho cấu hình khẳng định những thứ như:

  • lưu lượng truy cập từ một số người trên internet không được chuyển tiếp, và
  • TCP đến cổng 80 trên máy chủ web trong DMZ từ các máy chủ trên mạng LAN công ty được chuyển tiếp.

Câu hỏi thường gặp cổ đại ám chỉ đến một iptables -Ctùy chọn cho phép người ta hỏi một câu như "được cung cấp một gói từ X, cho Y, trên cổng Z, liệu nó có được chấp nhận hoặc bỏ đi không?" Mặc dù FAQ cho thấy nó hoạt động như thế này, iptablesnhưng (có thể không ipchainssử dụng trong các ví dụ), -Ctùy chọn dường như không mô phỏng gói thử nghiệm chạy qua tất cả các quy tắc, nhưng kiểm tra sự tồn tại của quy tắc khớp chính xác. Điều này có ít giá trị như một bài kiểm tra. Tôi muốn khẳng định rằng các quy tắc có hiệu quả mong muốn, không chỉ là chúng tồn tại.

Tôi đã xem xét việc tạo thêm máy ảo thử nghiệm và mạng ảo, sau đó thử nghiệm các công cụ như nmaphiệu ứng. Tuy nhiên, tôi đang tránh giải pháp này do sự phức tạp của việc tạo ra tất cả các máy ảo bổ sung đó, đây thực sự là một cách khá nặng nề để tạo ra một số lưu lượng thử nghiệm. Thật tuyệt khi có một phương pháp thử nghiệm tự động cũng có thể hoạt động trên một máy chủ thực sự trong sản xuất.

Làm thế nào khác tôi có thể giải quyết vấn đề này? Có một số cơ chế tôi có thể sử dụng để tạo hoặc mô phỏng lưu lượng tùy ý, sau đó biết liệu nó có (hoặc sẽ) bị loại bỏ hoặc chấp nhận iptableskhông?


Điều này cũng có thể thú vị: security.stackexchange.com/questions/31957/ cấp
dawud

1
@dawud Tôi không nghĩ một trong hai thứ đó là bản sao. Tôi biết cách chạy quét cổng: đó không phải là một thử nghiệm tốt vì tôi bị giới hạn kiểm tra đến và từ các điểm đến và nguồn mà tôi có thể kiểm soát. Mối quan tâm của tôi cũng là không tự khóa máy chủ. Tôi muốn tự động kiểm tra rằng các quy tắc tường lửa thực sự có các hiệu ứng mà tôi đã thiết kế chúng để có.
Phil Frost

Câu trả lời:


2

Nếu bạn chuẩn bị thực hiện một chút mã hóa, bạn có thể thử điều này:

  • Tạo một không gian tên mạng mới bằng cách sử dụng CLONE_NEWNETcờ cho clonecuộc gọi hệ thống hoặc bằng cách sử dụng ip netns addip netns execcác lệnh.
  • Trong không gian tên này, một bộ giao diện mạng ảo sử dụng tuntrình điều khiển hoặc ip link add.
  • Tải cấu hình bằng iptables-restore
  • Cung cấp một số gói cho các quy tắc thông qua tunhoặc veththiết bị
  • Quan sát rằng bạn nhận được các gói chính xác từ tunhoặc veththiết bị

Cách tiếp cận này có thể sẽ hoạt động tốt nhất để kiểm tra các quy tắc cho các gói được chuyển tiếp. Các kết nối đến / từ máy sử dụng iptables đòi hỏi nhiều nỗ lực hơn một chút, nhưng cũng khả thi để kiểm tra theo cách này.

Dưới đây là một ví dụ về một chuỗi các lệnh, có thể được sử dụng:

ip netns add test-iptables
ip netns add test-iptables-some-guy-on-the-internet
ip netns add test-iptables-lan-host

ip netns exec test-iptables ip link add eth0 type veth peer name eth0-peer
ip netns exec test-iptables ip link set eth0-peer netns test-iptables-some-guy-on-the-internet
ip netns exec test-iptables ip link add eth1 type veth peer name eth1-peer
ip netns exec test-iptables ip link set eth1-peer netns test-iptables-lan-host

ip netns exec test-iptables ifconfig eth0 192.0.2.2 netmask 255.255.255.0
ip netns exec test-iptables ifconfig eth1 203.0.113.1 netmask 255.255.255.0

ip netns exec test-iptables-some-guy-on-the-internet ifconfig eth0-peer 192.0.2.1 netmask 255.255.255.0
ip netns exec test-iptables-some-guy-on-the-internet route add default gateway 192.0.2.2

ip netns exec test-iptables-lan-host ifconfig eth1-peer 203.0.113.2 netmask 255.255.255.0
ip netns exec test-iptables-lan-host route add default gateway 203.0.113.1

ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2
ip netns exec test-iptables iptables-restore < /tmp/iptables-test
ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2

ip netns del test-iptables
ip netns del test-iptables-some-guy-on-the-internet
ip netns del test-iptables-lan-host

Điều này sẽ tạo ra ba không gian tên mạng để thử nghiệm và tải một bộ quy tắc iptables vào một trong số chúng. Hai người kia đóng vai trò của một số người trên internet và một máy chủ lưu trữ trên mạng LAN.

Trong ví dụ trên, telnetlệnh đầu tiên nhận kết nối bị từ chối từ test-iptables-lan-hostkhông gian tên, telnetlệnh thứ hai sẽ hết thời gian nếu bộ quy tắc làm rơi gói tin.

Điều này không chạm vào không gian tên mạng ban đầu, đây là điều mà tất cả sản phẩm của bạn sẽ diễn ra theo mặc định. Cách duy nhất để có được sự tách biệt nhiều hơn từ sản phẩm của bạn là chạy nó trên một máy chủ riêng biệt (vật lý hoặc ảo).


0

thế giới chuyên nghiệp làm điều đó với sự trợ giúp của phần cứng / phần mềm được cung cấp bởi 2 công ty.

www.ixiacom.com

www.spirent.com

Trong trường hợp đầu tiên, bạn có thể sử dụng một cái gì đó như khung gầm Ixia 400T + Ixload.

Trong trường hợp thứ hai, dòng Smartbits hoặc Testcenter với các ứng dụng tương ứng của chúng

Các thiết bị này có thể (trong số những thứ khác) mô phỏng rất nhiều khách hàng thực hiện các loại yêu cầu khác nhau trên máy chủ mục tiêu đã chọn của bạn. Họ đã sẵn sàng để kiểm tra bảo mật máy chủ của bạn, bao gồm một tập hợp các bài kiểm tra tấn công được xác định trước cộng với bạn luôn có thể xác định bộ của riêng mình. Họ cũng có nhiều khả năng khác như kiểm tra căng thẳng tải và tương tự.

Không phải là một lựa chọn giá rẻ.


thật đáng kinh ngạc khi thấy sự thiếu hiểu biết đơn giản có thể lặng lẽ hạ cấp các câu trả lời hợp lệ ...
Pat
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.