Category Archives: 리눅스서버관리

mod_spamhaus를 이용하여 스패머의 아파치 접근을 막아보자.

웹 서비스를 운영하는 차원에서 보면 스패머들은 매우 골치 아픈 문제입니다. 하지만 자세히 보면 이러한 공격이 특정한 패턴을 가지고 있지 않습니다.

그래서 더욱 필터링 하기가 어렵습니다. 대부분의 아이피를 조회해보면 특정 위치가 아닌 거의 전세계에서 동시에 들어오고, 그 방식도 매우 다채롭습니다.

이러한 공격에는 대부분 공격자의 명령에 따라 다른 시스템을 공격하는 좀비 PC들이 작업을 하게 됩니다.

하지만 이번에 소개해 드릴 mod_spamhaus를 Apache 웹서버에 설치하게 되면 SpamHaus에서 제공하는 스패머 블랙리스트와 대조하여 블랙리스트에 올라가 있는 시스템의 접근을 차단하게 됩니다.

보통은 sendmail과 같은 메일시스템(MTA)에 필터로 등록하여 사용하곤 하는데 이런식으로 사용하는것도 좋은 생각인것 같습니다.

스팸메일을 보내는데 이용되는 좀비PC나 스팸글을 등록하는 좀비PC나 같은 녀석들이 재활용 될테니깐요.

http://sourceforge.net/projects/mod-spamhaus/ 에서 관련 소스를 받아 설치합니다.

[code]tar -zxvf mod-spamhaus-0.7.tar.gz
cd mod-spamhaus
make
make install[/code]
apxs2를 찾을수 없다는 에러가 난다면 MakefileAPXS값을 적절한 값으로 변경해 줍니다. 저의 경우에는 apxs로 바꾸었습니다.

설치가 끝나게 되면 자동으로 httpd.conf 설정 파일에 다음의 내용이 추가 됩니다. 혹시 없다면 추가해 줍니다.

[code]LoadModule spamhaus_module   /usr/lib/apache2/modules/mod_spamhaus.so[/code]
다음으로 다음과 같은 설정을 하여 줍니다.

[code]<IfModule mod_spamhaus.c>
MS_METHODS POST,PUT,OPTIONS,CONNECT
MS_WhiteList /etc/spamhaus.wl
MS_CacheSize 256
</IfModule>[/code]
실제로 /etc/spamhaus.wl 파일을 생성해 두고 이 안에는 신뢰할수 있는 ip주소를 입력하시면 bypass 하게 됩니다.

이제 아파치를 재시작 하시면 됩니다. 이제부터 POST, PUT, OPTIONS, CONNECT 명령에 대해 spamhaus에 블랙리스트로 등록되어있는지를 확인하게 됩니다.

캐시 사이즈에 맞추어 캐시도 하게 됩니다. 적절히 설정하시면 됩니다.

참고 :
http://sourceforge.net/projects/mod-spamhaus/
http://www.howtoforge.com/how-to-block-spammers-with-apache2-mod_spamhaus-debian-etch
http://www.spamhaus.org/

[BIND] DNS Round Robin Load Balancing

사업이 번창하여 서버를 증설해야 하는 상황이지만 L4 스위치와 같은 로드밸런싱 장비가 부담이 된다면?

정말 저렴하고도 간단하게 로드밸런싱을 구현하는 방법이 있습니다.

사실 로드밸런싱이라고 부르긴 좀 엄하지만 그래도 접속하는 사용자들을 분산시키는 효과는 분명히 있습니다.

Round Robin 방식을 이용한 로드 밸런싱 방법이 그것인데요. DNS를 이용하여 손쉽게 구현할 수 있습니다.

Round Robin 방식이란 서버가 A, B, C 3대가 있다고 하면 첫번째 요청에는 A에 연결하여 주고 두번째 요청은 B에 연결하여 주고 세번째 요청은 C에 연결하여 주고 마지막으로 또다시 요청이 오면 A로 연결하여 주는 무한히 반복 연결하여 주는 방식입니다.

L4의 클라이언트 세션을 유지해 가며 처음 연결했던 서버에 지속적으로 연결해 주는 기능은 없지만 간단히 요청과 결과로만 이루어진 페이지들이라면 써볼만 합니다.

BIND의 Zone 파일을 다음과 같이 간단히 수정하면 구현할 수 있습니다.

[code]; zone file fragment
        IN  MX  10  mail.example.com.
….
mail IN  A       192.168.0.4
        IN  A       192.168.0.5
        IN  A       192.168.0.6[/code]
설정 후에 확인을 해보면 다음과 같은 결과를 볼 수 있습니다.
[code]C:\>nslookup mail.example.com


*** Default servers are not available
Server:  UnKnown
Address:  168.126.63.1


Non-authoritative answer:
Name:    mail.example.com
Addresses:  192.168.0.4, 192.168.0.5, 192.168.0.6[/code]


Addresses의 서버들의 순서가 매 요청때 마다 바뀌는걸 알 수 있습니다.