ipv4 및 ipv6 iptables에 대한 병렬 규칙 관리? 별도의 방화벽 (Linux iptables / ip6ables)

우리는 최근에 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 기반 솔루션에 특히 관심이 있습니다.



답변

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


답변

또한 최근 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 % 신뢰할 수있는 방화벽이 중요한 프로덕션 시스템에서 사용할 때주의해야 할 것입니다. 그럼에도 불구하고 볼만한 가치가 있습니다.


답변

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

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

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


답변

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

이 질문을 보면서 우분투 사람들의 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 모두).

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


답변

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