모든 아웃바운드 연결을 차단하려면 어떻게 해야 합니까?

모든 아웃바운드 연결을 차단하려면 어떻게 해야 합니까?

내 서버를 차단해야 합니다.개시원격 서버에 대한 모든 연결.

그러나 나는 여전히 연결된 클라이언트를 통해 시작된 연결에서 서버가 응답할 수 있기를 원합니다.

즉, 다른 사람들은 서버에 연결할 수 있지만 서버는 다른 서버에 대한 원격 연결을 시작할 수 없기를 바랍니다.

어떻게 해야 합니까?

저는 우분투를 사용하고 있습니다.

답변1

나가는 모든 연결을 차단하는 것은 온라인 리포지토리에서 소프트웨어를 설치하고, DNS 검색을 수행하고(대부분의 환경에서 끔찍할 수 있음), NTP로 시계를 업데이트하는 등의 작업을 수행하는 것을 방지하기 때문에 나쁜 생각입니다. 어쨌든 원하는 경우 그렇게 하려면 다음을 시도해 보세요.

  # Drop all connections initiated from this host
iptables -t filter -I OUTPUT 1 -m state --state NEW -j DROP
  # Additionally, log the event (optional)
iptables -t filter -I OUTPUT 1 -m state --state NEW -j LOG --log-level warning \
  --log-prefix "Attempted to initiate a connection from a local process" \
  --log-uid

DNS와 같은 특정 트래픽을 허용하여 규칙을 더욱 스마트하게 만들 수 있습니다. 다음 두 가지 방법으로 이를 달성할 수 있습니다.

  1. 일치 항목을 더욱 복잡하게 만드세요. 하나 또는 두 개의 "화이트리스트" 항목에 적합합니다. 예:

      # Only forbid non-UDP traffic
    iptables -t filter -I OUTPUT 1 -m state --state NEW \! -p udp -j DROP
    
  2. "-j ACCEPT" 대상을 사용하여 로컬 호스트에서 시작하도록 허용된 일부 원하는 서비스와 일치하는 규칙을 앞에 추가합니다. 예:

      # Run this after the "DROP" rule to allow connection to ports
      #+ 80 and 443, mostly used for HTTP and HTTPS traffic
    iptables -t filter -I OUTPUT 1 -p udp -m multiport --ports 80,443 -j ACCEPT
    

답변2

우분투에 내장된 방화벽은 ufw입니다. Gufw라는 GUI를 사용하여 제어할 수 있습니다. Gufw의 기본 창에서 Outgoing:Deny를 클릭하세요.

관련 정보