Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.6. Libreswan을 사용하여 VPN(Virtual Private Network) 보안

Red Hat Enterprise Linux 7에서는 Libreswan 애플리케이션에서 지원하는 IPsec 프로토콜을 사용하여VPN( Virtual Private Network )을 구성할 수 있습니다. LibreswanOpenswan 애플리케이션에 대한 연속이며, Openswan 문서의 많은 예제는 Libreswan 과 교환 가능합니다. NetworkManager IPsec 플러그인을 NetworkManager-libreswan 이라고 합니다. GNOME Shell 사용자는 NetworkManager-libreswan-gnome 패키지를 설치해야 하며 NetworkManager-libreswan 을 종속성으로 사용해야 합니다. NetworkManager-libreswan-gnome 패키지는 선택적 채널에서만 사용할 수 있습니다. 추가 리포지토리 활성화 및 선택적 리포지토리를 참조하십시오.
VPN용 IPsec 프로토콜은 자체적으로 인터넷 키 교환 (IKE) 프로토콜을 사용하여 구성됩니다. IPsec과 IKE라는 용어는 서로 바꿔 사용할 수 있습니다. IPsec VPN은 IKE VPN, IKEv2 VPN, XAUTH VPN, Cisco VPN 또는 IKE/IPsec VPN이라고도 합니다. L2TP( Level 2 Tunneling Protocol )을 사용하는 IPsec VPN 변형은 일반적으로 선택적 채널 xl2tpd 애플리케이션이 필요한 L2TP/IPsec VPN이라고 합니다.
Libreswan 은 Red Hat Enterprise Linux 7에서 사용 가능한 오픈 소스 사용자 공간 IKE 구현입니다. IKE 버전 1 및 2는 사용자 수준 데몬으로 구현됩니다. 또한IKE 프로토콜 자체도 암호화되어 있습니다. IPsec 프로토콜은 Linux 커널에 의해 구현되며 Libreswan 은 VPN 터널 구성을 추가 및 제거하도록 커널을 설정합니다.
IKE 프로토콜은 UDP 포트 500 및 4500을 사용합니다. IPsec 프로토콜은 프로토콜 번호 50이 있고, 프로토콜 번호 51인 인증된 헤더 (AH)와 프로토콜 번호 51인 Encapsulated Security Payload (ESP)라는 두 가지 프로토콜로 구성됩니다. AH 프로토콜은 사용하지 않는 것이 좋습니다. AH 사용자는 null 암호화를 사용하여 ESP 로 마이그레이션하는 것이 좋습니다.
IPsec 프로토콜에는 터널 모드(기본값) 및 전송 모드 의 두 가지 작동 모드가 있습니다. IKE 없이 IPsec을 사용하여 커널을 구성할 수 있습니다. 이를 Manual Keying이라고 합니다. ip xfrm 명령을 사용하여 수동 키 처리를 설정할 수 있지만 보안상의 이유로 강력히 권장되지 않습니다. netlink를 사용하여 Linux 커널과 Libreswan 인터페이스. 패킷 암호화 및 암호 해독은 Linux 커널에서 수행됩니다.
LibreswanNSS( Network Security Services ) 암호화 라이브러리를 사용합니다. libreswan 및 NSS는 모두 Federal Information Processing Standard (FIPS)PublicationRuntimeConfig와 함께 사용하도록 인증되었습니다.
중요
Libreswan 및 Linux 커널에서 구현되는 IKE/IPsec VPN은 Red Hat Enterprise Linux 7에서 사용할 수 있는 유일한 VPN 기술입니다. 이러한 위험에 대해 이해하지 않고 다른 VPN 기술을 사용하지 마십시오.

4.6.1. Libreswan 설치

Libreswan 을 설치하려면 root 로 다음 명령을 입력합니다.
~]# yum install libreswan
Libreswan 이 설치되어 있는지 확인하려면 다음을 수행하십시오.
~]$ yum info libreswan
Libreswan 의 새 설치 후 설치 프로세스의 일부로 NSS 데이터베이스를 초기화해야 합니다. 새 데이터베이스를 시작하기 전에 다음과 같이 이전 데이터베이스를 제거합니다.Before you start a new database, remove the old database as follows:
~]# systemctl stop ipsec
~]# rm /etc/ipsec.d/*db
그런 다음 새 NSS 데이터베이스를 초기화하려면 root 로 다음 명령을 입력합니다.
~]# ipsec initnss
Initializing NSS database
FIPS 모드에서만 작동하는 경우에만 NSS 데이터베이스를 암호로 보호해야 합니다. 이전 명령 대신 FIPS 모드의 데이터베이스를 초기화하려면 다음을 사용합니다.
~]# certutil -N -d sql:/etc/ipsec.d
Enter a password which will be used to encrypt your keys.
The password should be at least 8 characters long,
and should contain at least one non-alphabetic character.

Enter new password:
Re-enter password:
Libreswan 에서 제공하는 ipsec 데몬을 시작하려면 root 로 다음 명령을 실행합니다.
~]# systemctl start ipsec
데몬이 현재 실행 중인지 확인하려면 다음을 수행하십시오.
~]$ systemctl status ipsec
* ipsec.service - Internet Key Exchange (IKE) Protocol Daemon for IPsec
   Loaded: loaded (/usr/lib/systemd/system/ipsec.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2018-03-18 18:44:43 EDT; 3s ago
     Docs: man:ipsec(8)
           man:pluto(8)
           man:ipsec.conf(5)
  Process: 20358 ExecStopPost=/usr/sbin/ipsec --stopnflog (code=exited, status=0/SUCCESS)
  Process: 20355 ExecStopPost=/sbin/ip xfrm state flush (code=exited, status=0/SUCCESS)
  Process: 20352 ExecStopPost=/sbin/ip xfrm policy flush (code=exited, status=0/SUCCESS)
  Process: 20347 ExecStop=/usr/libexec/ipsec/whack --shutdown (code=exited, status=0/SUCCESS)
  Process: 20634 ExecStartPre=/usr/sbin/ipsec --checknflog (code=exited, status=0/SUCCESS)
  Process: 20631 ExecStartPre=/usr/sbin/ipsec --checknss (code=exited, status=0/SUCCESS)
  Process: 20369 ExecStartPre=/usr/libexec/ipsec/_stackmanager start (code=exited, status=0/SUCCESS)
  Process: 20366 ExecStartPre=/usr/libexec/ipsec/addconn --config /etc/ipsec.conf --checkconfig (code=exited, status=0/SUCCESS)
 Main PID: 20646 (pluto)
   Status: "Startup completed."
   CGroup: /system.slice/ipsec.service
           └─20646 /usr/libexec/ipsec/pluto --leak-detective --config /etc/ipsec.conf --nofork
Libreswan 이 시스템을 시작할 때 시작되도록 하려면 root 로 다음 명령을 실행합니다.
~]# systemctl enable ipsec
ipsec 서비스를 허용하도록 모든 중간 및 호스트 기반 방화벽을 구성합니다. 방화벽에 대한 정보는 5장. 방화벽 사용 를 참조하십시오. 특정 서비스를 통과할 수 있도록 허용하십시오. Libreswan 에서 다음 패킷을 허용하도록 방화벽이 필요합니다.
  • 인터넷 키 교환 (IKE) 프로토콜용 UDP 포트 500 및 4500
  • 프로토콜 50: Encapsulated Security Payload (ESP) IPsec 패킷
  • 인증된 헤더 (AH) IPsec 패킷의 경우 프로토콜 51
Libreswan 을 사용하여 IPsec VPN을 설정하는 방법에 대한 세 가지 예를 제공합니다. 첫 번째 예는 두 개의 호스트를 함께 연결하여 안전하게 통신할 수 있도록 하는 것입니다. 두 번째 예는 두 사이트를 함께 연결하여 하나의 네트워크를 구성하는 것입니다. 세 번째 예는이 컨텍스트에서 대행사로 알려진 원격 사용자를 지원하는 것입니다.