IPsec은 네트워크 간 연결을 통하여 원격 네트워크에 전체 네트워크 (예, LAN이나 WAN)를 연결하도록 설정 가능합니다. 네트워크 간 연결을 위해서는 네트워크 상 한 시스템에서 원격 네트워크 상 다른 시스템으로 보내지는 정보를 처리하고 라우팅할 수 있도록 연결된 각 네트워크에 IPsec 라우터를 설정하셔야 합니다. 그림 6-2에서는 네트워크 간 IPsec 터널을 통한 연결을 보여줍니다.
됴표에서는 인터넷으로 분리된 2 별개의 LAN을 보여줍니다. 이 네트워크는 인터넷을 통해 보안 터널을 사용하여 연결을 인증하고 초기화하는데 IPsec 라우터를 사용합니다. 이러한 두 LAN 사이에서 전송 중인 패킷을 가로채어 암호를 해독하기 위해서는 brute-force (암호 알고리즘에 사용할 수 있는 모든 키를 전부 조사하는 방법)을 사용해야 합니다. IPsec 패킷의 처리, 암호화/암호 해독 및 라우팅 과정은 전적으로 IPsec 라우터에 의해 처리되므로 192.168.1.0/24 IP 상 컴퓨터에서 192.168.2.0/24 컴퓨터 간에 주고받는 통신 과정은 그 컴퓨터에서는 전혀 알 수 없습니다.
네트워크 간 연결에 필요한 정보는 다음과 같습니다:
외부에서 접근 가능한 전용 IPsec 라우터의 IP 주소
IPsec 라우터에서 처리하는 LAN/WAN의 네트워크 주소 범위 (예, 192.168.0.0/24 또는 10.0.1.0/24)
네트워크로 연결된 시스템에서 인터넷으로 데이터를 라우팅하는 게이트웨이 장치의 IP 주소
IPsec 연결을 식별하고 다른 장치나 연결 (예, ipsec0)로부터 이 IPsec 연결을 구분할 수 있게 해주는 고유 이름
고정 암호키 또는 racoon가 자동으로 생성한 암호키
연결을 초기화하고 세션 중 암호키를 교환하는데 사용되는 미리 공유된 인증키
예를 들어 LAN A와 LAN B가 IPsec 터널을 통하여 서로 연결하고자 한다고 가정합니다. LAN A의 네트워크 주소는 192.168.1.0/24 범위에 속하고 LAN B의 네트워크 주소는 192.168.2.0/24 범위를 사용한다고 합시다. LAN A의 게이트웨이 IP 주소는 192.168.1.254 이며 LAN B의 게이트위에 IP 주소는 192.168.2.254 입니다. 이 예시에서는 게이트웨이 장치가 IPsec 라우터로도 작동한다고 가정합니다. 게이트웨이는 두 개의 네트워크 장치를 사용하니다: eth0는 인터넷에 접속하는 외부에서 접근 가능한 정적 IP 주소에 할당되었으며, 반면 eth1은 각 노드 간에 LAN 패킷을 처리하고 전송하며 인터넷으로 패킷을 전송하기 위해 eth0로 연결하는 라우팅 지점으로 사용됩니다.
각 네트워크 간 IPsec 연결은 r3dh4tl1nux을 이미 공유된 키로 사용하며 A와 B의 관리자가 racoon 데몬이 자동으로 인증키를 생성하고 각 IPsec 라우터 간에 인증키를 공유하도록 동의했다고 가정합니다. LAN A의 관리자는 IPsec 연결을 ipsec0이라 이름 붙인 반면 LAN B의 관리자는 IPsec 연결을 ipsec1이라고 이름 붙였습니다.
다음은 LAN A에서 네트워크 간 IPsec 연결에 사용된 ifcfg 파일입니다. 이 예시에서 이 연결을 식별하기 위해 사용된 고유 이름은 ipsec1 입니다, 따라서 결과적으로 파일 이름은 /etc/sysconfig/network-scripts/ifcfg-ipsec1이 됩니다.
TYPE=IPsec ONBOOT=yes IKE_METHOD=PSK SRCGW=192.168.1.254 DSTGW=192.168.2.254 SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X |
이 연결은 부팅시 시작되도록 (ONBOOT=yes) 설정되었으며 이미 공유된 키 인증 방식 (IKE_METHOD=PSK)을 사용합니다. LAN A의 관리자는 LAN B의 게이트웨이(DSTGW=192.168.2.254)인 목적 게이트웨이 및 LAN A의 게이트웨이 IP 주소인 소스 게이트웨이(SRCGW=192.168.1.254)를 입력합니다. 그 후 관리자는 LAN B의 네트워크 범위(DSTNET=192.168.2.0/24) 및 소스 네트워크(SRCNET=192.168.1.0/24)를 입력합니다. 마지막으로 관리자는 LAN B에서 외부에서 접근 가능한 IP 주소인 (X.X.X.X) 목적 IP 주소를 입력해야 합니다.
다음은 이미 공유된 키 파일 (/etc/sysconfig/network-scripts/keys-ipsecX이라는 파일, 여기서 X는 LAN A에서는 0이며 LAN B는 1 입니다)으로서 양 워크스테이션이 상대방을 인증하는데 사용합니다. 이 파일의 내용은 동일해야 하며 루트 사용자만이 이 파일을 읽거나 작성할 수 있습니다.
IKE_PSK=r3dh4tl1nux |
![]() | 중요 | |
|---|---|---|
keys-ipsec0 파일을 루트 사용자만 읽고 수정할 수 있도록 하시려면, 파일을 만드신 후 다음 명령을 입력하십시오:
|
언제든지 인증키를 변경하시려면 양 IPsec 라우터에서 keys-ipsecX 파일을 수정하시기 바랍니다. 양 키가 동일해야 적절히 연결 가능합니다.
다음은 IPsec 연결에 사용된 /etc/racoon/racoon.conf 설정 파일입니다. 파일 마지막 부분의 include 부분은 IPsec 연결이 활성화될 때마다 자동으로 생성되기 때문에 현재 IPsec 채널에 연결된 경우에만 나타납니다.
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
sainfo anonymous
{
pfs_group 2;
lifetime time 1 hour ;
encryption_algorithm 3des, blowfish 448, rijndael ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf" |
다음은 원격 네트워크로 연결하는데 사용되는 설정 파일입니다. 파일의 이름은 X.X.X.X.conf이며 여기서 X.X.X.X를 원격 IPsec 라우터의 IP 주소로 대체하십시오. 이 파일은 IPsec 터널이 활성화되면 자동으로 생성되기 때문에 직접 수정하시면 안됩니다.
;
remote X.X.X.X
{
exchange_mode aggressive, main;
my_identifier address;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2 ;
}
} |
IPsec 연결을 시작하시기 전에 커널에서 IP fowarding 기능을 활성화하셔야 합니다. 쉘 프롬프트에서 루트로 로그인하신 후 IP forwarding 기능을 활성화하십시오:
/etc/sysctl.conf 파일을 열고 net.ipv4.ip_forward의 값을 1로 설정하십시오.
변경 사항이 적용되도록 다음 명령을 실행하십시오:
sysctl -p /etc/sysctl.conf |
Ipsec 연결을 시작하시려면 IPsec 라우터를 재부팅하시거나 각 라우터에서 루트로 로그인하신 후 다음 명령을 실행하시면 됩니다:
/sbin/ifup ipsec0 |
LAN A와 LAN B가 서로 통신할 수 있도록 연결이 활성화됩니다. IPsec 연결에서 ifup을 실행하여 호출된 초기화 스크립트에 의해 라우트가 자동으로 생성됩니다. 네트워크 상 라우트 목록을 보시려면, 다음 명령을 실행하십시오:
/sbin/ip route list |
IPsec 연결을 테스트하시려면 tcpdump 유틸리티를 외부에서 라우팅가능한 장치 (이 예시에서는 eth0)에서 실행하여 호스트 간 (네트워크 간)에 전송되는 네트워크 패킷이 IPsec을 사용하여 암호화되었는지 확인하시기 바랍니다. 예를 들어 LAN A의 IPsec 연결을 확인해보시려면 다음 명령을 입력하시기 바랍니다:패킷은 AH 헤더를 포함해야 하며 ESP 패킷으로 보여져야 하니다. ESP는 패킷이 암호화되었다는 것을 의미합니다. 예를 들면:
tcpdump -n -i eth0 host lana.example.com |
패킷은 AH 헤더를 포함해야 하며 ESP 패킷으로 보여져야 하니다. ESP는 패킷이 암호화되었다는 것을 의미합니다. 예를 들면 (백슬래쉬는 한 줄이 계속 된다는 것을 의미합니다):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \ lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \ (ipip-proto-4) |