VPN에 대한 Linux 킬스위치 설정하는 방법

A Linux killswitch is a must for any serious Linux VPN user. It guards your data against leaking to the internet by preventing anyone from accessing your data even if disconnected from the VPN. It also ensures that all information remains confidential regardless of what happens in between.

사이버 범죄자에게는 킬 스위치가 악몽입니다. 이는 그들과 그들의 목표 사이에 서 있는 중요한 장애물입니다. VPN에 대한 연결이 컴퓨터나 핸드폰이 멈추거나 죽거나 실수로 연결이 끊어진 경우 단 한 번이라도, 킬 스위치가 활성화되어 있으면 해당 데이터에는 누구도 접근할 수 없습니다.

전제 조건

이 튜토리얼을 따라하기 위해 다음이 필요합니다:

  • VPN 제공업체에 연결하기 위한 구성 파일. 이 문서에서는 VPN 제공업체로 NordVPN을 사용합니다.
  • A Ubuntu device with the OpenVPN client. The examples will use Ubuntu 20.04 and OpenVPN 2.5.3.

UFW(Uncomplicated Firewall) 설치

이 튜토리얼에서는 리눅스 킬 스위치가 방화벽의 구성에 따라 달려 있습니다. 먼저 기기에 UFW(Uncomplicated Firewall)를 설치하고 방화벽을 킬 스위치로 작동하도록 설정하세요.

시작하기 전에 Linux 배포판이 최신 상태인지 확인하십시오. 그렇지 않으면 UFW 방화벽이 예상대로 작동하지 않을 수 있습니다. 예를 들어 UFW가 부팅시 설정을 로드하지 않거나 추가/제거된 규칙이 로드되지 않을 수 있습니다.

1. 방화벽을 설치하려면 sudo apt install ufw -y를 실행하십시오.

UFW 방화벽은 대부분의 우분투 배포판에 기본으로 설치되어 있으므로 이미 UFW가 설치되어 있을 수 있습니다.

2. sudo systemctl start ufw로 UFW 서비스를 시작합니다.

3. UFW 설치가 성공적인지 확인하세요. sudo systemctl status ufw 명령을 실행하고 성공하면 출력에 아래와 같이 녹색으로 ctive (exited)가 표시됩니다.

Verifying that UFW is installed and running

4. UFW를 sudo ufw enable로 시작하세요. Y를 누르고 Enter를 눌러 작업을 진행하시겠습니까 (y|n)?

Enabling UFW on Ubuntu

원격 액세스 프로토콜 허용

이제 방화벽이 설치되었으므로 VPN과 함께 사용할 프로토콜을 허용하도록 UFW를 구성해야 합니다.

먼저 클라이언트에 잠겨 있지 않은지 확인하여 OpenVPN 연결에 문제가 발생할 경우 SSH를 통해 로그인해야 할 수 있습니다. 연결이 끊기면 SSH로 로그인할 수 없을 경우 물리적으로 기기에 액세스하여 다시 접속해야 합니다.

1. sudo ufw allow ssh 명령을 사용하여 SSH 연결을 허용하세요. UFW 방화벽은 /etc/services 파일에서 포트와 프로토콜을 읽고 해당 포트를 엽니다. 명령 출력은 아래에서 확인할 수 있습니다.

Allowing SSH Connections on Ubuntu

SSH 키를 사용하여 사용자가 OpenVPN을 통해 연결할 때 추가적인 보안 계층을 추가하는 것이 매우 권장됩니다. 이 절차는 브루트 포스 공격과 무단 연결에 대비합니다.

2. 그다음 해당 포트에서 트래픽을 허용함으로써 VNC 프로토콜을 허용할 규칙을 추가해야 합니다.

VNC 프로토콜에 대해 말하자면, 선택 사항입니다. VNC는 SSH와 유사한 원격 액세스를 제공합니다. VNC는 그래픽 콘솔을 제공하며, SSH는 텍스트 콘솔만 허용합니다. sudo ufw allow 5901:5910/tcp 명령을 사용하여 VNC 트래픽을 허용하세요.

이 명령은 아래와 같은 출력을 제공합니다.

Allowing remote access protocols on Ubuntu with UFW

3. 규칙이 추가되었는지 확인하려면 추가된 규칙을 모두 나열하는 sudo ufw show added 명령을 사용하세요. 아래에서 확인할 수 있습니다.

Checking UFW existing rules

VPN Kill Switch 구성

이 섹션에서는 UFW 방화벽을 사용하여 실제로 Kill Switch를 설정하는 방법을 배우게 됩니다. 아래의 두 명령을 실행하세요.

  • sudo ufw default deny outgoing
  • sudo ufw default deny incoming

ufw default deny 명령은 SSH 연결 및 이전 섹션에서 설정한 원격 프로토콜을 제외한 모든 수신/발신 트래픽을 차단합니다. 아래 스크린샷에서 명령의 결과를 확인할 수 있습니다.

Blocking traffic with UFW

다음으로, UFW 규칙 집합에 VPN 서버에 연결할 수 있도록 예외를 추가하세요. VPN 서버 구성 파일이 필요합니다. 이 튜토리얼에서는 OpenVPN 파일이 ata.ovpn이라고 가정하고 NordVPN 사이트에서 다운로드한 것으로 가정합니다.

사용하는 OpenVPN 구성 파일 이름은 다를 수 있습니다. 이 튜토리얼에서는 “ata”라는 네이밍 컨벤션을 사용하지만, 필요에 따라 원하는 이름으로 지정하십시오!

다음으로, ata.opvn OpenVPN 구성 파일을 다음 명령으로 확인하십시오. sudo head /etc/ata.ovpn. 결과 출력에는 연결하는 VPN 서버의 포트, 프로토콜, 및 IP 주소와 같은 정보가 포함되며, 아래 예시에서는 NordVPN이 표시됩니다.

올바른 UFW 명령을 만들려면 구성 파일에서 출력된 포트, 프로토콜, 및 공용 IP 주소 정보를 확인하십시오.

Opening an OpenVPN config file, the above example is for NordVPN.

다음으로, 다음과 같이 ufw allow out 명령을 생성하십시오: sudo ufw allow out to 69.28.83.134 port 1194 proto udp. 볼 수 있듯이 사용된 IP 주소와 포트는 remote로 시작하는 구성 줄 및 프로토콜은 proto로 시작하는 줄에서 가져옵니다.

이 예제에서는 NordVPN을 VPN 공급자로 사용합니다. NordVPN의 경우 1194 UDP 포트를 열어야 합니다. 예를 들어, Express VPN을 사용하는 경우, 1195 UDP 포트가 열려야 합니다. 모든 VPN 공급자마다 고유한 UDP 포트가 있을 수 있습니다.

OpenVPN에 대한 방화벽 예외 생성

당연히, 적절한 사용성을 위해 방화벽을 통해 OpenVPN을 허용해야 합니다. 현재까지 몇 개의 포트를 제외하고 모든 들어오고 나가는 트래픽을 차단했습니다.

먼저 OpenVPN 클라이언트가 사용하는 네트워크 인터페이스 이름을 찾아야 합니다. 아래와 같이 모든 구성된 네트워크 인터페이스 이름을 나열하는 ifconfig 명령을 실행하세요.

Listing network interface names on Ubuntu.

결과 목록에서 이름이 tun0인 네트워크 인터페이스에 주목하세요. tun0 인터페이스는 모든 들어오고 나가는 트래픽이 경유하는 VPN 인터페이스이자 허용할 인터페이스입니다. 이는 부팅 시에 추가되는 가상 인터페이스로, 물리적인 연결이 아님을 의미합니다. 이 인터페이스는 OpenVPN에서 기본값으로 사용됩니다.

ifconfig로 찾은 VPN 터널 인터페이스에 대한 방화벽 예외를 추가하여 모든 트래픽을 터널을 통해 강제로 보내야 합니다. 그렇지 않으면 인터넷 액세스가 없어지며 킬 스위치가 실패합니다. 아래 명령을 실행하여 tun0 인터페이스에 대한 OpenVPN 트래픽 예외를 추가하세요.

sudo ufw allow out on tun0 from any to any
Allowing outgoing traffic on the tun0 interface.

일부 응용 프로그램은 게임을 하면서 음성 채팅 응용 프로그램에 액세스해야 하는 등 VPN을 통한 들어오는 연결을 필요로 할 수 있습니다. 들어오는 연결을 허용하려면 다음 명령을 실행하세요.

sudo ufw allow in on tun0 from any to any
Allowing ingoing traffic to tun0 interface

OpenVPN 클라이언트 구성

이 마지막 섹션에서는 이전에 생성한 구성을 사용하여 OpenVPN 클라이언트를 서비스로 실행하도록 구성합니다.

시작하려면 일반 텍스트 ata.opvn 파일의 이름을 **(파일 이름이 다를 수 있음) ata.conf로 변경하십시오. OpenVPN 클라이언트를 백그라운드 시스템 서비스로 실행하려면 파일 이름이 *.conf 파일 확장명으로 지정되어야 합니다. 추가로 파일을 /etc/openvpn 디렉터리로 이동하십시오.

sudo mv /root/ata.ovpn /etc/openvpn/ata.conf 명령을 사용하여 구성 파일을 이동하십시오.

Moving and renaming the OpenVPN configuration file.

이제 디렉터리를 /etc/openvpn로 변경하고 파일이 있는지 확인하십시오.

cd /etc/openvpn
ls
Showing files in the /etc/openvpn directory

구성 파일이 /etc/openvpn 디렉터리에 있는 상태에서 systemctl 명령을 사용하여 OpenVPN 클라이언트 서비스를 시작하십시오. 서비스를 시작하려면 다음을 실행하십시오: sudo systemctl start [email protected].

OpenVPN 클라이언트 이름의 “ata” 부분은 사용된 구성 파일 이름에서 나옵니다. 파일 이름에 따라 다를 수 있습니다.

Starting the OpenVPN service.

OpenVPN 서비스가 실행 중인지 확인하려면 다음과 같이 systemctl status 명령을 사용하십시오.

sudo systemctl status [email protected]

아래와 같이 OpenVPN 서비스의 활성(실행 중) 녹색 상태가 표시됩니다.

Checking the OpenVPN service status.

마지막으로, 장치를 VPN 서비스에 자동으로 연결하도록 구성해야 합니다. VPN에 자동으로 연결하면 장치를 다시 시작해도 항상 OpenVPN이 실행됩니다.

sudo systemctl enable [email protected] 명령을 실행하면 OpenVPN 서비스가 시작되면 장치가 자동으로 VPN에 연결됩니다.

Enable the OpenVPN service.

결론

이 기사는 VPN 연결을 위한 Linux 킬 스위치를 설정하는 데 필요한 모든 단계를 안내했습니다. 킬 스위치는 연결이 예기치 않게 끊어질 경우 컴퓨터의 네트워크 연결을 차단하여 데이터 유출을 방지하고 온라인에서 안전하게 유지합니다.

Source:
https://adamtheautomator.com/linux-killswitch/