4.6. Libreswan을 사용하여 VPN(Virtual Private Network) 보안
Red Hat Enterprise Linux 7에서는 Libreswan 애플리케이션에서 지원하는
IPsec
프로토콜을 사용하여VPN( Virtual Private Network )을 구성할 수 있습니다. Libreswan 은 Openswan 애플리케이션에 대한 연속이며, 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 커널에서 수행됩니다.
Libreswan 은NSS( 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
~]# yum install libreswan
Libreswan 이 설치되어 있는지 확인하려면 다음을 수행하십시오.
yum info 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
~]# systemctl stop ipsec
~]# rm /etc/ipsec.d/*db
그런 다음 새 NSS 데이터베이스를 초기화하려면
root
로 다음 명령을 입력합니다.
ipsec initnss
~]# ipsec initnss
Initializing NSS database
FIPS 모드에서만 작동하는 경우에만 NSS 데이터베이스를 암호로 보호해야 합니다. 이전 명령 대신 FIPS 모드의 데이터베이스를 초기화하려면 다음을 사용합니다.
certutil -N -d sql:/etc/ipsec.d
~]# 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 start ipsec
데몬이 현재 실행 중인지 확인하려면 다음을 수행하십시오.
systemctl status 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
~]# systemctl enable ipsec
ipsec
서비스를 허용하도록 모든 중간 및 호스트 기반 방화벽을 구성합니다. 방화벽에 대한 정보는 5장. 방화벽 사용 를 참조하십시오. 특정 서비스를 통과할 수 있도록 허용하십시오. Libreswan 에서 다음 패킷을 허용하도록 방화벽이 필요합니다.
인터넷 키 교환
(IKE) 프로토콜용UDP
포트 500 및 4500- 프로토콜 50:
Encapsulated Security Payload
(ESP)IPsec
패킷 인증된 헤더
(AH)IPsec
패킷의 경우 프로토콜 51
Libreswan 을 사용하여
IPsec
VPN을 설정하는 방법에 대한 세 가지 예를 제공합니다. 첫 번째 예는 두 개의 호스트를 함께 연결하여 안전하게 통신할 수 있도록 하는 것입니다. 두 번째 예는 두 사이트를 함께 연결하여 하나의 네트워크를 구성하는 것입니다. 세 번째 예는이 컨텍스트에서 대행사로 알려진 원격 사용자를 지원하는 것입니다.