iptables에 대한 자동 테스트를 작성하려면 어떻게해야합니까?


13

로 Linux 라우터를 구성하고 iptables있습니다. 다음과 같은 구성을위한 승인 테스트를 작성하고 싶습니다.

  • 인터넷에서 어떤 사람의 트래픽이 전달되지 않고
  • 회사 LAN의 호스트에서 DMZ의 웹 서버에있는 포트 80에 대한 TCP가 전달됩니다.

고대 FAQiptables -C"포트 Z에서 X에서 Y로 패킷을 주었을 때 받아 들여지겠습니까?"와 같은 질문을 할 수 있는 옵션을 암시합니다. FAQ가 이와 같이 작동한다고 제안 iptables하지만 ( ipchains예제에서 사용 하지는 않지만 ) -C옵션은 모든 규칙을 통해 실행되는 테스트 패킷을 시뮬레이션하지 않고 정확하게 일치하는 규칙이 있는지 검사합니다. 이것은 테스트로서 가치가 거의 없습니다. 나는 규칙이 존재하는 것이 아니라 원하는 효과가 있다고 주장하고 싶다.

더 많은 테스트 VM과 가상 네트워크를 만들고 nmap효과 와 같은 도구를 조사하는 것을 고려했습니다 . 그러나 모든 추가 가상 머신을 생성하는 복잡성으로 인해이 솔루션을 피하고 있습니다. 이는 테스트 트래픽을 생성하는 데 매우 무거운 방법입니다. 프로덕션 환경의 실제 서버에서도 작동 할 수있는 자동화 된 테스트 방법을 사용하는 것도 좋습니다.

이 문제를 어떻게 해결할 수 있습니까? 임의의 트래픽을 생성하거나 시뮬레이션하는 데 사용할 수있는 메커니즘이 있습니까? 그런 다음 트래픽이 삭제되었거나 허용되는지 알고 iptables있습니까?


이것도 흥미로울 것입니다 : security.stackexchange.com/questions/31957/…
dawud

1
@ dawud 나는 그중 하나가 중복이라고 생각하지 않습니다. 포트 스캔을 실행하는 방법을 알고 있습니다. 제어 할 수있는 대상 및 소스와의 테스트에만 국한되어 있기 때문에 좋은 테스트가 아닙니다. 내 관심사는 서버에서 자신을 잠그지 않는 것입니다. 방화벽 규칙이 실제로 내가 디자인 한 효과를 가지고 있는지 자동으로 테스트 하고 싶습니다 .
Phil Frost

답변:


2

약간의 코딩을 할 준비가 되었다면 다음과 같이 해보십시오.

  • 시스템 호출에 CLONE_NEWNET대한 플래그를 clone사용하거나 ip netns addip netns exec명령 을 사용하여 새 네트워크 네임 스페이스를 작성하십시오 .
  • 이 네임 스페이스에서 tun드라이버 또는를 사용하여 가상 네트워크 인터페이스 세트를 상자에 넣습니다 ip link add.
  • 다음을 사용하여 구성을로드하십시오. iptables-restore
  • tun또는 veth장치를 통해 많은 패킷을 규칙에 공급
  • tun또는 veth장치 에서 올바른 패킷을 가져 오는지 확인하십시오.

이 방법은 전달 된 패킷에 대한 규칙을 테스트하는 데 가장 효과적 일 것입니다. iptables가 사용되는 머신과의 연결에는 약간의 노력이 필요하지만이 방법으로도 테스트 할 수 있어야합니다.

다음은 사용할 수있는 명령 시퀀스의 예입니다.

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

이것은 테스트를위한 3 개의 네트워크 네임 스페이스를 생성하고 그 중 하나에 iptables 규칙 세트를로드합니다. 다른 두 사람은 인터넷상의 일부 사람과 LAN상의 호스트 역할을합니다.

위의 예제에서 첫 번째 telnet명령은 test-iptables-lan-host네임 스페이스 에서 연결을 거부 하고 두 번째 telnet명령은 규칙 세트가 패킷을 삭제하면 시간 종료됩니다.

이것은 초기 네트워크 네임 스페이스를 건드리지 않습니다. 이는 기본적으로 모든 프로덕션에서 발생하는 네임 스페이스입니다. 프로덕션에서 더 많은 분리를 얻는 유일한 방법은 별도의 호스트 (실제 또는 가상)에서 실행하는 것입니다.


0

전문 세계는 2 개 회사가 제공하는 하드웨어 / 소프트웨어의 도움으로 그렇게합니다.

www.ixiacom.com

www.spirent.com

첫 번째 경우 Ixia 400T 섀시 + Ixload와 같은 것을 사용할 수 있습니다.

두 번째 경우 Smartbit 또는 Testcenter 라인과 해당 애플리케이션

이러한 장치는 무엇보다도 선택한 대상 서버에서 다른 종류의 요청을 수행하는 많은 클라이언트를 에뮬레이션 할 수 있습니다. 사전 정의 된 일련의 공격 테스트를 포함하여 서버 보안을 테스트 할 준비가되어 있으며 언제든지 자신 만의 세트를 정의 할 수 있습니다. 또한 부하 응력 테스트 등과 같은 다른 많은 기능도 있습니다.

저렴한 옵션은 아닙니다.


무지가 어떻게 정답을 조용히 다운 그레이드 할 수 있는지를 보는 것은 놀라운
Pat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.