어느 정도 개인서버를 운영하다 보면 초기에는 각종 데몬의 설치 및 설정이 까다로운 문제로 여겨지지만 일정 시간이 흐르게 되면 다른 무엇보다 웹서버의 보안이 가장 문제로 다가옵니다. 서버 플랫폼의 종류에 관계없이 계속되는 봇들의 해킹시도와 악성 스크립트 삽입, 대량의 스팸 댓글등은 개인 서버 운영에 있어서 뾰족한 해결 방법도 없이 속수무책으로 당하게 됩니다. 물론 고가의 상용 보안 프로그램이 존재하지만 개인 서버에서 사용하기에는 배보다 배꼽이 더 큰 상황이 연출됩니다.

이러한 문제점을 조금이나마 해결하기 위해 사용할 수 있는 Apache 웹방화벽모듈이 바로 mod_security2 입니다. 오픈소스로 출발하여 지금은 상용으로 판매되고 있지만 무료로 제공되는 버전이 존재하며 여러 곳에 사용되기 때문에 많은 정보를 얻을 수 있습니다.

이 포스트에서는 설치와 설정에 대해 다루지는 않습니다. 한국인터넷 진흥연구원에서 더욱 자세한 소개와 설치 메뉴얼을 제공하고 있습니다. Linux와 Windows Apache 버전 모두를 지원하며 여러 차단 샘플룰을 제공하고 있습니다. 현재는 대부분의 Windows APM 패키지에서 제공하고 있으나 별도로 설치를 원하는 분은 여기에서 메뉴얼을 참고 하시면 됩니다.

Apache 로그 지원뿐만 아니라 별도의 로그도 생성하여 자세한 공격 패턴을 파악할 수 있습니다. 아래 스크린샷은 제 서버의 Apache 로그에 표시된 mod_security2 차단 로그들 입니다. 계속되는 PHP, SQL Injection과 악성스크립트 삽입등을 방지하기 위해 반드시 설치해야 할 Apache 모듈입니다.

APM을 구성하게 되면 느린 PHP의 실행속도를 개선하기 위해 Zend Optimizer를 필수로 사용하게 됩니다. 이 외에 eAccelerator 모듈을 사용하면 PHP 사용으로 인한 서버의 부하를 줄이고 PHP 실행 속도를 조금 더 개선할 수 있습니다. 이 포스트에서는 Windows Apache에서 eAccelerator를 설치하고 적용하는 방법에 대해 간략히 알아보겠습니다.

Windows Apache에서 사용할 수 있는 eAccelerator는 여기에서 찾을 수 있습니다. 반드시 사용하고 있는 PHP 버전에 맞는 eAccelerator를 다운 받아야 합니다. eAccelerator 다운과 함께 095_final_useful _files.zip 또한 같이 다운을 받습니다. 다운로드 후에 eAccelerator.dll 파일은 PHP가 설치된 디렉토리 하위에 존재하는 /bin/ext 아래로 이동합니다. 그리고 압축파일을 임의의 디렉토리에 해제하고 그 안에 있는 control.php 파일을 웹으로 접속할 수 있는 위치에 이동합니다. (예를 들어 루트디렉토리)

그 후 control.php 파일을 텍스트 편집기로 열어 아래 사항을 수정합니다.

/** config **/
$user = “admin“; contol.php에 접속할 아이디를 입력합니다.
$pw = “eAccelerator“; 사용할 패스워드를 입력합니다.
/** /config **/

모든 파일의 이동 후에는 php.ini를 텍스트 편집기로 열어 제일 하단에 다음의 내용을 추가합니다. 형광색으로 표시된 부분은 슬래쉬의 방향에 주의해서 (역슬래쉬입니다.) 정확한 경로를 입력합니다.

[eAccelerator]
eaccelerator.shm_size=”64캐쉬로 사용될 메모리 용량 (단위는 메가바이트)
eaccelerator.cache_dir=”c:\apache\temptemp 디렉토리 설정
eaccelerator.enable=”1″ eAccelerator 사용유무
eaccelerator.optimizer=”1″ Optimize 기능 사용유무
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”3600″ 캐쉬 파일의 만료 시간
eaccelerator.shm_prune_period=”1800″
eaccelerator.shm_only=”1″
eaccelerator.compress=”1″ 캐쉬 파일 압축 유무
eaccelerator.compress_level=”9″ 압축 정도
eaccelerator.content = “shm_and_disk”
eaccelerator.allowed_admin_path = “c:\apache\htdocs\control.phpcontrol.php가 위치한 절대 경로

수정완료 후에는 Apache를 재시작하여 설정사항을 적용합니다.

재시작후에는 웹브라우저로 control.php에 접속하여 본인이 지정한 아이디와 암호로 접속을 하면 관리자 페이지에 접속할 수 있습니다. 이 페이지에서는 별도의 php.ini의 수정없이 캐쉬파일을 지우거나 옵션을 변경할 수 있습니다.

마지막으로 제대로 작동을 하고 있는지 확인하려면 phpinfo() 명령어로 PHP 정보페이지에 접속하면 됩니다. 모듈이 제대로 작동하고 있다면 다음과 같이 표시됩니다.

hMailServer의 여러 기능중 안티 스팸 서비스를 연동하거나 바이러스 첨부파일을 검사해서 차단하는 안티 바이러스 기능은 매우 유용하고 꼭 필요한 기능입니다. 안티 스팸 기능은 기본적으로 제공되는 외부 서비스를 체크해주는 것만으로도 큰 효과를 볼 수 있습니다. 그러나 안티 바이러스 기능은 별도의 백신 프로그램을 설치 하여야 합니다. 프리웨어부터 상용 프로그램까지 수 많은 백신 프로그램이 있지만 이 포스트에서는 오픈소스이며 서버군 Windows 까지 지원하는 ClamWin을 설치하고 hMailServer에서 이용하는 방법을 알아보겠습니다.[1]

최신버전의 다운로드는 여기에서 받을 수 있으며, 인스톨러를 지원하므로 손쉽게 설치할 수 있습니다. ClamWin을 설치한 후에는 hMailServer 관리자로 접속하여 스크린샷의 옵션대로 설정합니다. (ClamWin에서 반드시 설정해야 할 옵션은 없습니다.)

두 가지 옵션 중 원하는 옵션으로 설정을 하고 Save로 설정을 저장하면 송수신 되는 모든 메일의 첨부파일을 ClamWin으로 검사합니다.

  1. ClamWin은 오픈소스로 개발되는 리눅스용 백신 ClamAV를 기반으로 제작된 Windows 백신 프로그램입니다. 바이러스 DB도 매우 활발히 업데이트 되고 있으며 서버군 Windows도 지원하는 장점이 있습니다. 단 실시간 감시 기능이 없으나 서버에서는 컴퓨터 자원을 낭비하지 않고 필요할 때만 실행할 수 있어 서버에서 사용하기에 적합합니다. [back]