본문 바로가기 대메뉴 바로가기

테크니컬 스토리

아이티마야의 새로운 기술 뉴스를 만나보세요.
VPN! 활용법을 알아보자
등록일
2025.08.20
첨부파일
VPN을 통해 외부 접속을 해보자
VPN! 활용법을 알아보자
  • VPN 이란 무엇일까?
  • Virtual Private Network의 약자로 공용 네트워크(인터넷)를 통해 마치 개인 네트워크처럼 안전하게 데이터를 주고받을 수 있도록 해주는 기술
  • VPN의 기본 개념
  • - Virtual(가상): 실제 전용 회선을 깔지 않고 인터넷을 이용해 소프트웨어적으로 전용망을 만든다는 뜻
  • - Private(사설): 데이터를 암호화해 외부에서 볼 수 없도록 보호
  • - Network(네트워크): 물리적으로 멀리 떨어져 있어도 한 네트워크에 속한 것처럼 동작
  • 즉, VPN = 인터넷 위에 안전한 터널을 만드는 기술이라고 이해하면 됩니다.
  • VPN과 프록시/SSH와의 차이
  • 프록시: 단순히 IP를 바꿔주는 중계서버 → 암호화 X
  • SSH 터널: 일종의 간단한 VPN 역할 가능 → 속도가 느리고 범용성 낮음
  • VPN: 트래픽 전체를 암호화하고, 네트워크 단위로 사설망처럼 동작
  • 실무에서 VPN를 활용하는 법
  • 1. VPN 전용 장비를 DMZ 구간에 설치
  • 2. 외부 사용자는 VPN 전용 장비 클라이언트로 연결
  • 2-1) MFA(OTP) + AD/LDAP 인증 사용으로 보안 강화
  • 2-2) 방화벽 설정으로 VPN 트래픽 포트만 DMZ에서 사용 가능하게 설정 내부망 사용할 포트는 제한 개방
  • 3. 클라이언트( VPN 장비) 접속 시 내부망에 접근 가능!
  • 보안 고려 사항
  • 🔒 외부 사용자 인증: OTP(구글 인증기), PKI 인증서로 접속 보안 강화하기
  • 🛡️ 방화벽 정책: VPN이 붙더라도 내부망 전체가 아니라 특정 서버만 접근 가능하도록 설정
  • 📜 로그 감사: 모든 VPN 세션 로그 기록 및 모니터링 필요
  • 🚫 Split Tunnel 금지: VPN 연결 중 외부망과 내부망 동시 접근 금지
  • 🔐 폐쇄망 정책 준수: 기관/회사 보안 규정에 따라 VPN 설치 자체가 금지될 수 있음
  • 예제 따라 해보기!

openvpn 설치 및 설정!

      
        #서버 설치 (DMZ Linux)
        sudo apt install openvpn easy-rsa
        #PKI(인증서)환경준비
        make-cadir ~/openvpn-ca
        cd ~/openvpn-ca
        #환경초기화
        ./easyrsa init-pki
        #Common Name (CN) 설정
        ./easyrsa build-ca
        #서버 인증서/키 생성 Common Name
        ./easyrsa gen-req server nopass
        ./easyrsa sign-req server server#서버 인증서 이름입니다. ex)인증서이름: server
        #클라이언트 인증서/키 생성
        ./easyrsa gen-req client1 nopass
        ./easyrsa sign-req client client1
        #Diffie-Hellman 파라미터 및 TLS 키 생성
        ./easyrsa gen-dh
        openvpn --genkey --secret ta.key
        #OpenVPN 서버 설정
        sudo mkdir -p /etc/openvpn/server
        sudo vi /etc/openvpn/server/server.conf

        ex) server.conf내용
        port 443
        proto tcp
        dev tun
        ca /etc/openvpn/server/ca.crt
        cert /etc/openvpn/server/server.crt
        key /etc/openvpn/server/server.key
        dh /etc/openvpn/server/dh.pem
        tls-auth /etc/openvpn/server/ta.key 0
        server 10.8.0.1 255.255.255.0
        push "route 192.168.1.0 255.255.255.0"   # 폐쇄망 내부 라우팅
        keepalive 10 120
        cipher AES-256-GCM
        user nobody
        group nogroup
        persist-key
        persist-tun
        status /var/log/openvpn-status.log
        verb 3

        #인증서 복사
        sudo cp pki/ca.crt /etc/openvpn/server/
        sudo cp pki/issued/server.crt /etc/openvpn/server/
        sudo cp pki/private/server.key /etc/openvpn/server/
        sudo cp pki/dh.pem /etc/openvpn/server/
        sudo cp ta.key /etc/openvpn/server/
        #IP 포워딩 및 방화벽 설정
        sudo vi /etc/sysctl.conf
        #아래 줄 추가/수정
        net.ipv4.ip_forward=1
        #내용 저장후
        sudo sysctl -p

        #방화벽에서 NAT 허용
        sudo ufw allow 443/tcp
        sudo iptables -t nat -A POSTROUTING -s 10.8.0.1/24 -o eth0 -j MASQUERADE

        #서비스 시작
        sudo systemctl enable openvpn-server@server
        sudo systemctl start openvpn-server@server
        sudo systemctl status openvpn-server@server
      
    

클라이언트 설정 파일 생성

      
        sudo vi /etc/openvpn/client/client.ovpn
        #/etc/openvpn/client/client.ovpn내용 예시
        client
        dev tun
        proto tcp
        remote your.vpn.server.ip 443
        resolv-retry infinite
        nobind
        persist-key
        persist-tun
        remote-cert-tls server
        cipher AES-256-GCM
        key-direction 1
        verb 3

        < ca >
        -----BEGIN CERTIFICATE-----
        (여기에 ca.crt 내용 입력)
        -----END CERTIFICATE-----
        < /ca >

        < cert >
        -----BEGIN CERTIFICATE-----
        (여기에 client1.crt 내용 입력)
        -----END CERTIFICATE-----
        < /cert >

        < key >
        -----BEGIN PRIVATE KEY-----
        (여기에 client1.key 내용 입력)
        -----END PRIVATE KEY-----
        < /key >

        < tls-auth >
        -----BEGIN OpenVPN Static key V1-----
        (여기에 ta.key 내용 입력)
        -----END OpenVPN Static key V1-----
        < /tls-auth >
      
    

외부 PC에서 OpenVPN Client 설치 후 client.ovpn 파일로 연결(접속) 합니다!

  • 실제 구현 시 고려 사항!
  • 1. 운영 측면
  • 1-1) 계정/인증서 관리 [개별 인증서 발급 및 관리, 퇴사/권한 변경 시 즉시 인증서 폐기, 유효기간 관리]
  • 1-2) 장애 대응 [VPN 서버 이중화, DMZ와 내부망 간 라우팅 장애 대비 백업 정책]
  • 1-3) 유지 보수
  • 2. 정책 및 감사 측면
  • 2-1) 보안 정책에 따라 VPN 사용 사유, 접근 대상, 기간을 문서화
  • 2-2) 감사 로그(누가, 언제, 어디에 접속했는지) 주기적 검토
  • 2-3) 필요시 세션 녹화 / 명령어 로깅 적용
  • 3. 네트워크 아키텍처 고려
  • 3-1) VPN 서버는 반드시 DMZ에 위치
  • 3-2) DMZ → 내부망 트래픽은 방화벽 레벨에서 세분화 제어
  • 3-3) VPN 전용 서브넷(예: 10.8.0.0/24)과 내부망 IP(예: 192.168.x.0/24)를 라우팅으로 분리
  • 4. 실무 적용 시 보안 강화 방안
  • 4-1) Fail2Ban 등으로 무차별 로그인 시도 차단
  • 4-2) 클라이언트에 접속 제한(MAC 바인딩, IP 화이트리스트)
  • 4-2) IDS/IPS(침입 탐지/방지) 연동
  • 4-4) VPN 전용 사용자 그룹 생성 후 최소 권한만 부여
  • 이제 여러분도 VPN을 이해하고 실제로 구축할 수 있는 준비가 되셨습니다!
  • 내용을 실습하고, 안전한 원격 접속 환경을 직접 만들어 보세요.
  • 보안은 선택이 아니라 필수입니다.
PLEASE WAIT WHILE LOADING...