blog

엑스트라넷 프로그램에 대한 Linux 인트라넷 액세스

1. 정방향 프록시 프로그램을 수행하는 인트라넷 침투 2. iptables NAT 프로그램 3. 정방향 프록시 프로그램을 수행하는 nginx 4. 인트라넷의 안전을 보장하기 위한 ...

Oct 26, 2025 · 7 min. read
シェア

엑스트라넷 프로그램 액세스

GoProxy

배포

  • goproxy 직접 설치 패키지를 다운로드하세요.

  • fatedier/frp 같은 다른 유사한 인트라넷 침투 소프트웨어도 사용할 수 있습니다.

시작

직접 프록시

암호화하지 않고 직접 프록시를 설정하여 정방향 프록시를 달성할 수 있습니다.

./proxy http -t tcp -p 호스트 IP:포트 --영구 --log 로그/프록시. .log --daemon

투명 프록시
레벨 1 암호화 에이전트:

암호화, 정방향 프록시로 직접 사용할 수 없음

./proxy http -t tls -p 기본 프록시 호스트 IP:port -z "passwd4#me" -C cert/proxy.crt -K cert/proxy.key --daemon --forever --log log/proxy. .log

보조 에이전트:

암호화되지 않고 정방향 프록시로 직접 사용할 수 있습니다.

./proxy http -t tcp -p 보조 프록시 호스트 IP:80 -T tls -P 기본 프록시 호스트 IP:port -Z "passwd4#me" -C cert/proxy.crt -K cert/proxy.key --daemon --forever --log log/proxy.80.log

./proxy http -t tcp -p 보조 프록시 호스트 IP:443 -T tls -P 기본 프록시 호스트 IP:port -Z "passwd4#me" -C cert/proxy.crt -K cert/proxy.key --daemon --forever --log log/proxy.443.log

투명한 프록시 사용자 구성:
  1. hostAlias: k8s 환경에서는 보조 프록시 서버 IP에 해당하는 도메인 이름의 IP를 직접 수정하고, 호스트 파일을 직접 구성할 수도 있으며, 도메인 이름을 정확히 알아야 합니다.

  2. kubectl을 통해 k8s 환경에서 클러스터 내 DNS 확인을 추가하면 전체 클러스터에 영향을 미치며, 이점은 두 번째 수준 도메인 이름 와일드카드인 kubectl edit cm coredns -n kube-system 사용한 다음 사용자 정의 확인 레코드를 . 53.hosts 블록에 사용자 정의 확인 레코드를 추가할 수 있습니다.

  3. iptables DNAT: 도메인 이름을 정확히 알 수 없는 경우 외부 네트워크의 IP를 보조 프록시의 IP로 대체하는 방화벽 nat 규칙을 추가합니다. iptables 구성표 세부 정보:

    1. 컨테이너 환경에서는 기본 이미지에 아이피테이블이 포함되어 있어야 하며 다음을 활성화해야 합니다.
    2. 인트라넷이 아닌 대상 IP를 보조 프록시 주소로 대체하는 iptables 아웃바운드 NAT 규칙을 추가합니다.
# iptables DNAT 
# ipv4주소 변환
iptables -t nat -A PREROUTING -p tcp \
 -d 1.0.0.0/8,2.0.0.0/7,4.0.0.0/6,8.0.0.0/7,.0/8,.0/6,.0/4,.0/3,.0/3,.0/6,.0/10,100./9,.0/8,.0/7,.0/5,.0/5,.0/6,.0/7,.0/8,.0/3,.0/5,.0/8,.0/9,169./10,169./11,169./12,169./13,169./14,169./15,169./16,.0/7,.0/12,.0/11,.0/10,172./9,.0/8,.0/7,.0/4,.0/24,.0/24,.0/22,.0/21,.0/20,.0/19,.0/18,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/12,.0/13,.0/18,.0/19,.0/23,.0/24,0.0/22,4.0/21,2.0/20,8.0/17,.0/16,.0/15,.0/14,.0/11,192./11,192./13,192./16,192./15,192./14,192./12,192./10,.0/8,.0/7,.0/7,.0/12,.0/15,.0/14,.0/13,.0/12,.0/15,.0/16,.0/18,.0/19,.0/22,1.0/24,2.0/23,4.0/21,2.0/20,8.0/17,.0/14,.0/13,.0/10,198./9,.0/8,.0/7,.0/8,.0/18,.0/19,.0/20,2.0/24,4.0/23,6.0/22,0.0/21,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/10,203./9,.0/6,.0/4 \
 --dport 80 -j DNAT --to 10.207.219.3:80
iptables -t nat -A PREROUTING -p tcp \
 -d 1.0.0.0/8,2.0.0.0/7,4.0.0.0/6,8.0.0.0/7,.0/8,.0/6,.0/4,.0/3,.0/3,.0/6,.0/10,100./9,.0/8,.0/7,.0/5,.0/5,.0/6,.0/7,.0/8,.0/3,.0/5,.0/8,.0/9,169./10,169./11,169./12,169./13,169./14,169./15,169./16,.0/7,.0/12,.0/11,.0/10,172./9,.0/8,.0/7,.0/4,.0/24,.0/24,.0/22,.0/21,.0/20,.0/19,.0/18,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/12,.0/13,.0/18,.0/19,.0/23,.0/24,0.0/22,4.0/21,2.0/20,8.0/17,.0/16,.0/15,.0/14,.0/11,192./11,192./13,192./16,192./15,192./14,192./12,192./10,.0/8,.0/7,.0/7,.0/12,.0/15,.0/14,.0/13,.0/12,.0/15,.0/16,.0/18,.0/19,.0/22,1.0/24,2.0/23,4.0/21,2.0/20,8.0/17,.0/14,.0/13,.0/10,198./9,.0/8,.0/7,.0/8,.0/18,.0/19,.0/20,2.0/24,4.0/23,6.0/22,0.0/21,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/10,203./9,.0/6,.0/4 \
 --dport 443 -j DNAT --to 10.207.219.3:443
iptables -t nat -A PREROUTING -p udp \
 -d 1.0.0.0/8,2.0.0.0/7,4.0.0.0/6,8.0.0.0/7,.0/8,.0/6,.0/4,.0/3,.0/3,.0/6,.0/10,100./9,.0/8,.0/7,.0/5,.0/5,.0/6,.0/7,.0/8,.0/3,.0/5,.0/8,.0/9,169./10,169./11,169./12,169./13,169./14,169./15,169./16,.0/7,.0/12,.0/11,.0/10,172./9,.0/8,.0/7,.0/4,.0/24,.0/24,.0/22,.0/21,.0/20,.0/19,.0/18,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/12,.0/13,.0/18,.0/19,.0/23,.0/24,0.0/22,4.0/21,2.0/20,8.0/17,.0/16,.0/15,.0/14,.0/11,192./11,192./13,192./16,192./15,192./14,192./12,192./10,.0/8,.0/7,.0/7,.0/12,.0/15,.0/14,.0/13,.0/12,.0/15,.0/16,.0/18,.0/19,.0/22,1.0/24,2.0/23,4.0/21,2.0/20,8.0/17,.0/14,.0/13,.0/10,198./9,.0/8,.0/7,.0/8,.0/18,.0/19,.0/20,2.0/24,4.0/23,6.0/22,0.0/21,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/10,203./9,.0/6,.0/4 \
 --dport 80 -j DNAT --to 10.207.219.3:80
iptables -t nat -A PREROUTING -p udp \
 -d 1.0.0.0/8,2.0.0.0/7,4.0.0.0/6,8.0.0.0/7,.0/8,.0/6,.0/4,.0/3,.0/3,.0/6,.0/10,100./9,.0/8,.0/7,.0/5,.0/5,.0/6,.0/7,.0/8,.0/3,.0/5,.0/8,.0/9,169./10,169./11,169./12,169./13,169./14,169./15,169./16,.0/7,.0/12,.0/11,.0/10,172./9,.0/8,.0/7,.0/4,.0/24,.0/24,.0/22,.0/21,.0/20,.0/19,.0/18,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/12,.0/13,.0/18,.0/19,.0/23,.0/24,0.0/22,4.0/21,2.0/20,8.0/17,.0/16,.0/15,.0/14,.0/11,192./11,192./13,192./16,192./15,192./14,192./12,192./10,.0/8,.0/7,.0/7,.0/12,.0/15,.0/14,.0/13,.0/12,.0/15,.0/16,.0/18,.0/19,.0/22,1.0/24,2.0/23,4.0/21,2.0/20,8.0/17,.0/14,.0/13,.0/10,198./9,.0/8,.0/7,.0/8,.0/18,.0/19,.0/20,2.0/24,4.0/23,6.0/22,0.0/21,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/10,203./9,.0/6,.0/4 \
 --dport 443 -j DNAT --to 10.207.219.3:443
# ipv6
iptables -t nat -p tcp -A 포트라우팅\
 -d 2001::/16 -j DNAT --to IPV6 주소:443
 # 방화벽 규칙 구성 저장
 service iptables save
Socket5

./proxy socks -t tcp -p 호스트 IP:port --daemon --forever --log log/proxy. .log

장점과 단점

vantage

  1. 투명 프록시 https를 직접 구현하고 첫 번째 레벨 프록시에서 암호화할 수 있습니다.
  2. http 지원\socket basic
  3. SOCKET5 프로토콜 프록시 가능
  4. UDP 프로토콜이 직접 지원됨

단점

  1. 오픈 소스 버전에는 블랙리스트와 화이트리스트가 없으며 차단은 전적으로 방화벽에 의존합니다.
  2. 로그 형식을 조정할 수 없습니다.

전용 서브넷 프로그램

새 사설 서브넷을 생성하고 가상 라우팅 링크 출구를 DMZ에 넣고, DMZ에서 iptables SNAT를 설정하고 ip_forward를 활성화하면 Yungun은 이 게이트웨이를 통해 외부 IP에 액세스하거나 기본 게이트웨이로 사용하거나 인트라넷 서버를 DMZ 게이트웨이에 직접 연결할 수 있습니다.

#DMZ영역: 아이피테이블 규칙
iptables -t nat -A POSTROUTING -o 전용 서브넷 NIC -s 서브넷 IP 세그먼트 -j SNAT -- 외부 NIC IP
#컨테이너 내에서 라우팅 설정
#1.기본 경로는 사설 서브넷 게이트웨이로 이동합니다.
route add default gw 사설 서브넷 게이트웨이
#2.일반 인트라넷 게이트웨이에 인트라넷 다음 홉을 하나씩 추가합니다.
route -p add x.x.x.x mask x.x.x.x 사설 서브넷 게이트웨이 

장점과 단점

vantage

  1. 정방향 프록시에 의존하지 않음

단점

  1. 직접 위반 격리
  2. 제어는 전적으로 아이피테이블에 의존합니다.

배포

ngx_http_proxy_connect_module에 대한 종속성

# 1. configure ./configure \ --prefix=/app/nginx_forward_proxy \ --with-http_stub_status_module \ --with-http_sub_module \ --with-http_auth_request_module \ --with-http_addition_module \ --with-http_realip_module \ --with-http_ssl_module \ --with-http_v2_module \ --add-module=/app/nginx-1.24.0/ngx_http_proxy_connect_module-0.0.5 # 2. patch patch -p1 < \ /app/nginx-1.24.0/ngx_http_proxy_connect_module-0.0.5/patch/proxy_connect_rewrite_102101.patch # 3. make make && make install

구성

http {
 include mime.types;
 default_type application/octet-stream;
 sendfile on;
 keepalive_timeout 65;
 server {
 listen 8080;
 #http2 on;
 # 인트라넷 URL을 확인하지 않도록 외부 DNS 설정하기
 resolver 114.114.114.114;
 proxy_connect; # ngx_http_proxy_connect_module
 # 허용 포트
 proxy_connect_allow 443 80;
 #proxy_connect_connect_timeout 10s;
 #proxy_connect_read_timeout 10s;
 #proxy_connect_send_timeout 10s;
 location / {
 if ($host ~ "^(?=.1)|(?=localhost)|(?=10.\d{1,3}.\d{1,3}.\d{1,3})|(?=100.100.\d{1,3}.\d{1,3})|(?=172.(?=1)|(?=2[0-9])|(?=3[01]).\d{1,3}.\d{1,3})") {
 #프록시 루프백 및 인트라넷 IP 허용되지 않음
 return 403;
 }
 proxy_pass $scheme://$host$request_uri;
 }
 }
}

장점과 단점

vantage

  1. 인트라넷 주소에 대한 액세스는 다음을 구성하여 직접 차단할 수 있습니다.
  2. 로그 형식 조정 가능

단점

  1. 인증서와 도메인 이름이 일치 할 수 없으므로 투명 프록시 https를 직접 수행 할 수 없으므로 투명 프록시 https를 달성하려면 보안 서버에 GOPROXY 보조 프록시를 배포해야합니다.
  2. 정방향 프록시를 수행할 때 기본 인증이 제대로 작동하지 않으므로 프록시 서버 계정 비밀번호를 설정할 수 없습니다.

사용자 방화벽

프록시 애플리케이션에 사용자를 할당하고 해당 사용자의 방화벽이 해당 사용자의 인트라넷 주소에 대한 액세스를 차단하도록 구성할 수 있습니다.

사용자를 myproxy로 지정하면 아웃바운드 TCP 및 UDP 방화벽이 다음과 같이 구성됩니다.

내부 및 외부 네트워크 IP 주소 설명:

# IP 포워딩 사용
# vim /etc/sysctl.conf
# net.ipv4.ip_forward = 1
#Target이 인트라넷 IPV4에 대한 액세스를 차단합니다.
iptables -A OUTPUT \
 -d .0/8,.0/8,192./16,100./16,169./16,.0/12 \
 -m owner --uid-owner myproxy -j DROP
#Target이 인트라넷 IPV6에 대한 액세스를 차단합니다.
ip6tables -A OUTPUT \
 -d fe80::/64,2406:440:400:878A::/96 \
 -m owner --uid-owner myproxy -j DROP
#소스는 인트라넷이 아닌 IPV4 차단 액세스입니다.
iptables -A OUTPUT \
 -d 1.0.0.0/8,2.0.0.0/7,4.0.0.0/6,8.0.0.0/7,.0/8,.0/6,.0/4,.0/3,.0/3,.0/6,.0/10,100./9,.0/8,.0/7,.0/5,.0/5,.0/6,.0/7,.0/8,.0/3,.0/5,.0/8,.0/9,169./10,169./11,169./12,169./13,169./14,169./15,169./16,.0/7,.0/12,.0/11,.0/10,172./9,.0/8,.0/7,.0/4,.0/24,.0/24,.0/22,.0/21,.0/20,.0/19,.0/18,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/12,.0/13,.0/18,.0/19,.0/23,.0/24,0.0/22,4.0/21,2.0/20,8.0/17,.0/16,.0/15,.0/14,.0/11,192./11,192./13,192./16,192./15,192./14,192./12,192./10,.0/8,.0/7,.0/7,.0/12,.0/15,.0/14,.0/13,.0/12,.0/15,.0/16,.0/18,.0/19,.0/22,1.0/24,2.0/23,4.0/21,2.0/20,8.0/17,.0/14,.0/13,.0/10,198./9,.0/8,.0/7,.0/8,.0/18,.0/19,.0/20,2.0/24,4.0/23,6.0/22,0.0/21,8.0/17,.0/16,.0/15,.0/14,.0/13,.0/12,.0/11,.0/10,203./9,.0/6,.0/4 \
 -m owner --uid-owner myproxy -j DROP
#소스는 비인트라넷 IPV6 블록 액세스입니다.
ip6tables -A OUTPUT \
 -d 2001::/16 \
 -m owner --uid-owner myproxy -j DROP
 # 방화벽 규칙 구성 저장
 service iptables save
Read next

유형 "스크립트" 튜토리얼 유형 "스크립트" 심볼

이 섹션에서는 심볼 타입의 구문, 사용법 및 시나리오를 설명합니다. Symbol()에서 반환되는 각 값의 고유성은 심볼 타입을 사용하는 가장 중요한 이유입니다. 1. 심볼 설명

Oct 26, 2025 · 3 min read