베토벤이 오케스트라의 프리티시모도 들을 수 없을 정도로
귀가 멀었을 때, 그는 최고의 오라토리오를 작곡했다.
존 밀턴은 앞을 완전히 볼 수 없게 되었을 때
<실락원>이라는 위대한 걸작을 쓸 수 있었다.
월터 스콧은 말에 채여 집에서 며칠동안 드러누워
있을 때<마지막 시인의 노래>를 지었다.
어느 시대에서나 가장 위대한 사람들은
가장 큰 고통을 겪은 사람들이었다.
- 이외수의 <마음의 열쇠, 뼈>중에서 -
* 아직 절망하고 포기하기엔 우리의 인생이
너무 이릅니다. 나에게 주어진 현실을 겸허하게 받아들이고
안주하지 말고, 한 때의 고통을 소중한 동반자로 삼아
창조적 인생을 사는 것이 아름다운 삶이 아닌지 생각해 봅니다.
첫 떨림 그건 세상없이 예리한 음의 진동이다.
첫 눈빛 그건 처음이자 마지막인 눈부심이다.
첫 손길 그건 심장 멎는 전율이다.
첫사랑, 그것은 가시같은 아픔이고 아름다움이다.
선홍색 상처로 눈물이 베인 하아얀 손수건이다.
세월이 흘러도 바래지 않은 비밀상자속 뚜렷한 이야기
그 순결한 몸짓이다.
- 홍회정의 《별에게 띄운 나의 사랑》중에서 -
* 첫 떨림. 그 전율의 순간을 아직도 기억합니다.
첫 눈빛, 첫 손길. 심장이 멎던 그 순간이 되살아납니다.
첫 사랑. 예리한 아픔처럼 뜨거운 섬광처럼 한 순간에 다가와
내 온 몸의 세포를 깨우고, 나를 눈뜨게 했습니다.
나를 다시 태어나게 했습니다.
저게 저절로 붉어질 리는 없다.
저 안에 태풍 몇 개, 저 안에 천둥 몇 개,
저 안에 번개 몇 개가 들어서서 붉게 익히는 것일 게다.
저게 저 혼자 둥글어질 리는 없다.
저 안에 무서리 내린 몇 밤, 저 안에 땡볕 한 달,
저 안에 초승달 몇 날이 들어서서 둥글게 만드는 것일 게다.
대추나무야, 너는 세상과 통하였구나!
- 장석주의 《달과 물안개》중에서 -
* 한 알의 대추도 저절로 영글지 않습니다.
천둥 몇 개, 땡볕 한 달의 역경 끝에 익어 갑니다.
하물며 사람은 오죽하겠습니까.
베트남을 통일한 호치민의 어록에도 이런 대목이 있습니다.
\"절굿공이 아래서 짓이겨지는 쌀은 얼마나 고통스러운가!
그러나 수없이 두들김을 당한 다음에는 목화처럼 하얗게
쏟아진다. 이 세상 인간사도 때로는 이와 같아서
역경이 사람을 빛나는 옥으로 바꾸어 놓는다.\"
리눅스가 윈도우 계열과 다른 가장 큰 특징 중 하나는 로그(log)를 철저히 남 긴다는 것이다. 남겨진 로그 정보를 이용하여 각종 시스템의 장애나 상태를 점 검할 수가 있는데, 아파치 웹 서버 역시 마찬가지다. 문제나 장애가 발생 시에 는 반드시 error_log를 남기게 하여 /usr/local /apache/logs/error_log의 메 시지를 살펴보면 문제의 원인과 해결책을 어렵지 않게 찾을 수 있게 될 것이 다. 문제가 발생하였다고 당황하거나 무턱대고 관련 게시판에 질문을 올리지 말 고, 에러 로그의 내용을 기초로 차근차근 문제의 원인을 분석하고 해결해 나간 다면 조금씩 서버 관리자에 가까워지는 자신을 발견할 수 있을 것이다.
원문 Linux@Works 글·홍석범 오늘과내일 넷센터 (antihong at tt.co.kr)
한글.com 형식의 한글 도메인 서비스가 1년 가까이 아직 정상적인 서비스가 되고 있지는 않지만 현재는 포워딩 방식으로나마 일부 사용 가능하다. 즉, 그 자체로 한글.com으로의 사용은 불가능하며 단지 한글.com을 접속시 다른 도메인으로 포워딩 할 수 있는 것이다. 현재 http://www.gabia.com/나 http://www.doregi.com/ 등에서 한글 도메인을 검색해 보면 예를 들어 팬메일.net의 경우 BQ--3DJSZOSUY56A.NET와 같이 BQ- 형식의 RaceCode 문자로 되어 있는데, 실제로는 bq--3djszosuy56a.mltbd.net와 같이 mltbd.net(한글.com 일 경우에는 mltbd.com, 한글.org 일 경우에는 mltbd.org)의 2차 도메인 형식으로 서비스된다. 따라서 위와 같이 WHOIS 검색을 한 후 나온 RaceCode을 DNS 서버에서 먼저 설정하여야 하는데, DNS 서버의 named.conf에서 설정하여야 할 내용은 다음과 같다.
zone "bq--3djszosuy56a.mltbd.net" {
type master;
file "bq--3djszosuy56a.mltbd.net.zone";
};
bq--3djszosuy56a.mltbd.net.zone 파일의 형식은 일반 zone 파일 형식과 동일 하게 설정하면 된다.
그리고 DNS 서버에서 지정한 해당 웹 서버에서는 다음과 같이 버추얼 호스트 설정을 하여 원래의 사이트인 http://panmail.net/으로 리다이렉트하면 된다 (현재까지는 포워딩 서비스만 제공하므로 Redirect를 이용하여야 한다).
가끔 서버를 운영하다보면 특정한 디렉토리 이하에 대해서는 인증된 유저만 접 속이 가능하게 한다거나 특정 IP 대역의 유저만 접근하도록 하고자 할 필요가 있을 때가 있다. 특정 디렉토리 이하에 대해서 접근을 제어하고자 할 때에 는 .htaccess를 사용하거나 httpd.conf에서 를 이용하여 제어를 할 수 있지만, 만약 특정한 파일에 대해서 외부에서의 접근을 제한하고자 한다면 어떻게 하여야 할까?
이때는 Location을 사용하면 된다. httpd.conf 파일에 다음과 같이 설정시 모 든 디렉토리 이하의 secret.html 파일에 대해서는 192.168.1.1에서만 접근이 가능하게 된다.
order deny,allow
deny from all
allow from 192.168.1.1
만약 여러 도메인이 설치되어 있는 호스팅 서버의 경우 secret.tt.co.kr 도메 내의 secret.html에 대해서만 접근을 제어하고자 할 경우에는 다음과 같이 버추얼 호스트 설정에서 하면 된다.
ServerAdmin antihong@tt.co.kr
DocumentRoot /usr/local/apache/htdocs/secret/
ServerName secret.tt.co.kr
order deny,allow
deny from all
allow from 192.168.1.1
또는 위와 같이 IP가 아니라 특정한 ID/PW를 입력한 유저에 대해서만 특정 파일에 대하여 접근을 허용하고자 할 때가 있다. 이러한 경우에는 httpd.conf에 다음과 같이 설정하면 된다.
아파치 서버를 시작시 자주 만나는 에러와 관련된 설정 중 하나가 바로 다음 과 같은 서버 네임이다.
# /usr/local/apache/bin/apachectl start
httpd: cannot determine local host name.
Use the ServerName directive to set it manually.
./apachectl startl: httpd could not be started
대부분 서버 네임은 리눅스 설치 시 입력한 호스트 이름을 자동으로 가지고와 설정되나 DNS상에 존재하지 않은 도메인명이나 설사 존재하더라도 로컬 서버 가 아닌 잘못된 도메인을 정의시 이러한 현상이 나타난다. 이러한 경우에는 서 버 네임을 실제 로컬 서버의 호스트 이름이나 IP 주소로 설정해 주어야 한다. 또한 서버 네임을 잘못 설정 시 나타날 수 있는 현상 중 하나가 http: //domain.com/~user와 같이 접속할 때의 문제다. 즉, 서버 내 계정 사용자의 홈페이지를 접속시 http://domain.com/ ~user/와 같이 접속하면 접속이 되나 http://domain.com/~user와 같이 /를 붙이지 않으면 접속이 되지 않는 경우다.
클라이언트가 서버의 디렉토리에 접속시 끝에 /(trailing)을 하지 않은 경우 서버는 클라이언트에게 /을 붙여 다시 접속을 하라고 요청한다. 그렇지 않으면 상대 URL 경로를 인식하지 못하는 문제가 있기 때문이다. 만약 DNS가 정상적으로 세팅되어 작동하고 있을 경우에는 문제가 없지만 그렇지 않은 경우에는 접속이 되지 않는 경우가 생긴다. 또는 위에서처럼 서버 네임에 지정된 호스트네임이 실제로 DNS 상에 리졸빙이 되지 않는 경우도 이러한 현상이 나타나므로 이러한 경우에는 httpd.conf의 서버 네임 옵션에 실제 서비스 중인 도메인명으로 입력해 주면 된다.
최근에 코드레드와 님다 등 윈도우 NT/2000 기반의 IIS를 공격하는 무차별적인 웜 공격으로 인하여 부하가 유발되고 로그 파일이 불필요한 데이터로 채워 지는 경우가 있다. 로그 파일의 크기가 커지는 것은 감안하더라도 당장 계속적으로 커지는 로그 파일 때문에 서버에 부하를 유발하는 것이 더욱 큰 문제다. 서버에서 로그를 남기는 방식은 매번 클라이언트의 요청이 있을 때마다 웹 서버에서 패킷 헤더에 있는 클라이언트의 정보를 받아낸 후 로그 파일을 열도록 한 후 로그 파일을 읽어 파일의 제일 끝으로 이동하여 로그 정보를 추가한 후 파일을 닫는 것인데, 불필요한 요청이 있을 때마다 이 작업을 계속하여야 하므로 서버에 부하를 유발함은 당연한 현상이다.
따라서 아예 로그를 남기지 않도록 하거나 로그를 남긴다 하더라도 불필요한 정보를 남기지 않도록 하는 것이 미소하게나마 서버의 성능을 높이는 것이 될 것이다. 그럼 실제로 불필요한 정보는 아예 로그를 남기지 않는 방법에 대해 알아보도록 하자. 이를테면 코드레드의 경우 다음과 같이 무차별적인 로그가 남게 된다.
2001/08/01 23:39:50.765446 152.158.99.4:58781 -> 211.233.38.193:80 [AP] GET/default.ida?NNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
이러한 로그를 막기 위해서는 httpd.conf 파일을 열어 Custom Log 윗줄에 SetEnvIf Request_URI “/default.ida$” cord-red와 같이 정의한 후 CustomLog/usr/local/apache/logs /access.log combined라고 설정되어 있는 부 분을 CustomLog /usr/local /apache/logs//access.log combined env=!cord-red 라고 수정을 한다.
!는 not의 의미이므로 위 설정은 환경변수 cord-red로 정의된 요청을 거부하라는 뜻이다. 위와 같이 설정 후 아파치를 재시작하면 코드레드와 관련된 로그가 남지 않게 된다. 코드레드에 이은 님다웜의 경우도 같은 방식으로 설정하여 로그에 남지 않도록 설정할 수 있다.
또한 같은 원리를 이용하여 iptables를 이용하여 아예 패킷 자체를 차단할 수 도 있는데, 코드 레드의 경우 default.ida 문자열을 요청한다는 특징을 이용하 여 다음과 같이 차단할 수 있다.
iptables ?A INPUT -i eth0 -p tcp --tcp-flags ACK ACK --dport 80 -m string --string ‘/default.ida?’ -j REJECT --reject-with
tcp-reset와 같이 iptables의 ?strings를 이용하여 특정 문자열이 포함된 패킷을 차단하는 방법도 있기는 하지만 이 방법은 커널과 iptables를 다시 컴파일해야 하는 문제가 있다. 님다웜 역시 이외 cmd.exe 와 root.exe를 포함하므로 같은 방식으로 다음과 같이 차단할 수 있다.
분명 데몬은 정상적으로 떠 있고 MaxClients에 도달하지도 않았는데, 실제로 접속이 되지 않는 경우가 있다. 이러한 경우라면 웹 서버가 TCP SYN Flooding 공격을 받고 있을 가능성이 있다. netstat -na | grep SYN으로 확인하여 많은 SYN_RECEIVED 프로세스가 보인다면 이 공격 때문이며 이러한 경우에는 첫 번 째 줄의 명령을 사용하거나 두 번째 줄의 syncookies 기능을 enable하면 된다.
# sysctl ?w net.ipv4.tcp_syncookies=1
# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
Syncookie 기능은 일단 커널에서 지원되어야 하므로 이 설정이 적용되지 않으면 커널에서의 설정여부를 확인해 보아야 한다. 이 공격에 대한 보다 자세한 내용은 본지 7월호에 실린 “TCP SYN Flooding 공격의 원인과 해결책”을 참고 하기 바란다.