ipv4 및 ipv6 iptables에 대한 병렬 규칙 관리?


10

우리는 최근에 IPv6을 실험하기 시작했으며, 우리가 겪어야 할 첫 번째 문제 중 하나는 두 프로토콜 스택에 대해 완전히 별도의 방화벽 (Linux iptables / ip6ables) 규칙을 처리하는 것입니다. 우리의 방화벽 논리는 주로 여러 목적에 맞는 네트워크를 기반으로합니다 (예 : 10.0.0.0/24는 직원 워크 스테이션 네트워크, 10.1.0.0/24는 데이터베이스 네트워크, 10.2.0.0/24는 웹 서버 네트워크 등) ), IPv6 및 IPv4에 대한 논리는 대체로 동일한 모듈로 다른 네트워크 접두사입니다.

이런 상황을 관리하는 사람들은 무엇입니까? 이상적으로는 동일한 소스 파일에서 iptables 및 ip6table 규칙 세트를 모두 생성 할 수 있기를 원합니다. 나는 이미 bash를 사용하여 무언가를 던졌지 만 반드시 예쁘지는 않으며 더 나은 솔루션이 어딘가에 존재해야한다고 생각합니다.

나는 규칙 (또는 규칙 그룹)의 상대적 순서를 구현하기 위해 Puppet 자체 종속성 메커니즘을 잘 활용하는 Puppet 기반 솔루션에 특히 관심이 있습니다.

답변:


5

Firewall Builder에는 정확히 필요한 것이 있습니다. 하나의 규칙 세트를 작성하여 "결합 된 ipv4 + ipv6"으로 표시 한 후 동일한 세그먼트에 지정된 ipv4 및 ipv6 네트워크 (예 : "데이터베이스 네트워크"etC)를 동일한 규칙에 배치 할 수 있습니다. 그런 다음 프로그램은 ipv4와 ipv6에 대한 두 개의 개별 iptables 구성을 생성합니다. Cisco 라우터 액세스 목록을 예로 사용하지만이 사용 설명서의이 장에서는이를 설명합니다. iptables와 동일하게 작동합니다.

http://www.fwbuilder.org/4.0/docs/users_guide5/combined-ipv4-ipv6-rule-set.html


4

또한 최근 IPv4와 IPv6 모두에 대한 iptables-rules 작성에 직면했습니다. 일부 검색 후 Phil WhinerayIPv6 FireHOL 분기를 사용했습니다 .

FireHOL은 Linux 호스트 및 라우터에서 네트워크 인터페이스, 경로 수, 서비스 수, 서비스 변형 (정수 및 부수 포함) 사이의 복잡성으로 상태 저장 IPtables 패킷 필터링 방화벽을 생성하는 iptables 방화벽 생성기입니다. 식). (출처 : FireHOL 웹 사이트)

불행히도 공식 버전에는 IPv6에 대한 지원이 없습니다. 그러나 Phil Whineray는 비공식 지점에서 지원을 추가했습니다.

구성 방식에 대한 몇 가지 예 :

# allowing outgoing http and https requests for ipv4 and ipv6 (default setting when nothing is specified):
client "http https" accept

# allow incoming ssh only on ipv4
ipv4 server ssh accept

# allow incoming IMAP requests only for ipv6
ipv6 server imap accept

이 firehol 지점을 다음에서 확인할 수 있습니다.

git clone git://repo.or.cz/fireholvi.git

추가 문서는 공식 FireHOL 문서 또는 IPv6 에 대한 추가 읽어보기 에서 찾을 수 있습니다 .

개인적으로 100 % 신뢰할 수있는 방화벽이 중요한 프로덕션 시스템에서 사용할 때주의해야 할 것입니다. 그럼에도 불구하고 볼만한 가치가 있습니다.


3

원인의 지속적인 복음 전파를 위해 꼭두각시를 활용하여 리프팅을하는 것이 좋습니다. 현재 iptables 4 및 6 규칙을 처리하기위한 좋은 스크립트는 없지만 언어에 적응 한 후에 규칙을 작성하는 것은 그리 어려운 일이 아닙니다.

Mediawiki의 공개 git 저장소 는 환상적인 구성 패턴의 광산이며, 시작하기에 좋은 기반을 제공 하는 iptables 클래스 를 포함합니다 . 기본적으로 한 번에 두 스택에 규칙을 적용하고 IPv4 또는 IPv6 규칙을 기반으로 할 때 다른 규칙에 대한 플래그를 갖도록 편집 할 수 있습니다.

이 과정의 궁극적 인 보너스는 서비스의 방화벽 규칙을 서비스 정의에 작성하고 서비스를 배포하거나 제거 할 때 자동으로 배포 및 제거 할 수 있다는 것입니다.


내가 볼게 필자는 일반적으로 iptables 관리를위한 일반적인 Puppet 기반 솔루션에 깊은 인상을 받았습니다. 특히, 그들은 모두 내가 꼭 원하는 Puppet의 의존성 해결 메커니즘을 사용하는 대신 조각 파일의 파일 이름 또는 Puppet 규칙에서 제공되는 명시 적 인덱스를 통해 명시 적으로 순서를 구현하는 것처럼 보입니다. 여기에 링크 된 솔루션이 이러한 문제를 피한다면 나는 전부입니다.
larsks

@larsks 나는 좋은 일반 솔루션이 출시되지 않았다는 것에 동의하고 좌절했다. 그러나 아마도 내가 스스로 해낸 시간 일 것이다. Puppet은 before => Resource['declared_name']모든 정의에서 사용할 수 있으므로 조각으로 물건을 주문하지 않는 구현을 사용하여 주문할 수 있습니다. 구조에 Augueas를 잘 사용하면이 문제를 예방할 수 있습니다. 최상위 트리 의견과 원하는 순서대로 주문하십시오.
Jeff Ferland

이 문제를 해결하려는 나의 시도는 그리 멀지 않았습니다. 내가 지금 한 일은 (a) 하위 디렉토리에 조각을 설치 한 다음 (b) rcorder 를 사용 하여 종속성 순서에 넣는 것입니다. 작동하지만 조각 파일 관리에만 기반하기 때문에 혼합 ipv4 / ipv6 환경에 적합하지 않습니다. 나는 문제를 해결하기 위해 Augeas를 사용하는 것에 대해 자세히 보지 않았습니다. 프로토 타입 코드가 있다면 궁금 할 것입니다.
larsks

2

여기에 내 자신의 질문에 대답하지만이 정보가 일반적인 관심 사항이라고 생각했습니다.

이 질문을 보면서 우분투 사람들의 ufw (복잡한 FireWall)를 우연히 발견했습니다 . ufw 구성에서 IPV6을 활성화하면 ufw는 iptables 및 ip6tables 규칙을 병렬로 관리합니다. 이것은 다음과 같은 것을 할 수 있음을 의미합니다.

# ufw allow ssh/tcp

그리고 결국 :

# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere (v6)

iptables / ip6tables 규칙은 다음과 같습니다.

# iptables-save | grep 'dport 22'
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
# ip6tables-save | grep 'dport 22'
-A ufw6-user-input -p tcp -m tcp --dport 22 -j ACCEPT

Ufw는 또한 명명 된 포트 그룹을 만들 수있는 응용 프로그램 프로필을 지원합니다. 당신은 이것을 할 수 있습니다 :

# ufw allow 'WWW Full'

그리고 포트 80과 443을 모두 열어 두십시오 (IPv4와 IPv6 모두).

방금 살펴보기 시작했지만 꽤 잘 어울린 것 같습니다.


0

Shorewall 은 목록에서 여전히 누락 되었으므로 널리 채택되고 정기적으로 업데이트되는 기능이 풍부한 패킷 필터 구성 도구입니다. 그것은했다 IPv6 지원 이제 잠시 동안을.


1
내 이해는 "shorewall"은 ipv4이고 "shorewall6"은 ipv6이며, 두 프로토콜을 모두 다루려면 양극을 사용해야합니다. 공통 구성을 공유 할 수 있습니까?
larsks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.