가상사설망(VPN, Virtual Private Network)는 별도의 사설 전용망 없이도 암호 기술에 기반한 터널링(tunneling) 프로토콜(통신규약)을 이용해 지점간을 연결함으로써, 저렴한 비용으로 원거리 통신망(WAN)을 구축할 수 있는 네트워크 솔루션을 의미한다.
OpenVPN이란 OpenVPN Technologies, Inc.에서 제작하고 배포하는 오픈소스 VPN 프로토콜과 그 접속 프로그램을 말한다.
TCP와 UDP 프로토콜을 모두 이용 가능한 오픈소스 VPN 프로토콜로서, TAP 또는 TUN 가상 네트워크 어뎁터를 이용해 VPN 연결을 수립한다.
SSL이나 TLS를 이용하여 패킷을 암호화하기 때문에 유효한 CA 인증서가 필요하다. 다만, 굳이 신뢰할 수 있는 CA를 이용하지 않아도 연결에는 문제가 없기 때문에 많은 개인 이용자들은 OpenSSL과 같은 프로그램을 이용해 자가 인증된 인증서를 이용해 VPN 서버를 생성하기도 한다.
L2TP나 PPTP가 막혀 있는 곳에서도 OpenVPN은 연결될 가능성이 높다.
다만 방화벽이 패킷을 일일이 다 까보는 애플리케이션 방화벽이라면 답이 없다. 특히 인터넷 검열에 적극적인 중국과 이집트에선 2013년에 이미 막혔다. 이런 환경에서 OVPN을 쓰려면 cipher를 AES-256-CFB로 설정하거나, SSL 또는 SSH 터널(stunnel 등)로 감싸 주거나, XOR 패치를 쓰거나, Obfsproxy 등의 위장을 갖출 필요가 있다.
OpenVPN 서버를 구축하거나 서버에 접속할 때 쓰인다. 확장자가 ovpn인 OpenVPN 설정 파일을 읽어 들여 동작하는데, 설정 파일은 서버와 클라이언트가 다르지만 확장자는 같아 헷갈릴 수 있다.
클라이언트는 자체적으로 인증서를 읽어올 수 있어 별도로 인증서를 설치하지 않아도 동작한다.
OpenVPN 서버는 무료/오픈소스(GPL)인 OpenVPN Community Edition과, 웹GUI같은 추가 기능을 더 제공하는 유료 OpenVPN Access Server의 2종류가 있다.
OpenVPN Community Edition은 기본적으로 별도의 설정용 GUI를 제공하지 않으므로 커맨드라인과 텍스트 파일만을 이용해서 서버를 구축해야 한다. 하지만 인터넷에서 설정 방법을 얼마든지 찾을 수 있고, DD-WRT와 같은 커스텀 펌웨어가 적용된 라우터와 같이 서드파티 wrapper를 만들어 GUI상에서 서버 구축을 할 수 있도록 해 놓은 경우도 있다.
한편, OpenVPN 클라이언트는 안드로이드(4.0 이상)와 iOS에서 사용할 수 있으며, 대부분의 데스크톱 운영체제를 지원한다. 다만, 현대 모바일 운영체제 중 윈도우폰(7, 8, 10 모두)이나 블랙베리 OS 10, 타이젠에서는 사용 불가. Sailfish OS에서는 서드파티 앱으로 지원한다.
전세계적으로 제일 많이 사용하는 오픈소스 VPN인 OpenVPN의 보안 강화를 위하여 로그인 아이디와 비밀번호 이외에 별도의 추가 인증(2차 인증)하기 위하여 RADIUS를 연동하는게 일반적인 방법이다.
OpenVPN는 플러그인 기능한 인증 모듈(PAM, Pluggable Authentication Module) 방식을 지원한다.
PAM(Pluggable Authentication Module) 방식은 Linux/Unix 시스템에서 중앙집중적인 인증 매커니즘을 지원하는 방식이다.
PAM의 기본 원리는 응용 프로그램이 password 파일을 읽어 오는 대신 PAM이 직접 인증을 수행 하도록 하는 것이다. PAM은 시스템 관리자가 원하는 인증 매커니즘이 무엇이든 상관하지 않는다.
PAM은 Windows 환경의 DDL(Dynamic Link Library)과 같은 것이다. Library로 프로그램이 어떤 사용자에 대한 인증을 수행하려면 PAM Library가 있는 함수를 호출한다. PAM은 해당 함수의 Library를 제공하여 응용 프로그램이 특정 사용자를 인증하도록 요청할 수 있다.
PAM을 통해 /etc/passwd 파일이나 /etc/shadow 파일을 확인하거나 또는 보다 복잡한 확인 작업을 수행하기도 하는데, 예로는 LDAP 서버에 접속하는 것이다.
확인 작업을 마치고, 인증 여부를 결정하게 되면 "인증됨/인증되지 않음"의 메시지를 자신을 호출한 응용 프로그램에 전송한다.
PAM을 사용하면 사용자 인증을 위한 시스템 항목 서비스(예: ftp, login, telnet, rsh) 사용을 구성할 수 있다. PAM이 제공하는 몇 가지 이점은 다음과 같다.
■ 유연한 구성 정책
■ 응용 프로그램별 인증 정책
■ 기본 인증 방식을 선택할 수 있는 기능
■ 높은 보안 시스템에서 여러 권한 부여를 요구할 수 있는 기능
■ 최종 사용자의 사용 편의성
■ 암호가 여러 인증 서비스에 대해 동일한 경우 암호 재입력 없음
■ 사용자가 여러 명령을 입력할 필요 없이 여러 인증 서비스에 대해 사용자에게 암호를 요구할 수 있는 기능
■ 사용자 인증 서비스에 선택적 옵션을 전달할 수 있는 기능
■ 시스템 항목 서비스를 변경할 필요 없이 사이트별 보안 정책을 구현할 수 있는 기능
OpenVPN는 플러그인 기능한 인증 모듈(PAM, Pluggable Authentication Module) 방식을 이용하여 추가 인증(2차 인증)으로 BaroPAM 솔루션과 아주 손쉽게 연동하여 두 마리 토끼(관리/운영비용 절감, 보안 강화)를 잡을 수 있다.
OpenVPN의 보안 강화를 위하여 로그인 화면에서 "사용자"를 입력하고, 암호가 "baropam"이고, BaroPAM 앱에서 생성한 인증 코드인 "613045"이라면 비밀번호 프롬프트에 "baropam613045"을 입력한 후 하단의 "확인" 버튼을 클릭한다.
"아무 것도 하지 않으면 중간은 간다"는 건 오래된 말이고, 클라우드 시대에는 통하지 않는 말이다. 새로운 시대에는 새로운 보호 장치가 어울린다. 시스템과 인프라는 자꾸만 새 것으로 바뀌는데 왜 예전 것들을 부여잡고 있는지 각자가 스스로를 검토해야 할 때다.
결론은 "2차 인증을 도입했다"는 것이 아니라 기술 및 보안성 등 "어떤 2차 인증을 도입했느냐"가 관건이다.
"아무 것도 신뢰하지 않는다" = "아무도 믿지 마라" = "계속 검증하라"
앞으로 정보 보안의 흐름은 보안은 강화하고 사용자의 불편함을 최소화하는 방향으로, 기억할 필요가 없는 비밀번호! BaroPAM이 함께 하겠습니다.
'▶ BaroSolution > 기술문서' 카테고리의 다른 글
망분리 했다고 외부 네트워크와 연결되지 않은 완전한 폐쇄망은 없다 (0) | 2024.01.20 |
---|---|
비밀번호를 일회성/휘발성 같은 동적인 보안 솔루션으로 대체 했을 때 이점 (0) | 2024.01.07 |
한 곳 털리니 딴 곳도 털렸다-크리덴셜 스터핑(Credential Stuffing) 공격 (0) | 2023.12.17 |
강력한 MFA도 무력화하는 MFA 피로공격과 MFA 우회기술 방어 (0) | 2023.12.14 |
비밀번호 없이 로그인하는 패스워드리스 인증으로 보안·편의성 강화 (0) | 2023.12.09 |