IPTables 또는 Firewalld를 사용하지 않고 CentOS에서 아웃바운드 트래픽을 차단하는 방법은 무엇입니까?

IPTables 또는 Firewalld를 사용하지 않고 CentOS에서 아웃바운드 트래픽을 차단하는 방법은 무엇입니까?

카오스 엔지니어링과 같은 것을 구현하려고 하므로 기능을 수동으로 구현합니다. 기능 중 하나는 IPTables 또는 방화벽을 사용하지 않고 아웃바운드 DNS 트래픽을 차단하는 것입니다.

여기에는 아이디어가 전혀 없습니다. 내 요구 사항은 다음과 같습니다.

  • IPTable 또는 방화벽 없음
  • 프로토콜 유형(TCP/UDP)을 언급할 수 있어야 합니다.
  • 및 포트 번호

어떤 도움이라도 대단히 감사하겠습니다.

감사해요.

답변1

"IPTables나 방화벽을 사용하지 않고" 이를 수행하는 세 가지 방법이 있습니다. 가능하다면 IPv6도 다룰 것입니다.

  • 교통 통제:tc: CentOS의 모든 버전, 심지어 EOL 버전일 수도 있습니다.

    아웃바운드 인터페이스 이름(및 미리 라우팅을 수행하는 방법)을 알아야 합니다. 나가는 트래픽에 사용될 인터페이스의 이름이 이라고 가정합니다 eth0. 이 tc명령을 사용하여 추가 할 수 있습니다.필터인터페이스에서. 필터는 분류된 규칙에만 추가할 수 있으므로 이 목적을 위해 "더미" 분류된 qdisc가 추가됩니다. 여기서는 자체 속성이 실제로 사용되지 않습니다.프리오.

    tc qdisc add dev eth0 root handle 1: prio
    tc filter add dev eth0 parent 1: pref 1 protocol ip basic match '
        (cmp (u8 at 9 layer network eq 6) or cmp (u8 at 9 layer network eq 17)) and
            cmp(u16 at 2 layer transport eq 53)' action drop
    '
    tc filter add dev eth0 parent 1: pref 2 protocol ipv6 basic match '
        (cmp (u8 at 6 layer network eq 6) or cmp (u8 at 6 layer network eq 17)) and
            cmp(u16 at 2 layer transport eq 53)' action drop
    '
    

    노트:

    • u8 9 레이어 네트워크IPv4의 경우 프로토콜 필드입니다.IPv4 헤더: 그 값을 6과 비교TCP 프로토콜또는 17UDP 프로토콜.
    • u8 6 레이어 네트워크IPv6의 경우 거의 동일하지만 동일하지 않은 Next 헤더 필드IPv6 고정 헤더. 모든 경우에 적용되는 것은 아닙니다.확장 헤더고정 헤더와 페이로드 헤더 사이에 있는 경우 위에 사용된 IPv6 고정 헤더의 Next 헤더는 페이로드 프로토콜과 일치하지 않습니다(6은TCP 프로토콜또는 17UDP 프로토콜). 연결된 확장 헤더가 여러 개 있을 수 있으므로,TC일부 모듈에서 기본 지원을 받지 않는 한 실제로는 적합하지 않습니다.
    • u16 레이어 2 전송위의 포트는 대상 포트입니다.둘 다 규약.

    이는 기본 응용 프로그램에서는 포착되지 않습니다.

  • nftables: nft. CentOS 7 또는 8

    CentOS 7의 3.10 커널에도 백포트 버전이 있습니다.nftables. 다음과 같은 값을 추가하면 됩니다.iptables그리고nftables. 하나인트라넷패밀리 테이블은 IPv4와 IPv6를 모두 처리합니다.

    nft add table inet t
    nft add chain inet t output '{ type filter hook output priority 0; policy accept; }'
    nft add rule inet t output udp dport 53 drop
    nft add rule inet t output tcp dport 53 drop
    

    이러한 규칙으로 인해 기본 애플리케이션이 오류를 포착할지는 확실하지 않습니다.

    예외가 추가되지 않는 한 로컬 시스템에서 자체 시스템으로의 로컬 연결도 영향을 받습니다.

  • 정책 라우팅:ip rule. CentOS 8은 이것 때문에커널 필요 >= 4.17

    최신 커널은 포트를 사용하여 라우팅 규칙을 일치시킬 수도 있습니다. 따라서 라우팅하는 대신 UDP 포트 53 및 TCP 포트 53에 무엇이든 삭제하는 규칙을 만드십시오.

    ip rule add ipproto udp dport 53 blackhole
    ip rule add ipproto tcp dport 53 blackhole
    ip -6 rule add ipproto udp dport 53 blackhole
    ip -6 rule add ipproto udp dport 53 blackhole
    

    이는 EINVAL을 사용하는 기본 애플리케이션에 의해 포착됩니다(...에 설명된 대로).ip route(8)). 네트워크 "중단" 유형을 변경하면 오류 및 동작이 변경될 수 있습니다(예:블랙홀도착하다금지하다).

    시스템에서 자체로의 로컬 연결(로컬 경로 평가가 우선순위 0으로 이전에 발생함)에는 영향을 주지 않습니다.

관련 정보