패킷펜스(PacketFence)를 이용한 NAC에는 오픈소스 커뮤니티가 해답이다. 그러나 이는 커맨드라인에서 이루어지고 또 수많은 커맨드가 작동하기 때문에 매우 힘든 작업이다.
어떻게 시작하나?
우선, 처음으로 해야 할 일은 우분투 서버 6.06LTS를 설치하는 것이다. 이는 2011년까지 지원된다는 희소식도 있으니 릴리스 되지 않은 보안 수정에 대한 걱정은 필요 없다.
설치는 반드시 텍스트로만 해야한다. 우분투를 사용하기에 sudo커맨드가 많이 필요할 것이다. Root 패스워드가 없으니 대신 여러분이 임의로 만들어 사용할 수 있다. 하지만 우분투와 sudo를 사용 하면서, 특정 어플리케이션 설치를 할 때 문제가 많이 발생하여 항상 root 패스워드를 만드는 것이 좋다.
Root 패스워드를 만들기 위해서는 sudo passwd를 돌리고 ‘root password’라고 치면 된다. 이렇게 하여 root 패스워드를 만들고 나면, 설치 준비 첫 단계는 완료다.
SSH를 이용하여 원격 admin을 셋업하는 것이 첫 번째 일이다. 이 경우, 서버는 여러분이 설치를 원하는 서버들과는 다른 서버들이 있을 것이다. 이 경우에, sudo apt-get install ssh openssh-server 커맨드를 친다. 이렇게 하는 가장 큰 이유는 구글과 같은 것이 필요할 때, 서버들 사이에서 쉽게 스위칭 할 수 있기 때문이다. Ssh가 설치 되었으면, 네트워크에 접속되어 있고, SSH가 설치된 우분투 서버에 로그인 한다.
소프트웨어 설치를 위한 사전준비
인스톨 하기 위해 apt-get를 친다. 물론, 그 전에 적당한 소프트웨어를 찾을 수 있는 소스를 편집해야 한다.
오리지널 소스리스트 백업 :
sudo cp /etc/apt/sources.list /etc/apt/sources.list.BACKUP
이제, source.list 파일에 있는 콤멘트 없는 리포지토리 리스트 전체와 소스 리스트로 가야 한다. /etc/apt로 가서, source.list 파일을 열고, #이 있는 전체를 지우거나 아래 커맨드를 친다.
sudo sed -i -e s/# deb/deb/g /etc/apt/sources.list
그리고 sudo apt-get update 커맨드로 업데이트 한다.
애플리케이션 설치 전 마지막 작업은 소스를 컴파일 해야 한다. 우분투 6.06 서버는 컴파일을 할 수 없으므로, 서버가 컴파일 할 수 있게 만들어야 한다.
sudo apt-get install build-essential
이제, 설치 준비가 다 되었다.
Snort
먼저 침입 감지 패키지를 설치해야 한다. Snort는 리눅스 표준이며 패킷펜스에서 추천하고 있다.
sudo apt-get install snort
sudo /etc/init.d/snort 커맨드를 쳐서 Snort를 중단 할 필요가 있다. 시스템이 부팅 하는 동안 Snort는 작동 할 필요가 없다는 것을 확실히 해 두기 바란다. 그렇지 않으면, 패킷펜스가 시작하지 않는다. 이렇게 하기 위해서, update-rc.d 커맨드를 사용한다. Sudo update-rc.d-f snort remove. 이렇게 하면 rc.d에서 Snort가 제거 되었다.
MySQL
Sudo pat-get install mysql-server 커맨드를 사용해서 MySQL을 설치한다. 이전에 말한 root 패스워드를 사용해야 하는데, sudo passwd를 치고 root 패스워드를 두 번 친다. 이렇게 하면, pseudo-root유저처럼 로그 할 수 있다.
이제 해야 하는 일은 MySQL의 패스워드를 변경하는 것이다. 디폴트 패스워드는 비어있다. 이것은 안전하지 않고 패킷펜스는 MySQL의 root 패스워드를 요구한다. 그래서 mysql –u root –p를 치고 [Enter]를 친다. 그러면 프롬프트에 mysql> 이라고 된다. 그러면 이제 커맨드를 탄다.
SET PASSWORD FOR root@localhost=PASSWORD('NEWPASSWORD');
NEWPASSWORD는 MySQL의 root유저에서 사용할 새로운 패스워드이다.
Apache and PHP
설치 단계는 다음과 같다.
sudo apt-get install apache2 libapache2-mod-proxy-html
이러면, Apach와 Proxy 모듈이 설치되었고, 이제 PHP를 설치하자.
sudo apt-get install libapache2-mod-php5 php-pear php5-mysql php5-gd
이렇게 하면 필요한 PHP의 모든 것을 설치 할 것이다.
이제 부팅 시 Apache를 보호하기 위하여, Apache 서버를 중단해야 한다.
먼저, sudo /etc/init.d/apache2 stop을 돌리면, Apache가 중단 되고, sudo update-rc.d-f apache2 remove를 돌려서 rc.d 리스트에서 Apache를 제거 한다.
Perl and Perl 모듈
sudo apt-get install perl-suid libterm-readkey-perl libconfig-inifiles-perl libnet-netmask-perl
그리고,
sudo apt-get install libparse-recdescent-perl libnet-rawip-perl libtimedate-perl libwww-perl
패킷펜스
마지막으로 패킷펜스 애플리케이션을 설치해야 한다. 인스톨을 위해 apt-get을 사용 할 수는 없으나 소스를 다운 받아서 설치하면 된다. 최근에 릴리스 된 버전은 안정적이어서 wget 애플리케이션을 사용하면 된다. 만약, wget이 안되면 sudo apt-get install wget하면 된다.
다운로드 주소는:
http://downloads.sourceforge.net/PacketFence/PacketFence-1.6.2.tar.gz,
이며,
sudo cd /usr/local/sudo wget http://downloads.sourceforge.net/PacketFence/PacketFence-1.6.2.tar.gz
tar파일을 풀기 위해서는,
sudo tar xvzf PacketFence-1.6.2.tar.gz
이렇게 하면 /usr/local/pf 디렉토리가 생성 될 것이다. /pf 디렉토리로 가서 인스톨러를 시작하면 된다.
Sudo ./installer.pl
이제 여러분은 설치 과정에서 많은 질문이 있을 것이다. 많은 부분은 디폴트로 진행 될 것이다. MySQL의 root 패스워드를 기억해두기 바란다. 또한 페킷펜스 인스톨러는 여러분이 필요한 데이터베이스를 생성 할 수 있게 한다. 패킷펜스는 여러분이 잘 아는 phpMyAdmin을 사용한 데이터베이스 생성은 지원 하지 않을 것이다.
프로세스의 마지막 단계를 이행하기 전에, SSL Certificate를 생성해야 한다.
cd /tmpopenssl req -new > PacketFence.csropenssl rsa -in privkey.pem -out server.keyopenssl x509 -in PacketFence.csr -out server.crt -req server.key -days 365mv server.crt /usr/local/pf/conf/ssl/mv server.key /usr/local/pf/conf/ssl/rm -f PacketFence.csr privkey.pem
이것은 여러분 장비에 깔끔한 서티를 설치 할 것이다.
설치가 완료 되면, configurator.pl을 돌려서 여러분이 원하는 타입의 시스템을 기본적으로 설정할 수 있으며, 제공 되는 것은 다음과 같다.
1. Test mode
2. Registration
3. Detection
4. Registration & Detection
5. Registration, Detection & Scanning
6. Session-based Authentication
본격적인 시동 전에 테스트 모드에서의 점검을 추천한다.
수정사항
우분투 서버에서 /usr/bin/apache2을 찾는 것 대신에 /usr/bin/http[를 찾기 때문에 패킷펜스의 시작 스크립트는 Apache의 startup 스크립트를 찾을 수가 없었다.
이 부분의 수정을 위해서, pf.conf파일에서 [service]를 추가해야 한다. 사용하는 에디터에서 /usr/local/pf/conf/pf.conf파일을 열고 파일 마지막에 아래 내용을 추가한다.
[services]httpd=/usr/sbin/apache2
그런 다음, /usr/local/pf/conf/templates/httpd.conf 파일을 열고,
ServerRoot /usr/lib/apache2 을 추가한다.
그리고,
LoadModule php4_module modules/libphp4.so를
LoadModule php4_module /usr/lib/apache2/modules/libphp4.so
에 수정한다.
수정해야 하는 라인이 상당히 많이 있다. 우분투에서 Apache의 인스톨을 할 때, 필요한 모든 모듈은 /usr/lib/apache2/module structure를 반영해야 한다.
따라서 /usr/local/pf/conf/templates/httpd.conf 전체 파일은 이 경로를 반영해야 한다. 또, 당신은 php5 모듈을 위해서 라인uncomment가 필요하고 php4를 위해 comment가 필요하다.
패킷펜스 시작
/usr/local/pf/bin/start 커맨드의 구동에 의한 적절한 시작이 되는 것을 확인해라. 다음과 같은 것을 볼 수 있다.
Checking configuration sanity...service
그런 다음, 패킷펜스 시스템을 /usr/local/pf/bin/stop 커멘드를 사용하여 중단시켜라.
Startup 스크립트를 인스톨하여 수정 할 수 있고, rc.d 시스템은 조심해라.
sudo cp /usr/local/pf/PacketFence.init /etc/init.d/PacketFencesudo chmod 755 /etc/init.d/PacketFencesudo update-rc.d PacketFence defaults
시스템 재시동 커맨드
sudo /etc/init.d/PacketFence start
이제 시스템이 구동 될 것이다.
Log in
브라우저를 열고 패킷펜스 서버에 1443 포트를 추가하면 어드레스는 https://192.168.1.29:1443이 될 것이다. 로그인 스크린에 보일 것이며, admin 이름과 패스워드를 생성하면 된다.
