정보 보안을 향한 항해

CentOS ipsec 실습 본문

보안 솔루션/보안 실습

CentOS ipsec 실습

금홍자 2021. 9. 30. 09:23

6.4. IPsec 호스트 간 설정
IPsec을 호스트 간 연결을 통하여 데스크탑이나 워크스테이션들을 연결하도록 설정 가능합니다. 이러한 유형의 연결은 각 호스트가 연결된 네트워크를 사용하여 양 호스트 사이에 보안 터널을 생성합니다. 호스트 간 연결에 필요한 요건은 각 호스트에 IPsec만 설정하면 됩니다. 호스트에서 IPsec 연결을 생성하기 위해서는 공중 네트워크 (예, 인터넷)와 Red Hat Enterprise Linux에 연결할 전용선만 있으면 됩니다.

연결을 생성하는 첫번째 단계는 각 워크스테이션의 시스템 정보와 네트워크 정보를 모으는 것입니다. 호스트 간 연결을 위해서는 다음과 같은 정보를 수집하셔야 합니다:

양 호스트의 IP 주소

IPsec 연결을 식별하고 다른 장치나 연결 (예, ipsec0)로부터 이 IPsec 연결을 구분할 수 있게 해주는 고유 이름

고정 암호키 또는 racoon가 자동으로 생성한 암호키

연결을 초기화하고 세션 중 암호키를 교환하는데 사용되는 미리 공유된 인증키

예를 들어 워크스테이션 A와 워크스테이션 B가 IPsec 터널을 통하여 연결하고자 한다고 가정합니다. foobarbaz 를 이미 공유된 키로 사용하여 연결하고자 하며 양 사용자가 racoon 데몬이 자동으로 인증키를 생성하여 각 호스트 간에 공유하는 것에 동의하여 이 연결을 ipsec0으로 이름 붙였다고 가정합니다.

다음은 워크스테이션 B와 호스트 간 IPsec 연결하기 위해 사용된 워크스테이션 A의 ifcfg 파일입니다 (이 예시에서 이 연결을 식별하기 위해 사용된 이름은 ipsec0이므로 결과적으로 파일 이름은 /etc/sysconfig/network-scripts/ifcfg-ipsec0이 됩니다):

 

 

DEVICE=ipsec0
DST=192.168.100.131
TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK



워크스테이션 A는 X.X.X.X 부분을 워크스테이션 B의 IP 주소로 대체하고, 워크스테이션 B는 X.X.X.X를 워크스테이션 A의 IP 주소로 대체합니다. 이 연결은 부팅시 시작되도록 (ONBOOT=yes) 설정되었으며 이미 공유된 키 인증 방식 (IKE_METHOD=PSK)을 사용합니다.

다음은 공유 키 파일 (/etc/sysconfig/network-scripts/keys-ipsec0)의 내용입니다. 이 파일은 양 워크스테이션이 상대방을 인증하는데 필요합니다. 이 파일의 내용은 양 컴퓨터에서 동일해야 하며 루트 사용자만이 이 파일을 읽거나 수정할 수 있습니다.

IKE_PSK=foobarbaz
중요 중요
 
keys-ipsec0 파일을 루트 사용자만 읽고 수정할 수 있도록 하시려면, 파일을 만드신 후 다음 명령을 입력하십시오:

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0
언제든지 인증키를 변경하시려면 양 워크스테이션에서 keys-ipsec0 파일을 수정하시면 됩니다. 양 키가 동일해야만 제대로 연결할 수 있습니다.

다음은 원격 호스트로 1 단계 연결하는데 사용되는 설정 파일의 예입니다. 이 파일의 이름은 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 연결이 초기화될때 생성된 기본 단계 1 설정 파일에는 Red Hat Enterprise Linux가 IPsec를 구현하는데 사용하는 다음과 같은 문구가 포함됩니다:

remote X.X.X.X
이 줄은 이 설정 파일에서 다음 부분을 IP 주소가 X.X.X.X인 원격 컴퓨터에만 적용하도록 지정합니다.

exchange_mode aggressive
윗 줄은 Red Hat Enterprise Linux의 기본 IPsec 설정으로서 여러 호스트 간에 IPsec 연결을 설정하는 동시에 연결 작업 부하를 낮춰주는 적극적 (aggressive) 인증 모드를 사용합니다.

my_identifier address
컴퓨터 인증시 사용할 식별 방식을 정의합니다. Red Hat Enterprise Linux는 IP 주소를 사용하여 컴퓨터를 식별합니다.

encryption_algorithm 3des
인증시 사용할 암호화 방식을 지정합니다. 3DES (Triple Data Encryption Standard)가 기본으로 사용됩니다.

hash_algorithm sha1;
컴퓨터 간에 1 단계 협상 단계에서 사용할 해시 알고리즘을 지정합니다. 기본값으로 SHA (Secure Hash Algorithm) 버전 1이 사용됩니다.

authentication_method pre_shared_key
컴퓨터 간 협상시 사용할 인증 방식을 지정합니다. Red Hat Enterprise Linux는 인증을 위해 기존 공유 키(pre-shared keys)를 기본으로 사용합니다.

dh_group 2
동적으로 생성된 세션키를 분배하는데 사용할 Diffie-Hellman 그룹 번호를 지정합니다. 1024 비트 그룹이 기본값입니다.

모든 IPsec 컴퓨터에서 /etc/racoon/racoon.conf 파일은 include "/etc/racoon/X.X.X.X.conf" 문장을 제외한 모든 다른 부분이 똑같아야 합니다. 이 문장 (및 이 문장이 언급하는 파일)은 IPsec 터널이 활성화된 경우에만 나타납니다. 워크스테이션 A에서 include 문장에 언급된 X.X.X.X는 워크스테이션 B의 IP 주소이며 워크스테이션 B에서는 그 반대입니다. 다음은 IPsec 연결이 활성화되었을때 전형적인 racoon.conf 파일을 보여줍니다.

# 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"


이 기본 racoon.conf 파일에는 IPsec 설정, 기존 공유 키 파일 및 인증서의 지정된 경로가 포함됩니다. sainfo anonymous 항목은 IPsec 컴퓨터 간 2 단계 SA — IPsec 연결 속성 (사용된 암호화 알고리즘 포함) 및 키 교환 방식을 설명합니다. 다음은 2 단계 항목을 정의하는 목록입니다:

sainfo anonymous
IPsec 인증서만 일치한다면 SA가 어느 컴퓨터와도 익명으로 연결을 초기화할 수 있다는 것을 의미합니다.

pfs_group 2
Diffie-Hellman 키 교환 프로토콜을 지정합니다. 이 프로토콜은 IPsec 연결 2 단계에서 IPsec 시스템이 상호 임시 세션키를 분배하는 방식을 결정합니다. 기본적으로 Red Hat Enterprise Linux는 Diffie-Hellman 암호키 교환 그룹의 그룹 2 (modp1024)를 사용하여 IPsec을 구현합니다. 그룹 2는 1024 비트 방식을 사용하기 때문에 침입자가 비밀키를 알아낸 경우에도 이전 IPsec 전송 내용을 암호 해독 불가능합니다.

lifetime time 1 hour
이 변수는 SA의 수명을 시간이나 데이터 바이트 수 단위로 지정합니다. Red Hat Enterprise Linux에서 IPsec 구현시 수명은 한시간이 기본입니다.

encryption_algorithm 3des, blowfish 448, rijndael
2 단계에서 사용할 암호화 방식을 지정합니다. Red Hat Enterprise Linux는 3DES, 448-bit Blowfish, 및 Rijndael(AES:Advanced Encryption Standard에 사용된 암호방식)을 지원합니다.

authentication_algorithm hmac_sha1, hmac_md5
인증에 사용할 해시 알고리즘을 열거합니다. 지원 가능한 모드는 sha1와 md5 해시 메시지 인증 코드 (HMAC) 입니다.

compression_algorithm deflate
IPCOMP (IP Payload Compression)을 위해 Deflate 압축 알고리즘을 사용하도록 지정합니다. 이 알고리즘을 사용하면 IP 데이터그램을 보다 빠르게 압축 전송할 수 있습니다.

연결을 시작하려면 워크스테이션을 재부팅하거나 각 호스트에서 루트로 로그인하신 후 다음 명령을 실행하시면 됩니다:

/sbin/ifup ipsec0
IPsec 연결을 검사하시려면 tcpdump 유틸리티를 실행하여 호스트 간 (네트워크 간)에 전송되는 네트워크 패킷이 IPsec을 사용하여 암호화되었는지 확인하시기 바랍니다. 패킷은 AH 헤더를 포함해야 하며 ESP 패킷으로 보여져야 하니다. ESP는 패킷이 암호화되었다는 것을 의미합니다. 예를 들면:

17:13:20.617872 pinky.example.com > ijin.example.com: \
    AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)