WAN 액세스 차단 - LAN 액세스 허용 - Linux 호스트

WAN 액세스 차단 - LAN 액세스 허용 - Linux 호스트

내가 원하는 것은 WAN에 대한 액세스를 차단하고 이러한 호스트가 192.168.1.0/24 LAN에서 서로 통신하도록 허용하는 것입니다. 이 구성은 해당 호스트에서 수행되어야 합니다.

비슷한 게시물도 있지만 사용 사례가 너무 구체적이거나 너무 복잡한 경우가 많습니다. 이제는 기가바이트당 비용을 지불합니다. 일단 설정되면 실제로 WAN 액세스가 필요하지 않지만 많은 데이터를 사용하는 것으로 보이는 일부 VM이 있습니다. (어떤 이유로 LDAP 서버?)

DD-WRT 필터링을 알아보고 있는데 호스트 측에서 어떻게 하는지 알고 싶습니다.

또한 하루에 1시간 동안 WAN 액세스를 활성화하는 것도 고려해 보겠습니다. 이 작업은 "를 통해 수행할 수 있습니다.iptables 스크립트"CRON을 사용하거나 DD-WRT를 통해 사용하세요.

IPTables가 최선의 선택이라고 생각합니다. 내 모든 서버는 IPTable을 사용하고 일부는 UFW를, 일부는 FirewallD를 사용한다고 생각합니다.

나는 이것이 아마도 "일반적인 질문"이라고 생각하며 대부분의 답변은 많은/모든 배포판에 적용되어야 합니다. 하지만 덧붙이자면 저는 주로 Ubuntu 14/16과 CentOS 6/7을 사용합니다.

답변1

필터링용IP 테이블

이는 허용된 트래픽에 대한 규칙 세트를 생성하고 나머지는 삭제함으로써 달성할 수 있습니다.

체인 의 경우 OUTPUT루프백 트래픽과 네트워크 트래픽을 허용하는 규칙을 만듭니다 192.168.1.0/24. 일치하는 규칙이 없으면 기본 작업이 적용됩니다 REJECT. 로 설정됩니다.

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
iptables -P OUTPUT REJECT

체인 의 경우 INPUT유사한 규칙을 만들 수 있습니다. 루프백 및 로컬 네트워크의 트래픽을 허용하고 나머지는 삭제합니다.

단일 규칙을 사용하여 설정된 트래픽(호스트가 시작한 연결에 대한 응답 트래픽)을 일치시킬 수 있습니다 -m conntrack --ctstate ESTABLISHED. 이렇게 하면 인터넷 액세스를 활성화하려는 경우 체인을 변경할 필요가 없습니다. 이 방법은 로컬 네트워크 외부로부터의 연결이 필요한 프로그램/데몬을 실행하지 않을 때 작동합니다.

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

로컬 네트워크 외부에서 시작된 연결을 허용해야 하는 경우 INPUT동일한 방식으로 체인을 구성 OUTPUT하고 유사한 메커니즘을 사용하여 적용해야 합니다.

무제한(WAN 액세스) 네트워크 액세스를 허용하려면 기본 작업을 로 변경합니다 ACCEPT. 제한사항을 복원하려면 기본 작업을 다시 변경하세요 REJECT. 마지막 규칙을 추가/제거해도 -j ACCEPT동일한 효과를 얻을 수 있습니다 .

iptables -P OUTPUT ACCEPT

당신은 또한 사용할 수 있습니다iptables 시간모듈은 하루 중 특정 시간의 트래픽을 허용합니다. 이 경우 cron을 사용할 필요가 없습니다. 예를 들어, 12:00에서 13:00 사이에 나가는 트래픽을 허용하려면 규칙은 다음과 같습니다.

iptables -A OUTPUT -m time --timestart 12:00 --timestop 13:00 -j ACCEPT

답변2

삭제기본 경로

호스트의 라우팅 테이블에서 기본 경로를 제거하면 해당 호스트가 로컬 네트워크 외부의 다른 호스트와 통신할 수 없게 됩니다. 기본 경로 구성은 기본 경로 추가 및 ip route기본 경로 삭제입니다.ip route default add ...ip route del default

라우터의 트래픽이 여전히 호스트에 도달할 수 있습니다. 활성화하여 소스 주소에 대한 알려진 경로가 없는 트래픽을 삭제할 수 있습니다.역방향 경로 필터링.

역방향 경로 필터링을 구성하는 방법에는 두 가지가 있습니다.시스템 제어또는iptables. 이것시스템 제어이 방법은 ipv4에서만 작동하며 iptables 규칙은 ipv4 및 ipv6 모두에 대해 작성할 수 있습니다.

  • 역방향 경로 필터링을 활성화하려면 다음을 사용하십시오.시스템 제어 rp_filter:

    sysctl net.ipv4.conf.all.rp_filter = 1
    
  • 그리고iptables, 사용rpfilter기준 치수:

    iptables -t raw -I PREROUTING -m rpfilter --invert -j DROP
    

    에도 동일한 규칙이 적용됩니다 ip6tables.nftables, 사용fib성명.

기본 경로를 제거하고 복원하려면 cron과 함께 간단한 스크립트를 사용할 수 있습니다.

#!/bin/sh -e
FILE="/root/default.gw"

case "$1" in
    "remove")
        route="$(ip route show default 0.0.0.0/0)"

        if [ -z "$route" ]; then
            echo "no default route configured"
            exit 1
        fi

        echo "$route" > $FILE
        ip route del default
        ip route flush cache
    ;;

    "restore")
        route="$(cat $FILE)"

        if [ -z "$route" ]; then
            echo "no default route saved"
            exit 1
        fi

        ip route add $route 
    ;;

    *)
        echo "invalid argument"
        echo "usage: $(basename -- $0) remove|restore"
        exit 1
esac

관련 정보