Linux FreeS/Wan의 설치
이번 과정에서 살펴볼 Linux FreeS/Wan은 프로젝트 형태로 구성된 그룹에서 만든 IPSec 프로토콜의 리눅스 구현으로 네트워크 프로토콜 스택의 IP 레벨에서 보안 서비스 기능을 제공합니다. 현재 릴리스 된 소스는 2.03 버전이며, 이와는 별도로 기존의 FreeS/Wan에 X.509와 Aggressive mode의 적용 그리고 기타 암호화 모듈 등 여러 패치를 결합시킨 버전업 형태의 Super FreeS/Wan도 릴리스 되어 있습니다.
먼저 FreeS/Wan의 설치에 대해 알아보겠습니다. FreeS/ Wan은 리눅스 커널 내부에서 커널의 기능으로서 동작하기 때문에 이를 적용시키기 위해 리눅스 커널을 먼저 수정해야 합니다(<화면 1>). 이때 IPSec 항목을 모듈로 설정하는 대신 커널에 포함시켜야 합니다. 커널 빌드시에는 커널의 대한 최적화를 수행시 정상적인 부팅이 안 될 경우도 있으니 주의를 해야 합니다.

<화면 1> IPSec 커널 적용
IPSec(FreeS/Wan)을 네트워킹 항목으로 커널에 빌드한 후 새로운 커널로 컴파일한 리눅스로 부팅을 합니다. FreeS/ Wan이 정상적으로 설치가 되면 물리적인 네트워크 인터페이스 외에 IPSec에서 사용할 가상의 인터페이스가 생기게 됩니다(<화면 2>).

<화면 2> IPSec이 적용된 네트워크 인터페이스
IPSec이 실행되기 위해서는 수정해야 할 파일은 다음과 같습니다.
◆ ipsec.conf : IPSec 환경구성 설정 파일
◆ ipsec.secrets : 키 교환을 위해 저장할 비밀 키 설정 파일
ipsec.conf 파일에는 크게 두 가지 타입의 항목이 있는데 IPSec의 일반적인 설정을 정의하는 ‘config’ 부분과 연결에 대한 설정을 정의하는 ‘conn’ 부분입니다. 첫 번째 타입인 config setup은 IPSec의 연결에 적용되는 전반적인 설정 옵션이 정의되어 있으며, 이 정보는 IPSec이 동작할 때 사용됩니다. 두 번째 타입인 conn은 네트워크 연결에 대한 구체적인 설정 항목들을 담고 있습니다.
먼저 양쪽 게이트웨이에서 IPSec이 제대로 작동하려면 IP 스푸핑 방지를 위한 rp_filter 서브시스템이 꺼져 있어야 합니다. /proc/sys/net/ipv4/conf/eth0/rp_filter의 값이 0(off)로 설정되어 있는지 확인해 보면 알 수 있습니다. 양쪽 게이트웨이에서 자동으로 이 값을 0으로 설정하기 위해 다음의 내용을 방화벽 스크립트 파일인 /etc/rc.d/init.d/iptables에 추가합니다.
◆ ipsec.conf 옵션 설명
interface=“ipsec0=eth0” IPSec을 사용하기 위한 인터페이스의 사용여부를 지정하는 옵션.
interface=%defaultroute : 디폴트 옵션
interface=“ipsec0=eth0 ipsec1=ppp0” : 추가적인 다른 인터페이스 이름
사용할 경우
plutoload=%search pluto가 작동할 때 어떤 연결을 자동으로 메모리에 올릴 것인지 지정하는 항목입니다.
plutostart=%search pluto가 시작할 때 어떤 연결을 자동으로 협상할 것인지 정합니다. %search는 모든 연결을 auto=start로 시작하게 됩니다.
conn 연결네임 connection name은 양쪽 게이트웨이의 ipsec.con에서 지정한 값이 동일해야 하며, 사용자가 임의의 연결명을 사용할 수 있습니다.
keyingtries=0 키 협상시 시도할 회수를 지정합니다. 0은 계속적인 시도를 의미합니다.
auth=ah 인증 헤더(AH)를 이용해 개별적으로 인증할 것인지, 또는 ESP(Encapsulated Security Payload) 서비스의 일부분으로서 인증을 포함할 것인지 선택하는 항목입니다.
◆ ipsec.secrets 항목 설명
ipsec.secrets에는 Pluto 데몬이 양쪽 게이트웨이 사이의 통신을 인증하기 위해서 사용하는 비밀 키가 설정되어 있습니다. 이 파일에는 두 가지 서로 다른 종류의 키를 설정할 수 있는데, 하나는 미리 공유된 PSK(Pre-Shared Key)이고 다른 하나는 RSA 방식의 키 사용입니다. 이 파일의 상태와 실행 권한을 체크하여 관리자인 root 이외의 사용자가 접근할 수 없도록 설정되어 있는지 확인해야 합니다.

<화면 3> iPSec.conf 파일 항목
사용할 키 방식 선택
PSK 방식
PSK를 사용하기 위한 키 생성은 다음과 같습니다.
[root@localhost etc]# ipsec ranbits 256 {키 생성할 비트수} > /tmp/ psk.txt {키 저장할 파일명}
이때 생성되는 키는 ipsec.secrets 파일에 다음의 형식으로 입력되게 됩니다.
192.168.1.117 192.168.1.159 “0x1d97ad25_3abd468b_282679c0_ a66e7b37_4a8bb390_cff 109ad _47bca942_e5267a9d”
PSK 사용시 생성되는 키가 시스템에 남아있는 경우에는 보안상 취약할 수 있으니 키 생성 후에는 바로 키를 삭제하거나 화면 출력의 형태로 사용해야 합니다. PSK를 사용시 ipsec.conf의 ‘authby=secret’로 변경되어야 합니다.

<화면 4> RSA 키 생성
RSA 키 방식
RSA 방식은 public 키와 secret 키 두 가지 형태로 키가 생성되므로 보안상 더욱 효과적으로 사용할 수 있습니다. 이 경우 ipsec.conf에 다음과 같은 추가 옵션으로 수정합니다.
◆ “authby=rsasig” : 양쪽 게이트웨이가 RSA 방식으로 인증함을 지정합니다.
◆ leftrsasigkey=<공개키> / rightrsasigkey=<공개키> : secret 키 파일과 결합되는 public 키를 이용해 상대에 대한 연결 설정시 사용할 각각의 public 키를 추가합니다.
RSA를 사용하기 위한 키 생성은 다음과 같습니다(<화면 5, 6>).
[root@localhost etc]# ipsec rsasigkey --verbose 1024 {키 생성할 비트수} > test.txt {키 저장할 파일명} 또는
[root@localhost etc]# ipsec newhostkey --output /etc/ipsec.secrets

<화면 5> iPSec.secrets 파일의 RSA 키 내용
생성된 각각의 public 키를 ipsec.secrets 파일에 추가해 인증 협상을 할 수 있는 환경을 만듭니다. 이 과정까지 마치면 IPSec 연결을 위한 기본적인 환경구성은 모두 끝나게 됩니다.
참고 사이트 : http://network.uos.ac.kr/~blhole/linux/ipsec/freeswan.htm
http://pcharley.wholsee.com/docs/ipsec/install.html#FREESWAN-INSTALL
검색 키워드 : frees/wan
참고 프로젝트 : http://openvpn.net/
작성자 : 이병석 (Grant@unitel.co.kr)
원본 : http://www.imaso.co.kr/

Comments List