* psad 의 시작과 종료
psad 와 함께 제공되는 초기화 스크립트는 레드햇, 페도라, 슬랙웨어, 데비안, 맨드레이크, 젠투 리눅스 시스템에서 동작한다. 다수의 다른 세스템 데몬(syslog나 아파치)처럼 psad는 보통 init 스크립트를 통해 시작하고 종료한다.
psad가 init 스크립트를 통해 시작되면 주 psad 데몬, kmsgsd, psadwatch와 같은 세 개의 데몬도 시작된다. kmsgsd는 psad가 iptables 로그를 실시간으로 분석할 수 있게 /var/lib/psad/psadfifo 명명된 파이프로부터 모든 iptables 로그 메시지를 읽어 와서 별도의 파일인 /var/log/psad/fwdata 에 기록한다. 이를 통해 psad는 iptables 로그 메시지만을 포함하는 데이터 스트림을 제공받는다.
* psad는 설치 시에 시스템 syslog 데몬이 info 우선순위를 가지는 모든 커널 메시지(또는 syslog 용어로 kern.info 메시지)를 명명된 파이프 /var/lib/psad/psadfifo 에 기록하게 재설정한다.
psadwatchd 데몬은 단순히 psad와 kmsgsd 데몬이 실행 중인지 확인하고 그렇지 않으면 이들을 재시작한다. psadwatchd 는 두 데몬 중 하나를 재시작해야 하면 /etc/psad/psad.conf 파일에 있는 메일 주소로 경고 메일을 전송한다.
* 데몬 프로세스의 유일성
psad 가 시작되면 세 개의 psad 데몬은 각기 자신만의 프로세스 ID(PID)를 /var/run/psad 내의 파일에 기록한다. 명령 행에서 수동으로 데몬을 시작하면 해당 데이몬은 우선 ㅇ다른 인스턴스가 실행 중인지 확인하고 실행 중이라면 새로운 인스턴스는 바로 종료한다. 이를 통해 이미 존재하는 psad 프로세스를 그대로 유지할 수 있다.
* iptables 정책 설정
기본적으로 psad 는 로그 분석기다. psad는 자신이 설치된 시스템상의 iptables 정책이 기록 후 버리기 전략으로 설정됐다고 가정한다. 이는 iptables 가 네트워크의 동작을 위해서 꼭 필요한 패킷만을 수용하게 보장해주며 다른 모든 패킷은 기록 후 버린다. 포트 스캔, 백도어 프로그램을 위한 탐사, 시스템을 전복시키는 애플리케이션 명령(iptables 는 애플리케이션 계층 데이터를 필터링할 수 있다.), 기타 불법적인 것들이 수용 가능한 네트워크 트래픽 목족에서 제외되므로 이런 정책으로부터 나온 iptables 기록은 보통 전용 침입 탐지 시스템에 가치 있는 데이터를 제공할 수 있다.
psad 는 로컬 iptabels 정책이 INPUT 과 FORWARD 체인 모두에서 기본 LOG와 DROP 규칙으로 설정됐는지 확인해주는 자동 기법을 제공한다. 이 기법은 /usr/sbin/fwcheck_psad 에 위치한 전용 스크립트로(psad 실행 시 –no-fwcheck 명령 행 스위치를 주거나 psad 가 별도의 syslog 서버에서 실행 중이지 않는 한) psad가 시작할 때 실행한다. fwcheck_psad 스크립트는 IPTables::Parse 펄 모듈을 사용해 로컬 iptables 정책의 표현(representation)을 얻어오며 LOG와 DROP 규칙이 포함됐는지 알아보기 위해 이를 해석한다. 포함돼 있지 않다면 psad 는 iptables 정책이 알맞게 설정되지 않았다는 것을 알려주기 위해 설정 경고 메일을 전송한다.
예를 들어 현재 어떤 iptables 규칙도 인스턴스화돼있지 않다면 fwcheck_psad 는 경고 메일을 생성한다.
* iptables 정책은 매우 복잡할 수 있기 때문에 정책이 로그와 버리기 전략을 가지는지 결정하는데에 IPTables::Parse 모듈의 구문 분석 기능이 항상 충분하지는 않다. 검사가 실패하더라도 psad 는 여전히 동작할 수 있으며, psad 의 효과는 iptables 가 기록하는 패킷의 유형에 따라 달라진다. 실제로 SMB 와 같은 프로토콜은 필요 없는 내용을 너무 많이 포함하기 때문에 기록하기에 부적절하며, 이런 프로토콜을 통해 전송된 패킷은 주로 LOG 규칙과 일치될 수 있기 전에 받아들이거나 버린다. fw_check_psad 가 올바로 구문 분석할 수 없을 정도로 복잡한 iptables 정책을 실행 중이라면 /etc/psad/psad.conf 의 ENABLE_FW_LOGGING_CHECK 변수를 N으로 설정해서 이 검사를 비활성화할 수 있다.
* syslog 설정
psad를 위해 iptables 정책 설정에 반드시 필요한 것을 잘 이해했다면 이제 psad가 iptables 로그 메시지를 얻는 과정을 살펴보자. 패킷이 iptables 내에서 LOG 규칙에 매칭되면 커널은 커널 로깅 데몬인 klogd 를 통해 이 사실을 보고한다. 이렇게 전달된 커널 로그 메시지는 보통 보고서 파일에 기록되기 위해 명명된 파이프나 버클리 소켓 인터페이스를 통한 별도의 시스템으로 전달된다. 이는 모두 syslog 데몬이 제공하는 기능과 syslog 이 어떻게 설정됐는지에 따라 달라진다.
syslogd와 syslog-ng 데몬은 psad와 호환되며, psad는 metalog도 제한된 방식으로 지웒ㄴ다. syslogd와 syslog-ng 는 명명된 파이프로 로그 메시지를 기록할 수 있으며, psad 는 이를 이용하기 위해 모든 kern.info 로그 메시지가 명명된 파이프 /var/lib/psad/psadfifo 에 기록되게 설정한다. 이곳으로 전달된 로그 메시지는 kmsgsd 가 이용한다. kmsgsd 는 psadfifo 를 통해 syslog 메시지를 받으면 이 syslog 메시지가 iptables 에 의해 생성됐다는 것을 보장하기 위해 두 개의 부분 문자열(IN= 과 OUT=)을 포함하는지 확인한다. 메시지가 이 검사를 통과하면 kmsgsd는 이를 psad 가 볼 수 있게 파일 /var/log/psad/fwdata 에 기록한다. 많은 kern.info syslog 메시지가 iptables 와 아무런 관계도 없는 커널 일부에 의해 생성될 수 있으며, kmsgsd 는 iptables 메시지만이 psad 에 의해 분석되게 보장한다.
* syslogd
syslogd 가 설치된 시스템에서 psad 가 실행 중이라면 설치 시 /etc/syslog.conf 설정파일에 다음과 같은 내용이 추가된다. 이는 syslogd 가 kern.info 메시지를 /var/lib/psad/psad 에 기록하게 설정한다.
* syslog-ng
반명 로컬 시스템의 syslog 데몬이 syslog-ng 라면 설치 시 /etc/syslog-ng/syslog-ng 설정파일에 추가된다.
* whois 클라이언트
마르코 디트리(Marco d’Itri)가 만든 훌륭한 whois(후이즈) 클라이언트가 psad 소스와 함께 제공된다. 이 클라이언트는 주어진 IP 주소에 대해 거의 항상 올바른 넷블록(netblock)을 질의하며, psad는 (–no-whois 명령 행 스위치를 주지 않는 한) IP 주소 소유 정보를 질의해서 메일 경고에 포함시키기 위해 이 클라이언트를 이용한다. 이런 정보를 가지면 스캔이나 기타 다른 공격이 탐지된 네트워크의 관리자 식별 과정이 단순해진다.