달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

************************************
SendMail  (http://www.sendmail.org)
작성자 : 유희성
************************************


전자메일이 작동하는 방식은 일반편지와 유사하다.
일반 편지는 종이에 편지를 써서 우체통에 넣어 받는 사람, 보내는 사람의 주소, 이름을 적어 우체통에 넣는다.
그러면 우체통을 우체국 직원들이 체크해서 우체국으로 가져간다.
우체국에서는 해당지역으로 배달되는 것과 외부로 나가는 것을 분리한다.
관할 지역의 메일은 다시 우체부가 집으로 배달해 주고 외부 편지는 중앙 우체국으로 보낸다.

MUA(Mail User Agent) : 연필과 종이에 해당된다.
MDA(Mail Delivery Agent): 편지를 전달하는 우체부
MTA(Mail Transfer Agent): 외부로 메일을 보내는데 사용하는 트럭, 비행기, 기차 등등....

MTA 로는 sendmail, zmail, MMDF 등등이 있다.

Sendmail 은 크게 프로그램인 sendmail과 config 파일인 sendmail.cf로 구분할 수 있다.

Config 파일은 ----  sendmail.cf
       |--  Queue file
       |--  Aliases File 로 나누어 진다.


전송방식 =>>>>>  칠판에 그림 참조.


POP  : 메일서버에서 사용자의 편지를 자신의 MDA로 완전히 이동시킴.
IMAP : 메일서버에서 사용자의 편지를 자신의 MDA로 복사(참조).

먼저 자신의 PC에 메일 프로그램이 깔려있는지 확인하자.

rpm -qa | grep sendmail 이라고 해서 뭐가 나와야 한다. 없다면 깔아야 한다.

rpm -qi sendmail   ===> sendmail 정보확인.
rpm -ql sendmail   ===> sendmail이 어디에 설치되어있나???

그런데 메일 프로그램만 깔려있으면 안된다. 편지를 받아보려면 imap 이라는 패키지가 설치되어있어야 한다.
(pop3 와 imap이 동시에 설치됨)

rpm -qa | grep imap
rpm -qi imap  이라고 체크해보자... (없으면 linux 시디 넣고 깔던지 다운로드 해서 깔던지 해야한다)

뭔가 나왔다면 이녀석들을 돌릴 준비를 해줘야 한다.
일단 우리는 슈퍼데몬(xinetd) 환경에서 돌려줄 것이다.
슈퍼데몬에서 돌아가는지 확인해 보자.

vi /etc/xinetd.d/ipops  에 보면

disable=no 라고 되어있어야 한다.  yes 라면 no 로 바꾸어준다.

vi /etc/xinetd.d/imaps   파일도 위와 같이 고쳐준다.

이제 슈퍼데몬을 restart 시킨다.

/etc/rc.d/init.d/xinetd restart  라고 실행한다.

telnet localhost 110   이라고 쳐서 ok 뜨면 된거다. 110번은 pop3 이다.
안된다면 /etc/xinet.d/ 에 있는 위의 설정파일을 확인해보자

빠져 나올때는 quit 라고 입력한다.

만약 위의 테스트중 계속 에러발생시 포트가 막혀있을 가능성도 있을수 있다.
/etc/services  파일을 보면 그 안에 각 포트 설정이 되어있는데
해당 포트에 주석처리(#)가 되어있는지 잘 살펴보기 바란다.

이제 편지를 받을준비와 보낼 준비는 되었다.
그럼 이제 sendmail 을 설정 해 주자. 설정 파일은 /etc/sendmail.cf 이다.

**************************
SENDMAIL 설정하기
**************************

vi /etc/sendmail.cf

내용이 무쟈게 길다... 줄번호를 붙여서 본다. :set nu 라고 vi 명령창에 쓴다.. 그럼 줄번호 보인다.

여기서 sendmail.cf 파일의 설정 규칙을 잠깐 짚고 넘어가자.

1. 빈 행은 무시한다.
2. # 으로 시작하는 행은 주석처리로 무시한다.
3. C,D,F,H,K,M,O,P,R,S,V 로 시작하는 행은 설정행이며 이들은 각각 하나의 설정명령이다.
4. 하나의 빈 공간 또는 여러개의 빈 공간(TAB) 으로 시작하는 행은 앞 행의 연장이다.

********************
센드메일의 설정 명령어
********************

C : 클래스 정의
D : 매크로 정의
E : 환경변수 지정
F : 클래스 정의 (file, pipe)
H : Header 정의(Format of header)
K : Key file 정의(map 정의)
M : mailer 정의
O : 옵션
P : Message Precedences
R : 덮어쓰기(Rewrite)
S : Ruleset(새로운 규칙지시자)
T : Truseted users( 사용자 지정)
V : 설정 파일 버전


81번째 줄 정도에 Cwlocalhost 이라고 되어있는 부분이 보일것이다.
이 부분은 C설정 명령으로 localhost를 w 클래스로 정의하는 행이다. 기본적으로 localhost가 설정되어있다.
C 명령어는 문자열을 정의한다.

설정 예 : Cwlocalhost yadong.com dolpung.pe.kr
(이때 각 도메인은 진짜 등록되어있어야 한다. 요즘에는 진짜 도메인 아니면 메일이 안간다.
그리고 네임서버 상에서도 제대로 설정이 되어있어야 한다)


84번째 줄 정도에 보면  fw/etc/mail/local-host-names 라는 부분이 보일것이다.
이 부분은 메일을 수신할 호스트 이름을 명시할 파일의 위치를 설정이다.
주석처리되어있으면 절대 안된다. (sendmail 8.9 이하 버젼은 아마 sendmail.cw 파일로 되어있을것이다.)

179번째 줄 근처에 보면
#MaxMessageSize=1000000  이라는 부분이 있는데 여기는 메일의 최대크기를
지정해 주는 문장이다. 그런데 지금은 주석처리가 되어있다. 이렇게 주석처리가 되어있다면 메일크기의
제한이 없다는 것이다. 이부분을 주석을 풀고 용량을 조절하면 개인당 메일용량을 조정할 수 있게 된다.
이곳은 최대 메세지 크기 제한이다.

만약 메일 공간의 용량을 제한하고 싶다면 sendmail.cf 파일의 제일 아랫부분(1484번째 줄인가??)에

Mlocal,         P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
                    M=10485760, T=DNS/RFC822/X-Unix,

이런 부분이 있을꺼다. 여러분의 현재 설정에서는 M=10485760 이라는 부분이 없을텐데
이 부분을 추가해준다. 쉼표도 찍어야겠죠?
이렇게 하면 받는 메일의 용량을 10Mb 로 제한을 하게된다.


274 번 째 줄 근처에
O QueueDirectory=/var/spool/mqueue   라는 부분이 있는데 이부분은 큐 디렉토리를 설정해준다.

293 번째 줄에 보면
O TimeOut.queuereturn=5d   라고 되어있는데 메일을 보내려는 호스트에 문제 발생시 큐 디렉토리에
                           저장하게 된다.

머 이밖에 많은 설정이 있지만 일단 생략하고 자세한것은 따로 책을 보기 바란다.

이제 sendmail.cf 파일의 설정은 대충(정말 대충이다 ㅡ,.ㅡ) 끝났다.

이제 해야할 일은 센드메일의 수신자를 설정하는 일이다. 위에서 sendmail.cf 파일을 설정할때 메일을 받을곳의
호스트 이름을 명시할 파일의 이름이 local-host-names 라는 파일이라는것을 우리는 알았다.
이 파일은 /etc/mail/ 디렉토리 안에 있다.
vi /etc/mail/local-host-names  라고 쳐서 아래와 같이 입력한다.

자기호스트.com      # yadong.com 이 되겠지요??

저장하고 나온다.

이렇게 하면 들어오는 메일의 수신자를 설정하게 된것이다.

이제 남은 설정은 센드메일로의 접근을 제어해 주는 일이 남았다.

/etc/mail/access 라는 파일이 그 역할을 해준다. 이 파일이 해주는 역할은 특정 호스트나 도메인의 접근을
허락, 거부 여부를 설정할수 있는 중요한 파일이다.

vi /etc/mail/access 라고 입력하자..

그럼 파일 내용중에 아래와 같은 부분이 있을것이다.

localhost.localdomain  RELAY
localhost   RELAY
127.0.0.1   RELAY

위의 상황은 자기 자신, 즉 localhost 에서 보내는 편지는 통과(RELAY) 시키겠다고 적어놓은 것이다(default값임)
위의 아랫쪽에 자기의 주소와 IP  번호를 입력하고 RELAY(통과) 시키자.

yadong.com   RELAY
211.108.242.host  RELAY

이렇게 해주게 됨으로써 yadong.com 에서 보내는 편지를 통과 시키겠다!!! 라고 설정이 끝났다.

만약 yadong.com   REJECT 라고 하면 어떻게 될까??
정답은 메일 수신이 안된다는 것이다... REJECT 는 특정호스트에서 오는 편지를 접근 못하게(REJECT) 하는 역할을 한다.

만약 스팸메일이나 받기 싫은 메일이 계속 오게 되면 이곳에 HOST 이름을 적어주던지 IP 번호를 적어주고 REJECT 시키면
메일이 거부된다.

참고로 이 파일(access)는 /etc/sendmail.cf 파일에서
'Kaccess hash -o /etc/mail/access' 로 지정되어있어야 한다.(default 값이니까 안건드려도 된당)

그리고 리눅스에서 센드메일은 기본적으로 localhost 이외의 모든 호스트에 대해서 RELAY 를 허용하지 않도록 설정
되어 있다. 그러니까 이 파일에 RELAY 시킬 호스트 이름과, REJECT 시킬 호스트 이름을 적어줘야 한다.


이제 수정이 끝난 access 파일을 데이터베이스화 시켜주어야 한다.
센드메일은 access 파일을 사용하지 않고 access.db  라는 dbm 파일을 이용한다.

cd /etc/mail
makemap hash /etc/mail/access < /etc/mail/access   라고 입력한다. 에러가 당연히 없어야겠징???

이렇게 다 했으면 센드메일 데몬을 다시 시작 시켜주자.

/etc/rc.d/init.d/sendmail stop
/etc/rc.d/init.d/sendmail start

라고 해주자... 물론 restart 해줘도 된다. 오케바리 떴으면 이제 메일을 보내보자.
수신자는 root@dolpung.pe.kr 로 보내주세요..

mail root@dolpung.pe.kr  이라고 입력한다.
subject:  <===  이부분에 제목을 입력하고 그냥 엔터친다.
프롬프트가 그냥 깜빡이고 있으면 내용을 좌아아아아악 적어준다.

다 입력을 하였으면 ctrl+d 를 살포시 눌러준다. 그럼 Cc:  라는 곳이 뜨는데 참조 이니까 그냥 엔터로 무시한다.


 

Posted by tornado
|
subversion을 사용하고자 한다면..
subversion을 언제인가 사용해보고 싶은 욕심이 있었는데..앞으로 공부하기에 좋은 자료가 될거 같아서 여러분과 공유하고자 퍼왔습니다.

=============================================================
Subversion  

Subversion 은 공개 버전관리 도구인 CVS 의 여러 단점들을 보완한 공개 버전관리 프로그램 입니다. 디렉토리 삭제, 텍스트/바이너리 자동인식, 속도등이 CVS 보다 뛰어납니다. 엊그제 테스트 삼아 깔아 봤는데, 간단한 설치와 뛰어난 기능. 그리고 보조도구들의 기능도 뛰어나서 만족했습니다. 

Subversion Official Site( http://subversion.tigris.org/ )
- SubVersion 공식 사이트
TortoiseSVN ( http://tortoisesvn.tigris.org/ )
- 공개 서브버전 클라이언트 인데, 정말 편리합니다. Gui 를 사용하지 않고 익스플로러 에서 ContextMenu 를 통해서 정말 쉽게 사용할수 있습니다.
KLDP > Subversion 사용 HOWTO ( http://wiki.kldp.org/wiki.php/DocbookSgml/Subversion-HOWTO/ )
- 한글로 된 튜토리얼 입니다.
김성민 님의 Wiki ( http://serious-code.net/moin.cgi/Subversion?action=highlight&value=cvs )
- SubVersion 사용에 대한 도움말과 링크들이 있습니다.


from http://www.okjsp.pe.kr/bbs?act=VIEW&bbs=TOOL&seq=51640
Posted by tornado
|


아파치웹서버 모니터링하기

아파치웹서버를 동작시킨 후에 관리자는 서버의 부하를 어느정도 받고 있는지 모니터링을 해야한다.

부하가 많고 응답속도가 현저하게 떨어졌을 때에는 적절한 조치를 취해야하며, 데몬은 뜨있지만 제대로 응답하지 않는 경우도 있기 때문에 항상 모니터링을 해야한다.

아파치웹서버의 모니터링은 유닉스의 쉘상태에서도 할 수 있으며, 웹으로도 할 수 있다.

일단 이런 모니터링을 가능하게 하려면 httpd.conf파일에 다음과 같이 설정을 해야한다.

 

 

아파치웹서버를 처음설치하고 나면 이부분은 주석처리가 되어있으므로 주석부분을 제거한 후에 위의 예처럼 "SetHandler"부분에  "server-status"라고 설정을 해두어야한다.

 

자, 이제 서버모니터링을 웹브라우즈로 해보자.

먼저 아파치를 띄워야하며 웹브라우즈를 실행시키도록 한다.

실행시킨후에 다음과 같은 URL을 주소입력부분에 입력한다.

        http://www.yourdomain.co.kr/server-status

또한 주기적인 갱신으로 계속적인 모니터링을 하려면 다음과 같이 refresh주기를 주면 된다. 단위는 초이다.

http://www.yourdomain.co.kr/server-status?refresh=5

예를들어 자신의 도메인이 www.manualand.co.kr이라면

       http://www.manualand.co.kr라고 하면 된다.

 

이 부분에 대한 대략적인 설명은 다음과 같다.

  •          Server Version : 아파치서버의 버전을 나타낸다.
  •          Server Built : 아파치서버가 설치된 년, 월, 일, 시
  •          Current Time : 현재 모니터링하는 년, 월, 일, 요일, 시간
  •          Restart Time : 아파치서버가 재동작한 년, 월, 일, 요일, 시간
  •          Parent Server Generation : 서버 부하방지을 위한 아파치서버 생성갯수 총서버 개수중 요구에 응하고 있는 서버의 개수와 놀고 있는 서버의 개수 Scoreboard Key 에 대한 정보  
  •          "-" : 응답을 하기 위해 대기중임을 나타냄.
  •          "S" : 시작되고 있음을 나타냄.
  •          "R" : 응답을 위해 요구사항을 해석하고 있음.
  •          "L" : 요구에 대한 응답을 하고 있음.
  •          "K" : 계속연결중임.
  •          "D" : DNS서버에 요구도메인 검색중임.
  •          PID key : 프로세스정보를 보여준다.

 

또한 유닉스의 쉘에서도 간단히 아파치웹서버에서 제공되는 쉘스크립트로 모니터링을 할 수가 있다.

쉘프롬프트상에서 다음과 같은 명령을 이용하면 된다.

 

    #./apachectl fullstatus

Posted by tornado
|

자주쓰는 아파치 설정사항 정리

 

브라우징 제거

아파치의 디폴트세팅은 브라우징이 enable되어 있다.
브라우징이란 웹브라우저에서 URL입력시 index.html과 같은 정확한 파일명을
생략하고 디렉토리만 적었을 경우, 디렉토리내 파일목록이 출력되는 현상을 말한다.
http.conf의 디렉토리 디렉티브내 다음줄 추가

Options -Indexes


아파치 인증창 사용

http.conf에서 인증을 걸 디렉토리 디렉티브내 다음줄 추가

    AllowOverride AuthConfig

해당 디렉토리에 다음과 같이 .htaccess파일(텍스트파일) 생성
[root@ns mrtg]# cat .htaccess
AuthName "MRTG를 위한 인증"
AuthType Basic
AuthUserFile /webhosting/mrtg/.auth
require valid-user

AuthName: 인증창 타이틀
AuthType: 인증형태
AuthUserFile: 인증자들의 리스트를 가진 파일(htpasswd명령어로 생성)

-c(create)는 처음 파일을 생성할때 필요하다.
[root@ns mrtg]# htpasswd -c .auth kang
New password:
Re-type new password:
Adding password for user kang
[root@ns mrtg]# ls -l .auth
-rw-r--r--    1 root     root           19 May  3 16:54 .auth


외부 IP접근제어

http.conf의 디렉토리 디렉티브내 다음줄 추가

        AllowOverride AuthConfig
    Order Allow,Deny
    Deny from 211.43.134.128/24 xxx.xxx.xxx.xxx/24
    Allow from all
    
Deny from 에 접근차단할 ip대를 입력.
슬래쉬(/)뒤의 숫자들은 net mask지정(생략하면 single ip에 대한 차단)


위의 내용을 종합한 예는 다음과 같다.    


    Options -Indexes FollowSymLinks MultiViews

    AllowOverride AuthConfig

    Order allow,deny
    Allow from all
    Deny from 211.43.134.128/24 xxx.xxx.xxx.xxx/24




가상호스트/Redirect

아래의 예는 dbakorea.pe.kr로 오면, www.dbakorea.pe.kr로 redirect시킨다.
본인은 아파치말고, packet filtering으로 처리하려했으나 실력부족과 게으름으로 인해
그만두었다.

    ServerName          dbakorea.pe.kr
    Redirect    /       http://www.dbakorea.pe.kr


가상호스트의 전형적인예

    ServerAdmin         kang@dbakorea.pe.kr
    DocumentRoot        /webhosting/dbakorea-mobile
    ServerName          mobile.dbakorea.pe.kr
    ErrorLog            /usr/local/apache/logs/mobile.dbakorea.pe.kr-error_log
    CustomLog           /usr/local/apache/logs/mobile.dbakorea.pe.kr-access_log common
    ScriptAlias /cgi-bin/ /webhosting/dbakorea-mobile/cgi-bin/
        DirectoryIndex      login.html


아파치 정보출력제어
80포트로 telnet후 get / http/1.0하면 나오는 정보제어

ServerTokens Prod[uctOnly]
: Apache 만 보여줌
ServerTokens Min[imal]
: Apache 버젼만 보여줌
ServerTokens OS
: 아파치 버젼과 운영체제를 보여줌
ServerTokens Full (또는 지시하지 않았을때)
: 모두 보여줌


Offline Browser서비스 거부(출처: http://www.apache.kr.net)
WebZip만 테스트해봤지만 %{User-agent} 라는 변수에 'MSIE 6.0b'와 같이 찍힌다.
한마디로 안된다. 다른 용도로 사용될 지 몰라도,..


    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Deny from env=go_out


#CustomLog /usr/local/apache/logs/access_log common
#CustomLog /usr/local/apache/logs/referer_log referer
#CustomLog /usr/local/apache/logs/agent_log agent
CustomLog /usr/local/apache/logs/access_log combined


    BrowserMatch "Mozilla/2" nokeepalive
    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
    BrowserMatch "RealPlayer 4\.0" force-response-1.0
    BrowserMatch "Java/1\.0" force-response-1.0
    BrowserMatch "JDK/1\.0" force-response-1.0
    BrowserMatch "WebZIP" go_out
    BrowserMatch "Teleport" go_out
    BrowserMatch "GetRight" go_out
    BrowserMatch "WebCopier" go_out



     ServerAdmin         kang@dbakorea.pe.kr
     DocumentRoot        /webhosting/dbakorea
     ServerName          www.dbakorea.pe.kr
     ServerAlias        dbakorea.pe.kr
     ErrorLog            /usr/local/apache/logs/www.dbakorea.pe.kr-error_log
     CustomLog           /usr/local/apache/logs/www.dbakorea.pe.kr-access_log combined



아파치 로그 rotate
디폴트로 아파치로그는 wtmp, lastlog등과 같이 일정 시간, 크기..등등에 따라 로그의 순환이 이루어지지 않는다.
logrotate로 3개의 로그를 1달단위로 순환하려면 /etc/logrotate.conf파일의 마지막에 다음과 같이 추가한다.

# system-specific logs may be configured here
/usr/local/apache/log/www.dbakorea.pe.kr-access_log {
        monthly
        rotate 2
}


바이러스등에 대한 아파치로그 제거

# CodeRed Worm등의 로그제거
SetEnvIf Request_URI default\.ida CodeRed
SetEnvIf Referer \.ida CodeRed
SetEnvIf Request_URI cmd\.exe CodeRed
SetEnvIf Referer cmd\.exe CodeRed
SetEnvIf Request_URI root\.exe CodeRed
SetEnvIf Referer root\.exe CodeRed


     ServerAdmin         kang@dbakorea.pe.kr
     DocumentRoot        /webhosting/dbakorea
     ServerName          www.dbakorea.pe.kr
     ServerAlias        dbakorea.pe.kr
     ErrorLog            /usr/local/apache/logs/www.dbakorea.pe.kr-error_log
     CustomLog           /usr/local/apache/logs/www.dbakorea.pe.kr-access_log combined env=!CodeRed



설치된 모듈 확인
[root@ns /root]# httpd -l
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_access.c
  mod_auth.c
  mod_so.c
  mod_setenvif.c
  mod_php4.c
suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec

설정파일 확인(Virtual Host Only)
[root@ns /root]# httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
                       default server dbakorea.pe.kr (/usr/local/apache/conf/httpd.conf:989)
                       port 80 namevhost dbakorea.pe.kr (/usr/local/apache/conf/httpd.conf:989)
                       port 80 namevhost htdig.dbakorea.pe.kr (/usr/local/apache/conf/httpd.conf:1010)
                       port 80 namevhost kang.mine.nu (/usr/local/apache/conf/httpd.conf:1025)
[root@ns /root]#


컴파일 설정보기
[root@ns /root]# httpd -V
Server version: Apache/1.3.26 (Unix)
Server built:   Sep 17 2002 00:36:53
Server's Module Magic Number: 19990320:13
Server compiled with....
-D HAVE_MMAP
-D HAVE_SHMGET
-D USE_SHMGET_SCOREBOARD
-D USE_MMAP_FILES
-D HAVE_FCNTL_SERIALIZED_ACCEPT
-D HAVE_SYSVSEM_SERIALIZED_ACCEPT
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D HTTPD_ROOT="/usr/local/apache"
-D SUEXEC_BIN="/usr/local/apache/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/httpd.scoreboard"
-D DEFAULT_LOCKFILE="logs/httpd.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
-D ACCESS_CONFIG_FILE="conf/access.conf"
-D RESOURCE_CONFIG_FILE="conf/srm.conf"
[root@ns /root]#


SSI를 사용
CGI와 거의 비슷하게 세팅한다.
아파치(Apache)의 설정파일은 이젠 httpd.conf하나로 통일되었으므로 이 파일에 모든 설정을 한다.

AddType text/html .shtml
AddHandler server-parsed .shtml

위의 2개를 꼭 있어야 한다. 그리고 CGI와 마찬가지로 ssi가 실행될 디렉토리에 Includes옵션을 설정한다.
아래의 예는 /www/htdocs/count라는 티렉토리에 CGI, SSI가 실행될 수 있게 한다.

# 내가 추가(Options에 ExecCGE는 CGI를 사용하기위해, Includes는 SSI를 사용하기 위해)

Options ExecCGI Includes
AllowOverride None



This article comes from dbakorea.pe.kr (Leave this line as is)
Posted by tornado
|

LG - CD-RW GEC-8230B

네로 6.6.0.1 버전 실행시 nero express 넘어가는 과정에서 꺼지는 군요~ --;;

win xp 에서 모든과정 아주 잘됨.

네로 6.3.0.2 버전 에서는 다른건 되는데 영화굽기가 않되네요.

5.x 대 버전도 않되고.

여기저기 검색해봐도 명확한 답이 없네요.. ?



    
  0% 0% (0명중)
: 윈2003 웹에디션에서 인터넷 공유 안되나요?
: 서비스 설정에 대해서요..

(총 3건) ※ 타 회원에 대한 욕설이나 비방은 예고없이 삭제됩니다
 
공태영 (kong3306) | 2004-11-08 오전 8:38수정 | 삭제
어쩜 저랑 똑같은 증상입니까? 검색하다가 같은 질문이길래 반가워했는데 명쾌한 답글이 하나도 없어서...원인 찾으시면 저한테도 알려주세요....
공태영 (kong3306) | 2004-11-19 오전 8:40수정 | 삭제
아직 해결 못보셨나여? 그럼 저한테 연락 주세요....
김지웅 (jwkimc21) | 2004-12-19 오전 12:15수정 | 삭제
C:\Program Files\Common Files\Ahead\AudioPlugins\ 폴더및에
msa.dll 화일을 지우거나 다른이름으로 수정하면 아무 문제없이 실행됩니다!
Posted by tornado
|
질문: 메신저 7.0으로 업댓하고 나니 로그인이 안됩니다. landofoz / 2005-04-19 12:17

MSN메신저를 7.0을 깔고나니

죄송합니다. 지금은 MSN Messenger에 로그인 할 수 없습니다. 나중에 다시 시도해 주세요. 80072efd

이런 메세지가 뜨더라구요..

여태 잘 쓰고 있었는데.. 로그인이 안되네요..

몇번을 삭제하고 다시 깔아도 안되네요..

왜 그럴까요~ T_T

답변: re: 메신저 7.0으로 업댓하고 나니 로그인이 안됩니다. shawncha00 / 2005-04-15 23:24
인증서 캐시를 지우시고 DLL 파일 사전 등록 하시면 됩니다.먼저 메신저를 종료 합니다. (작업표시줄에 있는 메신저 아이콘까지 종료)작업표시줄 시작 > 제어판 > 네트워크 연결 설정 또는 변경 > 내용탭 > ...


Posted by tornado
|

 

find /dev -type f

 


일케 쳐서......



/dev/MAKEDEV

 


이거 이외에 다른것들이 나오면...  해킹당한게다 ㅡㅡ;




Posted by tornado
|
첫줄에서 =G 하면 들여쓰기 됨 ..

'OS > LINUX' 카테고리의 다른 글

[펌] 자주쓰는 아파치 설정사항  (0) 2005.05.31
[리눅스] 해킹당했는지??  (0) 2005.05.18
[펌] 파일 옮기기  (0) 2005.05.16
[펌] tripwire설치 및 운영가이드  (0) 2005.05.11
[phpschool 펌] mod_rewrite 추가 설치...  (0) 2005.05.03
Posted by tornado
|

[펌] 파일 옮기기

OS/LINUX 2005. 5. 16. 12:09
백업을 한다거나 다른 파티션으로 퍼미션,소유자등의 정보를 유지한채 그대로 옮겨야할때
과거에는 tar로 묶은다음 mv로 옮길 파티션으로 이동하고 다시 tar로 푸는 작업을 했었다.

( cd /usr/src && tar cf - . ) | ( cd /mnt && tar xpf - )

이방법은 일반적인 방법이기는 하나 묶고 푸는 시간때문에 시간이 오래걸린다.
더 빠른 방법을 소개한다.

find /source -xdev | cpio -pvmd /destination

find로 /source에 있는 모든파일을 찾아서 사용자정보를 유지한채 /destination으로 옮긴다.
Posted by tornado
|
tripwire설치 및 운영가이드

2001. 11.

장윤숙, jys@certcc.or.kr

 

1. 개요

공격자가 시스템 침입에 성공하면 다음번 침입을 쉽게 하기위해 루트킷(rootkit)이나 트로이잔 목마(trojan horse)프로그램을 설치하는 경우가 대부분이다.

루트킷에 포함되는 프로그램으로는 ps, ls, netstat, login등의 시스템 프로그램들이 있는데, 이런 루트킷은 시스템에 원래 있었던 프로그램들과 바꿔치기되서 관리자가 시스템을 점검해도 이상없게 보이도록 하고 공격자의 행동을 숨기기도 한다.

예를 들어 ps를 바꿔치기 해서 시스템 관리자가 ps를 실행시켜도 공격자가 실행한 프로그램은 보이지 않게 한다든지, ls를 바꿔치기 해서 ls로 보더라도 공격자가 만든 파일은 보이지 않도록 하는 것이다.

또한 공격자는 공격이 성공한 후 시스템의 취약점을 찾아서 패치를 해서 다른 공격자가 들어오는 것을 막기도 한다.

이렇게 침입 당한 시스템에서 어떤 파일이나 디렉토리가 수정, 변조되었는지 등을 찾는 것이 쉽지만은 않다. 혹 파일의 크기나 수정된 시간, 생성된 시간 등을 비교하여 알아낸다고 할지라도 파일의 크기나 시간정보 조차도 변조가 가능하므로 이를 믿을 수 없다.

따라서 원래 파일의 무결성을 체크할 수 있는 프로그램이 필요할 것이고, 이를 효율적으로 해주는 도구가 바로 tripwire이다.

tripwire는 MD5, SHA, CRC-32등의 다양한 해쉬 함수를 제공하고, 파일들에 대한 데이터베이스를 만들어 이를 통해 해커들에 의한 파일들의 변조여부를 판별하므로 관리자들이 유용하게 사용할 수 있다.

tripwire는 먼저 시스템에 존재하는 파일에 대해 데이터 베이스를 만들어 저장한 후 생성된 데이터베이스와 비교하여 추가·삭제되거나 변조된 파일이 있는지 점검하고 관리자에게 레포팅해주는 무결성 검사도구이다.

Top

2. tripwire 구하기

tripwire는 1992년 Purdue University의 Dr. Eugene Spafford와 Gene Kim에 의해 개발되었다. 초기의 tripwire 1.x는 오픈소스이었으나 2.x로 오면서 tripwire사에서 상용화하여 발표하고 tripwire 1.3대의 ASR(Academic Source Release)에 대해서는 공개로 배포하고 있다.

또한 tripwire사에서는 tripwire 오픈소스 프로젝트를 추진하여 Linux 시스템에서는 Open Source로 2.3대의 tripwire를 다운받아 설치할수 있다. (http://www.tripwire.org) 그러나 Solaris, Windows NT, HP-UX, IBM AIX 시스템에서 2.x를 설치하려면 상업용 버전을 이용하여야 한다. (http://www.tripwire.com)

Linux 7.x 시스템의 경우 대부분 tripwire가 설치되어 있기 때문에 다운받지 않고 설치할수 있으며, 본인은 리눅스 Linux7.0 환경에서 tripwire-2.3 버전을 설치 및 테스트하였다.

설치여부나 설치된 버전을 확인하고자 하는 경우에는 다음 명령을 이용한다.

rpm -qa | grep tripwire

만약 시스템에 설치되어 있지 않다면 tripwire 프로그램(http://www.tripwire.org)을 다운받아 설치한다.

Top

3. tripwire 설치

여기서는 rpm로 제공되는 2.3버전을 Linux 7.0에 설치할것이다.

tripwire를 rpm으로 설치할 경우 설치과정은 크게 다음의 4단계로 볼 수 있다.

1. tripwire 설정파일·정책파일 생성하기(twinstall.sh)
2. 데이터베이스 초기화 (tripwire --init)
3. 무결성 검사 (tripwire --check)
4. 데이터베이스 갱신(tripwire --update)

이제 본격적인 설치에 대해 살펴보도록 하자.

tripwire다운받기

http://www.tripwire.org에서 운영하는 시스템에 맞는 tripwire를 rpm으로 다운받는다.

압축풀기

다운로드받은 압축 파일을 푼다
# tar -xzvf tripwire-2.3-47.i386.tar.gz
압축을 풀어 생긴 tripwire-2.3-47.i386.rpm 패키지 파일을 설치한다.
# rpm -Uvh tripwire-2.3-47.i386.rpm
기본적으로 tripwire는 /etc/tripwire디렉토리에 설치된다.
/etc/tripwire 디렉토리에 생성되는 파일의 내용을 보면 다음과 같다.
-rwxr-xr-x 1 root root 603 6월 22 03:02 twcfg.txt ======> 설치를 위한 환경설정파일
-rwxr-xr-x 1 root root 10100 6월 22 03:02 twinstall.sh ======> 설치스크립트
-rwxr-xr-x 1 root root 41255 6월 22 03:02 twpol.txt ======> 정책파일

Top

tripwire 설정파일·정책파일 생성하기

# ./twinstall.sh
twinstall.sh를 실행시키면 tripwire는 site keyfile과 local keyfile을 생성하기 위한 Passphrases를 입력하도록 한다.
site keyfile은 정책파일과 환경파일을 설정하는데 사용되고, local keyfile은 tripwire 데이터베이스와 레포트 파일을 초기화하고 보호하는데 사용되는 일종의 암호의 일종이다. (passphrases는 최소 8자 이상의 문자열이어야 한다.)
설정파일·정책파일을 생성하는 과정을 살펴보면 아래와 같다.

1) keyfile passphrase를 생성하기 위해 몇 개의 passphrase를 요구한다.

Creating key files...
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

2) site keyfile passphrase를 입력하면 다시 한번 확인하고 키를 생성한다.

Enter the site keyfile passphrase:
Verify the site keyfile passphrase:
Generating key (this may take several minutes)...Key generation complete.
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Top

3) local keyfile passphrase를 입력하면 다시 한번 확인하고 키를 생성한다.

Enter the local keyfile passphrase:
Verify the local keyfile passphrase:
Generating key (this may take several minutes)...Key generation complete.
----------------------------------------------

4) site passphrase를 이용하여 configuration file을 완성한다.

Signing configuration file...
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg
A clear-text version of the Tripwire configuration file
/etc/tripwire/twcfg.txt
has been preserved for your inspection. It is recommended
that you delete this file manually after you have examined it.
----------------------------------------------

5) site passphrase를 이용하여 policy file을 완성한다.

다음의 policy file이 생성되었다는 메시지와 함께 설치가 끝나게 된다.
Signing policy file...
Please enter your site passphrase:
Wrote policy file: /etc/tripwire/tw.pol
A clear-text version of the Tripwire policy file
/etc/tripwire/twpol.txt
has been preserved for your inspection. This implements
a minimal policy, intended only to test essential
Tripwire functionality. You should edit the policy file
to describe your system, and then use twadmin to generate
a new signed copy of the Tripwire policy.

Top

데이터베이스 초기화

다음의 명령어를 실행하여 데이터베이스를 초기화한다. (/usr/sbin에서)

# ./tripwire --init

이때 tripwire는 local passphrase를 요구한다.

Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol

tripwire는 데이터베이스를 생성하고 그 결과를 출력한다.

Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/cyber118.twd
The database was successfully generated.

설정과정이 끝났으면 twcfg.txt과 twpol.txt 파일을 삭제하거나 안전한 장소에 보관하여야 한다.

Top

무결성 검사

다음의 명령으로 시스템에 있는 파일들에 대한 무결성을 검사할수 있다.

# ./tripwire --check
Parsing policy file: /etc/tripwire/tw.pol
*** Processing Unix File System ***
Performing integrity check...
Wrote report file: /var/lib/tripwire/report/cyber118-20010629-005928.twr

무결성 검사가 끝나면 /var/lib/tripwire/report 아래에 결과 파일이 생성된다.

Top

데이터베이스 갱신

무결성 검사 후 발견되어진 변경 파일 중 침입에 의한 것이 아니라 정상적인 변화라면 기존에 만들어져 있던 데이터베이스를 갱신하여야한다.

# ./tripwire --update또는 # ./tripwire -m u

tripwire --update mode을 이용하면 데이터베이스의 재초기화 없이도 데이터베이스를 갱신할수 있다.

■ 정책파일 갱신

정책파일을 갱신하는 방법에는 tripwire --update-police과 twadmin --creat-polfile 두가지가 있다.

# ./tripwire --update-police 또는 # ./tripwire -m p /etc/tripwire/policy.txt

tripwire --update-police mode는 이전의 rule과 비교하여 새로운 rule에 대한 정보를 업데이트하는 것이므로 데이터베이스를 재초기화 하지 않아도 된다.

# ./twadmin --creat-polfile # ./twadmin --creat-polfile mypol.txt (여기서mypol.txt는 새로운 정책파일의 이름이다.)

twadmin --creat-polfile mode는 새로운 정책파일을 만드는 명령으로 이를 위해서는 데이터베이스의 재초기화가 필요하다.

Top

4. Tripwire Configuration File & Policy File Reference

4-1. 환경설정파일(Configuration File-twcfg.txt)

환경설정파일(twcfg.txt)은 tripwire유틸리티와 설정파일들이 어디에 설치되어 있는지 등에 대한 정보를 저장하고 있는데 내용을 살펴보면 다음과 같다.

ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM =/usr/sbin/sendmail -oi -t

Top

아래의 표는 설정파일 변수들과 그 변수들이 무엇을 나타내는지 등에 대해 요약한 것이다.

설정파일 변수들

설명

Required

Variables

POLFILE

정책파일의 위치 지정 Initial value: /etc/tripwire/tw.pol

DBFILE

데이터베이스 파일의 위치 지정 Initial value: /etc/tripwire/$(HOSTNAME).twd

REPORTFILE

생성된 결과 파일의 위치 지정 Initial value: /var/lib/report/$(HOSTNAME)-$(DATE).twr

SITEKEYFILE

사이트키 파일의 위치 지정 Initial value: /etc/tripwire/site.key

LOCALKEYFILE

로컬키 파일의 위치 지정 Initial value: /etc/tripwire/$(HOSTNAME)-local.key

Optional

Variables

EDITOR

사용하고자 하는 편집기의 위치 지정 Initial value: /bin/vi

LATEPROMPTING

tripwire가 패스워드 요구하는 것을 가장 마지막에 하도록 설정 Initial value: false

SYSLOGREPORTING

SYSLOGREPORTING이 true로 설정되면 database initializations, integrity checks, database updates, and policy file등의 update 을 syslog에 알림. Initial value: true.

LOOSEDIRECTORYCHECKING

디렉토리 변경사항이 있는지를 출력해야 하는 것을 나타냄. 설정되어 있지 않으면 변화된 파일뿐만 아니라 그 파일이 있는 디렉토리도 결과에 출력되고 설정되면 파일의 변화만을 출력함. Initial value: false

REPORTLEVEL

twprint --print-report command로 report를 출력할 때의 레벨로서 0-4까지의 레포트레벨이 있음. Initial value: 3

Email

Notification

Variables

MAILNOVIOLATIONS

무결성 검사시 아무런 변화가 없을 때에도 email notification을 할지를 나타냄. Initial value: true

EMAILREPORTLEVEL

email report level로 0-4
Initial value: 3

MAILMETHOD

email notification을 위해 사용할 protocol명시 Initial value: SENDMAIL

MAILPROGRAM

특정 메일 프로그램의 위치 지정 Initial value: /usr/sbin/sendmail -oi -t

Top

4-2. tripwire 정책파일 (twpol.txt)

tripwire 정책파일(twpol.txt)은 tripwire가 감시할 대상(파일, 디렉토리)과 그 위치를 명시한다.

관리하는 시스템에 맞게 정책파일(twpol.txt)을 수정할 수 있는데 이는 불필요하게 들어있는 파일을 제거하고 필요한 파일은 추가함으로써 tripwire에서 쓸모 없는 결과물이 나오는 경우를 상당히 줄일수 있도록 한다.

또한 configuration script를 실행시킨 후에 정책파일을 수정하면 데이터베이스파일을 초기화하기 전에 configuration file을 재실행해야하는 번거로움이 있으므로 tripwire를 설치하기 전에 시스템에 맞게 설정하는 것이 좋다.

① policy file의 구성요소

policy file의 기본적인 구성요소는 다음과 같다.

policy file component

meaning

Rules

policy file의 기본구성요소로
무결성 검사시 시스템의 object에 대해 monitor할 properity를 명시해주는것

Stop points

무결성 검사시 스캔하지 않을 시스템의 object 명시

Attributs

이메일을 보내거나 recursion을 조정하는 rule을 수정하는 부분

Directive

하나의 policy파일을 네트웍 서버에서 사용할 때.

Variable

관리자가 편리하게 정보를 바꾸도록 설정

Top

1) rules

rules의 기본형식은 다음과 같다.

object name -> property mask;
object name 은 스캔할 디렉토리나 파일의 경로이고
property mask는 실행 혹은 실행하지 않을 object property에 대해 설정해주는 부분이다.
(여기서 ->는 object name 과 property mask를 구별해주는 기호이고 ;은 rule의 끝을 나타낸다.)
예1) 예를 들어 /etc 디렉토리 전부에 대해서 +pinug라는 property mask로 스캔하려면 다음과 같이 기술해준다.
/etc -> +pinug;
※여기서 +pinug 라는 property mask는 관리자가 정의한것으로 이렇게 관리자가 정의해서 사용할수도 있고 이미 정해져 있는 viriable을 이용할수도 있다.
이미 정해져 있는 viriable에 대해서는 5) viriable를 참고하라.
예2) /etc 디렉토리에 대해서는 관리자가 정의한 mask1으로 스캔하고 /etc/passwd 파일에 대해서만 mask2를 써서 스캔하도록 설정할 때
/etc -> $(mask1) ;
/etc/passwd -> $(mask2) ;
property mask에 대한 표는 아래와 같다.

Top

Property

Meaning

-

Ignore the following properties

+

Record and check the following properties

p

File permissions

i

Inode number

n

Number of links (i.e., inode reference count)

u

User id of owner

g

Group id of owner

t

File type

s

File size

d

Device number of the disk on which the inode associated with the file is stored

r

Device number of the device to which the inode points.
Valid only for device objects.

b

Number of blocks allocated

m

Modification timestamp

c

Inode creation/modification timestamp

l

Indicates that the file is expected to grow.
If the file is smaller than the last recorded size, it is a violation of this property.
This can be useful for log files.

a

Access timestamp
The +a property is incompatible with the hash properties(+CMSH).
To calculate the hash, the file must be opened and read,
which changes the access timestamp.
Specifying any of +CMSH will always cause a violation of the +a property.

C

CRC-32, POSIX 1003.2 compliant 32-bit Cyclic Redundancy Check.
Choose this hash for relatively high performance but relatively low security.

M

MD5, the RSA Data Security, Inc.® Message Digest Algorithm.
Choose this hash for high security.

S

SHA, part of the SHS/SHA algorithm.
Choose this hash for high security.

H

HAVAL, a strong 128-bit signature algorithm.
Choose this hash for high security.

Top

2) Stop Points

Stop Points는 무결성 검사를 하는 동안 스캔하지 않을 object에 대해 설정하는 부분이다.
기본형식은 다음과 같다.

! object name;

예) /etc/rc.d와 /etc/muttab에 대해서는 스캔하지 않고 나머지 /etc의 모든 부분에 대해서는 스캔할 때
/etc ->$(Readonly) -ar;
!/etc/rc.d;
!/etc/mnttab;

Top

3) Rule Attributes

Rule Attributes는 정책파일 전체로 무결성 검사를 하지 않고 몇 개의 rule name 에 대해서만 점검을 한다든지 policy file에 변화가 있는 부분에 대해 관리자가 이메일로 받을 수 있도록 설정하는 등의 설정을 하는 부분이다.

예1) /usr/lib rule에 변화가 있을때 email report를 xxx@xxx.com에게 보내려할때
/usr/lib -> $(ReadOnly) ( emailto = xxx@xxx.com ) ;

예2) “"rcfiles" 라는 rule에 대해서만 무결성 검사를 하고자 할때
tripwire --check --rule-name “"rcfiles"

Rule Attributes의 내용은 아래와 같다.

Attribute

Description

rulename

Associates a name with a rule.
The default value is the last element of the object name to which the rule applies.

emailto

Specifies email address(es) to which notification of any violations is sent.
The default value is none.

severity

Associates a numeric severity level with a rule.
The default value is 0. The valid range is from 0 to 1000000.

recurse

Controls recursive scanning of directories.
True (-1), false (0), and numerical values > 0 are valid.
The default value is true.

4) Directives

하나의 policy파일을 가지고 여러대의 시스템에 공유하여 사용하고자 할 때 설정해주는 부분이다.

Top

5) Variables

policy file에서는 두가지의 variable을 사용할수 있는데 Global variables은 policy file 전체에 대해서 사용할 수 있고 local variables은 정해진 section에서만 사용 가능하다.

기본 형식은 다음과 같다.

variable = value;

예1) # Define the variable
mask1 = +pinugC-a ;
# and now use it.
/home/projectA -> $(mask1) ;
/home/projectB -> $(mask1)+MSH-db ;

미리 정해놓은 Variables에 관한 표는 아래와 같다.

Variable

Definition

ReadOnly

This variable is good for files that are widely available but are intended to be read-only.
Expands to: +pinugsmtdbCM-raclSH

Dynamic

This variable is good for monitoring user directories and files that tend to change frequently.
Expands to: +pinugtd-rsacmblCMSH

Growing

This variable is useful for files that can grow, but not shrink, such as log files:
Expands to: +pinugtdl-rsacmbCMSH

IgnoreAll

This variable tracks a file’s presence or absence, but doesn't check any other properties.
Expands to: -pinusgamctdrblCMSH

IgnoreNone*

This variable turns on all properties and provides a convenient starting point for defining your own property masks.
Expands to: +pinusgamctdrbCMSH-l

Device

This variable is useful for devices or other files that Tripwire software should not attempt to open.
Expands to : +pugsdr-intlbamcCMSH

Top

5. tripwire command

① tripwire test mode

tripwire의 email notification system의 작동을 체크하기 위해 test mode로 다음의 명령어를 쓸 수 있다.

# tripwire --test --email jys@certcc.or.kr

Sending a test message to: jys@certcc.or.kr

email notification이 올바르게 작동한다면 아래의 메시지를 받을 것이다.

Subject: Test email message from Tripwire
Date: Fri 29 Jun 2001 09:06:58 +0900
From: "Tripwire(R) 2.3.0.47" <tripwire@localhost.localdomain>
To: jys@cert.certcc.or.kr

If you receive this message, email notification from tripwire is working correctly.

Top

② crontab을 이용한 주기적인 자동점검 및 e-mail을 통해 레포트 받아보기

파일 시스템에 주기적인 점검이 없으면 tripwire는 소용이 없다. 그러므로 매일 밤 tripwire로 점검하고 이를 e-mail로 받아볼수 있도록 설정한다면 보다 편리하게 tripwire를 사용할수 있다.

1) tripwire 레포트를 만들기 위하여 shell script를 만든다.

/usr/local/bin밑에 "runtripwire.sh" 라는 파일에 아래의 내용을 포함하는 파일을 만든다.
[root@cyber118 bin]# vi runtripwire.sh
#!/bin/sh
/usr/sbin/tripwire -m c | mail -s "tripwire report from linux-1" jys@certcc.or.kr

2) crontab에 추가하기

crontab -e 명령을 써서 매일 밤 1:01에 위의 script를 실행하도록 설정한다.
1 1 * * * /usr/local/bin/runtripwire.sh
이와 같이 설정했으면 매일 밤 tripwire와 실행되어 e-mail로 결과 레포트를 받을 수 있다.

아래는 실제로 점검결과를 메일로 받은 화면이다.

아래의 결과메일에서 보면 ls, netstat, ps등이 변조되었음을 확인할수 있다.

Top

③ twprint

tripwire 데이터베이스 파일들과 바이너리들은 encode되고 sign되므로 twprint 명령어를 사용함으로써 database와 report file을 text 형식으로 볼수 있다.

예1) 데이터베이스 파일을 텍스트파일로 프린트할 때
#twprint --print-dbfile > db.txt

예2) report 결과 파일을 텍스트파일로 프린트할 때
#twprint -m r --twrfile cyber118-20010703-035644.twr

(여기서 cyber118은 machine name이고 20010703-035644은 무결성검사를 한 날짜와 시간)

■ tripwire설치를 마치며

tripwire는 생성된 데이터베이스와 비교하여서 파일에 변화가 있는지 점검한다.

그러므로 이미 해킹을 당한 후 루트킷이나 백도어 등이 설치되어 있는 상태에서 tripwire가 설치된다면 tripwire는 무용지물이다. 또한 데이터베이스를 변경할수 있는 침입자는 무결성 검사도구를 파괴할수 있으므로, 무결성 검사를 위해 사용되는 데이터베이스는 승인되지 않는 변경으로부터 보호되어야 할 것이다.

Top

참고자료

· http://www.linuxsecurity.com/feature_stories/feature_story-81.html
· http://sourceforge.net/project/showfiles.php?group_id=3130tripwire-2.3.0-docs-pdf.tar.gz
· 리눅스 보안의 모든 것 (인포 북)
· Security PLUS for UNIX (포항공대 유닉스 보안 연구회 저, 영진출판사)

Top

 

자료제공 : CERTCC-KR : 한국정보보호진흥원

Posted by tornado
|
글쓴이:대한민국 apache mod_rewrite 설치시 팁조회수:2145


mod_rewrite 설치시 도움 될만한 글입니다...
이것은 처음 설치용이 아닌 사용중 추가하는 방법입니다.

cd 아파치설치디렉토리/src/modules/standard
/usr/local/apache/apxs -c -I/usr/include/gdbm mod_rewrite.c
gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
/usr/local/apache/apxs -i mod_rewrite.so

vi /usr/local/apache/conf/httpd.conf
#------- 아래 부분 추가 -------
LoadModule rewrite_module     libexec/mod_rewrite.so
Addmodule mod_rewrite.c
#------- 여기까지 ---------
/usr/local/apache/apachectl configtest
/usr/local/apache/apachectl restart

이렇게 하시면 에러 안나고 설치 잘 됩니다. :_)



carpoomod_rewrte 모듈에 대한 설명이 추가되었다면,
더 나은 TIP이 될수있을건데 말이죠..
04/02 13:23:07 코멘트 지우기
Murphy네. 모듈에 대한 설명이 있었으면 좋았겠네요.04/02 14:14:20 코멘트 지우기
Fencermod_rewrite 에 대한 설명은
http://httpd.apache.org/docs/
ㅡ_ㅡ;
04/02 16:34:02 코멘트 지우기
왜이제흠..apxs 로 죽어라고 mod_wirte.c 해봤는데,왜 이제 올리는거에요. 진작 올리시지..오류만나서 혼났구만T.T04/03 16:37:08 코멘트 지우기
산이설치가 조금 난해 하군요..

# apxs -a -i -c mod_rewrite.c

이렇게 하면 됩니다.
-a : active
-i : install

아 제홈에 mod_rewrite 사용예가 있습니다.
http://www.linuxchannel.net/docs/apache_virtual_user_host.txt

Posted by tornado
|

http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/admin-primer/s1-resource-rhlspec.html

2.5.레드햇 리눅스 스펙 정보

Red Hat Linux comes with a variety of resource monitoring tools. While there are more than those listed here, these tools are representative in terms of functionality. The tools are:

레드햇 리눅스는 다양한 리소스 모니터링 툴을 가지고 있다. 여기 소개하는 것은 보다 잘 알려진 것들이며 이들보다 더 많은 툴들이 존재한다.  

  • free

  • top (그리고 top의 그래픽 버전인 GNOME System Monitor 도 있다.)

  • vmstat

  • The Sysstat suite of resource monitoring tools

2.5.1. free


free 명령어는 시스템 메모리 현황을 보여준다.


Mem: 줄은 물리적인 메모리, Swap:은 스왑 메모리의 현황이다. 그리고 -/+/ buffers/cache:는 현재 시스템 버퍼에서 사용중인 물리적 메모리의 양이다.

 total used free shared buffers cached 
Mem: 255508 240268 15240 0 7592 86188 
-/+ buffers/cache: 146488 109020 
Swap: 530136 26268 503868

free는 기본적으로 그 순간의 메모리 현황을 보여주는 것이기때문에 매우 짧은 주기의 모니터링이나 메모리 관련 장애가 발생한 순간에 빠른 상황판단을 할 때 유용하다. 비록 free -s 옵션을 쓰면 메모리 현황을 반복적으로 보여주기는 하지만 그 변화를 제대로 감지하기는 힘들다.

Tip Tip
 

free -s를 좀 더 유용하게 쓰는 방법은 watch 명령어와 함께 쓰는 것이다. 예를 들어 매 2초마다 메모리 현황을 보려한다면 이렇게 해보라.

watch free

watch 명령어는 2초마다 free 명령어를 실행시킨다. 이렇게 하면 지나간 화면을 스크롤 하지 않아도 시간에 따른 메모리 현황을 좀 더 쉽게 알아볼 수 있다. 그리고 -n 옵션을 써서 화면을 갱신시키고 -d 옵션으로 바뀐 부분만 반전시킬 수도 있다.

watch -n 1 -d free

자세한 부분은 man page를 보면 알 수 있다. watch는 여러 곳에서 다양하게 응용할 수 있으므로 기억하도록 하자.

2.5.2. top

free가 메모리 관련 정보만 표시할 수 있는 반면에, top은 CPU 현황, 프로세스 통계, 메모리 현황같은 것들을  보여준다. 게다가 free와는 다르게 연속으로 갱신된다. watch free 한것처럼....그러나 watch top을 할 필요는 없다.

11:13am up 1 day, 31 min, 5 users, load average: 0.00, 0.05, 0.07 89 processes: 85 sleeping, 3 running, 1 zombie, 0 stopped CPU states: 0.5% user, 0.7% system, 0.0% nice, 98.6% idle Mem: 255508K av, 241204K used, 14304K free, 0K shrd, 16604K buff Swap: 530136K av, 56964K used, 473172K free 64724K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 8532 ed 16 0 1156 1156 912 R 0.5 0.4 0:11 top 1520 ed 15 0 4084 3524 2752 S 0.3 1.3 0:00 gnome-terminal 1481 ed 15 0 3716 3280 2736 R 0.1 1.2 0:01 gnome-terminal 1560 ed 15 0 11216 10M 4256 S 0.1 4.2 0:18 emacs 1 root 15 0 472 432 416 S 0.0 0.1 0:04 init 2 root 15 0 0 0 0 SW 0.0 0.0 0:00 keventd 3 root 15 0 0 0 0 SW 0.0 0.0 0:00 kapmd 4 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0 5 root 15 0 0 0 0 SW 0.0 0.0 0:00 kswapd 6 root 25 0 0 0 0 SW 0.0 0.0 0:00 bdflush 7 root 15 0 0 0 0 SW 0.0 0.0 0:00 kupdated 8 root 25 0 0 0 0 SW 0.0 0.0 0:00 mdrecoveryd 12 root 15 0 0 0 0 SW 0.0 0.0 0:00 kjournald 91 root 16 0 0 0 0 SW 0.0 0.0 0:00 khubd 185 root 15 0 0 0 0 SW 0.0 0.0 0:00 kjournald 186 root 15 0 0 0 0 SW 0.0 0.0 0:00 kjournald 576 root 15 0 712 632 612 S 0.0 0.2 0:00 dhcpcd

화면은 두가지 섹션으로 구분되는데 위쪽은 uptime, 평균 부하량, 프로세스 갯수, CPU 상태, 메모리와 스왑의 현황 통계등을 표시한다. 아래쪽은 top이 실행되고 있는 동안의 정확한 프로세스 레벨의 통계를 표시한다.

Warning Warning
 

top이 보이기는 간단하게 보이지만 사실은 그렇지 않다.  간단한 명령줄을 제공하는데 프로세스의 우선순위를 바꿀 수도 있고 kill 시그널을 날릴 수도 있다. top 실행화면에서 [?]를 누르면 도움말이 나오니 참조하기 바란다. [q]를 치면 빠져나온다.

2.5.2.1. The GNOME System Monitor — top의 그래픽 버전

GUI에 익숙한 유저들은 GNOME System Monitor 를 사용해도 좋을 것이다. top 처럼 시스템 전체 현황,  프로세스 갯수, 메모리와 스왑 현황, 프로세스 레벨의 통계를 보여주는 유틸이다.

그러나 GNOME System Monitor 는 이런 정보들을 그림으로 알기 쉽게 표시해준다. 다음은 GNOME System Monitor 에서 프로세스 리스트를 표시한 것이다.

그림 2-1. The GNOME System Monitor 프로세스 정보 표시

보여지는 각 프로세스들을 선택하고 More Info 를 클릭하면 좀 더 상세한 정보가 표시된다.

CPU, 메모리, 디스크 사용량 등을 알고 싶으면 System Monitor 탭을 선택하면 된다.

2.5.3. vmstat

시스템 성능을 간결한 형태로 보고싶으면 vmstat를 사용한다. 이 툴은 프로세스, 메모리, 스왑, I/O, 시스템, 그리고 CPU 현황을 한줄에 표시해준다.  

 procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 0 524684 155252 338068 0 0 1 6 111 114 10 3 87 

프로세스 관련 필드는

  • r — CPU사용을 기다리는 실행가능 프로세스의 갯수

  • b — 인터럽트가 불가능한 슬립 상태에 있는 프로세스의 갯수

  • w — 스왑아웃됐지만 실행가능상태에 있는 프로세스의 갯수

메모리 관련 필드는

  • swpd — 사용된 가상 메모리의 양

  • free — 가용 메모리의 양

  • buff — 버퍼에 사용된 메모리의 양

  • cache — 페이지 캐쉬로 사용된 메모리의 양

스왑 관련 필드는

  • si — 디스크에서 스왑-인 된 메모리의 양

  • so — 디스크로 스왑-아웃된 메모리의 양

I/O 관련 필드는

  • bi — 블럭 장치로 보내진 블럭들

  • bo— 블럭 장치로부터 받은 블럭들

시스템 관련 필드는

  • in — 초당 인터럽트의 갯수

  • cs — 초당 문맥교환된 갯수

CPU관련 필드는

  • us — CPU가 유저레벨 코드를 실행한 시간의 비율

  • sy — CPU가 시스템 레벨 코드를 실행한 시간의 비율

  • id — 가 대기상태에 있는 시간의 비율

옵션없이 vmstat를 실행하면 단 한줄만이 표시된다. 이 줄은 시스템이 부팅된 시간부터 계산된 평균값이다.

그러나 대부분의 관리자들은 이 데이터는 신경쓰지 않는다. 대신 설정된 시간 간격에 따라 반복적으로 표시되는 통계 데이타를 이용한다. 예를 들어 vmstat 1 은 1초 간격으로 새로운 현황줄을 표시한다. vmstat 1 10 은 1초 간격으로 새로운 현황줄을 10회 표시한다.

경험있는 관리자들은 vmstat 를 리소스와 성능적인 문제를 빨리 판단하려 할 때 사용한다. 그러나 좀처럼 보이지 않는 것을 알아내려 한다면 다른 도구를 같이 사용해야 한다.

2.5.4. Sysstat Suite - 확장 리소스 모니터링 툴

여태까지 소개했던 툴이 매우 짧은 주기의 모니터링엔 도움이 되는 반면, 시스템 리소스 현황의 스냅샷을 제공하지는 못한다. 게다가 그런 간단한 툴로는 시스템의 여러 양상을 모니터링하지 못한다.

그러므로 좀 더 복잡하고 정교한 툴이 필요하게 되었고 Sysstat이 바로 그런 툴이다.

Sysstat contains the following tools related to collecting I/O and CPU statistics:

Sysstat는 다음과 같은 I/O와 CPU관련 정보를 수집하는 툴이다.

iostat

한개 이상의 디스크의 I/O 통계와 CPU 활용도의 개요를 제공한다.

mpstat

좀 더 깊이있는 CPU 통계를 제공한다.

Sysstat는 또한 시스템 리소스 활용 데이터를 수집하고 그 데이터에 기초하여 매일 리포트를 생성한다. 그 툴들은

sadc

시스템 활동 데이타 수집프로그램으로 알려져 있다. sadc는 일정한 형태의 시스템 리소스 활용데이타를 수집하고 파일로 저장한다.

sar

sadc로 생성된 데이터 파일로부터 리포트를 생성한다. sar는 데이터의 집중적인 분석을 위해 대화형으로 리포트를 화면에 표시하거나 파일로 저장할 수 있다.

2.5.4.1. The iostat command


iostat 명령어는 가장 기본적인 CPU와 디스크 I/O 통계를 제공하는 툴이다.

Linux 2.4.18-18.8.0 (pigdog.example.com) 12/11/2002 avg-cpu: %user %nice %sys %idle 6.11 2.56 2.15 89.18 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn dev3-0 1.68 15.69 22.42 31175836 44543290 

첫번째 줄에서는 커널 버전, 호스트이름, 현재 날짜를 표시하고 그 다음줄은 부팅 시점부터 시스템의 평균 CPU 현황을 개략적으로 표시한다. CPU 현황 리포트는 다음과 같은 비율을 포함한다.

  • 유저 모드로 사용된 시간 (어플리케이션 실행등)

  • nice로 우선순위를 변경한 프로세스가 유저모드에서 사용된 시간

  • 커널 모드에서 사용된 시간

  • 대기시간

CPU 현황 다음엔 장치 현황 리포트다. 이것은 한 줄당 각각의 개별 디스크 현황을 나타내며 다음과 같은 정보를 포함하고 있다.

  • 장치 명세를 나타낸다. dev<major-number>-sequence-number 와 같이 표시하며 <major-number>는 장치의 메이저 넘버, <sequence-number> 는 장치의 0에서 시작하는 순차(sequence)시퀀스 넘버를 나타낸다.

  • 초당 전송률 (또는 I/O 수행율)

  • 초당 읽은 512바이트 블럭의 갯수

  • 초당 쓴 512바이트 블럭의 갯수

  • 512바이트 블럭의 총 읽은 갯수

  • 512바이트 블럭의 총 쓴 갯수

이것은 단지 iostat가 보여줄 수 있는 정보의 일부분일 뿐이다. 자세한 사항은 man page를 참조하라.

2.5.4.2. The mpstat command

mpstat 명령어는 옵션없이 수행하면 iostat의 정보와 차이가 없다.

Linux 2.4.18-14smp (pigdog.example.com) 12/11/2002 07:09:26 PM CPU %user %nice %system %idle intr/s 07:09:26 PM all 6.40 5.84 3.29 84.47 542.47 

CPU가 핸들링하고 있는 초당 인터럽트 갯수를 보여주는 컬럼을 제외하면 정말 차이가 없다. 하지만 -P ALL 옵션을 사용해보면 상황은 틀려진다.

Linux 2.4.18-14smp (pigdog.example.com) 12/11/2002 07:13:03 PM CPU %user %nice %system %idle intr/s 07:13:03 PM all 6.40 5.84 3.29 84.47 542.47 07:13:03 PM 0 6.36 5.80 3.29 84.54 542.47 07:13:03 PM 1 6.43 5.87 3.29 84.40 542.47 

다중 프로세서 시스템에서 mpstat는 각각의 CPU에 대한 현황을 보여준다. CPU가 얼마나 효율적으로 사용되고있는 지 알 수 있다.

2.5.4.3. The sadc command

위에 언급했듯이, sadc 명령어는 시스템 현황 데이터를 수집하고 추후 분석을 위해 파일로 저장한다. 기본적으로 데이터는 /var/log/sa/ 디렉토리에 쌓인다. 이 파일들은 sa<dd> 의 형식으로 저장되며 <dd> 는 날짜를 나타낸다.

sadc는 일반적으로 sa1 스크립트로 실행한다. 이 스크립트는 /etc/crond.d에 위치한 sysstat 파일을 참조하여 cron에 의해 주기적으로 수행된다. sa1 스크립트는 매초단위로 sadc를 실행한다. 기본적으로 cron은 10분마다 sa1 스크립트를 실행하며 /var/log/sa/sa<dd> 파일에 일정한 시간간격으로 수집된 데이터를 저장한다.

2.5.4.4. The sar command

sar 명령어는 sadc가 수집한 데이터를 바탕으로 시스템 현황 리포트를 생성한다. 레드햇 리눅스에 설정된 바에 따르면 sar는 sadc가 수집한 데이터를 자동으로 리포트로 생성한다. 이 리포트는 sar<dd> 의 형식으로   /var/log/sa에 저장되며 <dd>는 날짜를 나타낸다.

sar는 일반적으로 sa2 스크립트에 의해 수행된다. 이 스크립트는 sysstat파일을 참조하여 cron에 의해 주기적으로 수행된다. 보통 cron은 매일 23시 53분에 sa2를 수행하며 그 날의 데이터에 대한 리포트를 생성한다.

2.5.4.4.1. 리포트 파악하기

sar 리포트의 표시형식은 여러가지 섹션으로 구성된 레드햇 리눅스의 설정에 따른다. 각 섹션은 데이터가 수집된 날짜 순으로 정렬되며 일정한 형식의 데이터를 담고있다. sadc가 매 10분 마다 초단위로 수행되도록 설정되었기 때문에 기본적인 sar 리포트는 00:00 부터 23:59까지 10분 마다 증가한다. [2]

리포트의 각 섹션은 섹션에 포함된 데이터의 개요를 먼저 설명한다. 머릿말은 일정한 간격으로 반복되어 리포팅을 거듭할 수록 데이터 해석을 더 쉽게 할 수 있도록 한다. 각 섹션은 그 섹션의 평균 데이터를 표시하며 끝맺음을 한다.

00:30부터 23:40까지 수집된 데이터의 sar 리포트 샘플이다.

00:00:01 CPU %user %nice %system %idle 00:10:00 all 6.39 1.96 0.66 90.98 00:20:01 all 1.61 3.16 1.09 94.14 … 23:50:01 all 44.07 0.02 0.77 55.14 Average: all 5.80 4.99 2.87 86.34 

이 섹션에선 CPU 현황이 표시되고있다. 이것은 iostat의 결과와 매와 흡사하다.

듀얼 프로세서 시스템에서 수집된 CPU 현황에서 생성된 섹션에서 보듯이 다른 섹션은 매 시간 단순한 한 줄 이상의 데이터 가치를 가지고 있다.

00:00:01 CPU %user %nice %system %idle 00:10:00 0 4.19 1.75 0.70 93.37 00:10:00 1 8.59 2.18 0.63 88.60 00:20:01 0 1.87 3.21 1.14 93.78 00:20:01 1 1.35 3.12 1.04 94.49 … 23:50:01 0 42.84 0.03 0.80 56.33 23:50:01 1 45.29 0.01 0.74 53.95 Average: 0 6.00 5.01 2.74 86.25 Average: 1 5.61 4.97 2.99 86.43 

레드햇 리눅스의 sar 설정은 17가지의 서로 다른 데이터를 생성하도록 되어있다. 자세한 사항은 man 페이지를 참조하기 바란다.

Notes

[1]

장치의 메이져 넘버는 ls -l 명령으로 확인할 수 있다. 예를 들어 ls -l /dev/hda를 하면,

brw-rw---- 1 root disk 3, 0 Aug 30 19:31 /dev/hda 

여기서 메이져 넘버는 3이며 파일의 그룹과 마이너 넘버 사이에 표시된다.

[2]

시스템 부하가 변하기 때문에 데이터가 수집된 실제 시간은 1-2초 정도 틀릴 수 있다.

Posted by tornado
|

출처 : http://user.oss.or.kr/lecture/view.html?num=58&page=1

procmail을 이용한 스팸 메일 필터링

작성자: 푸른바다 bluesealove AT empal.com
작성일: 2004831

요즘 들어 스팸 메일이 극성을 부리고 있습니다. 불황이라서 그런지 스패머들의 스팸 메일 발송이 더욱 극렬해지고 교활해지고 있습니다. 이메일 주소가 인터넷에 노출되는 순간 수많은 스팸 메일이 쏟아져 들어오기 때문에 이메일 주소를 'someone AntiSpam somewhere.com' 하는 식으로 @ 를 빼고 인터넷에 게재하는 경우도 적지 않지요. 중간에 @가 들어가는 순간 이메일 주소 수집 로봇이 자동으로 인식해서 스팸 메일 발송 주소로 등록하는 모양입니다.

제 동생이 어느 날 집에 들어오더니 투덜대는 것이었습니다. 인터넷에 구인공고를 냈는데 날아오는 것은 이력서가 아니고 스팸 메일이었다고 합니다. 수십 통 메일 중 정작 가치가 있는 것은 몇 통 뿐이라는 이야기지요.

요즘에는 특히 대출 관련 스팸 메일이 극성을 부립니다. 제 메일 박스로 들어오는 스팸 메일 제목을 몇 개 예를 들어보겠습니다.

직장인 전문대출상담
직장인만 대출해드립니다
(-
-)남성단련 무료 트레이닝 체험
건강지킴이 가시오피외3종 무료 선착순증정

저도 참을만큼 참다가 스팸 메일 필터링에 나섰습니다. 여기저기 게시판을 둘러보니 다들 스팸 메일 필터링 때문에 머리를 쥐어짜고 계신 듯합니다. 하기야 이 정도로 스팸 메일이 쓰레기더미로 곳곳에 쌓여있는 걸 보면 더 이상 참는 게 비정상적으로 보일 만도 하군요.

일단 제 목적은 저한테 메일을 포워딩해주는 리눅스 서버에서 제목 필터링 등 간단한 설정을 통해 스팸 메일을 어느 정도 막아보자는 것입니다. 설정이 복잡해지면 현재 가동 중인 서버에 영향을 줄 수 있고 시간도 그리 넉넉치 않고 해서 milter 같은 본격 스팸 메일 필터링 프로그램을 사용하기보다는 시스템에 기본으로 깔려있는 procmail 등을 사용해 간단하게 설정해보는 것입니다.

sendmail.cf
문법을 이용한 스팸메일 차단은?

'
간단하게'를 만족시키려면 (서버에 센드메일이 깔려있다면) 제일 먼저 떠오르는 것이 sendmail.cf 같은 설정 파일을 통해 제목을 필터링하는 것입니다. 센드메일 설정 파일의 복잡성은 악명이 높긴 하지만 어쩌면 소기의 목적을 달성할 수 있을 지도 모른다는 생각이 들어 인터넷을 검색해보고 다음의 자료를 찾았습니다.

http://oops.org/?t=lecture&sb=sendmail&n=7
(cf
문법을 이용한 스팸메일 차단)

이대로 따라해보니 영어 제목은 필터링이 되는데 한글 제목은 필터링이 되지 않는다는 것을 확인했습니다. 가령 'sales' 같은 제목은 필터링해서 반송할 수 있지만, '판매' 같은 단어는 필터링할 수 없습니다. 한글 인코딩 문제도 있는 것 같고 센드메일에서 이런 인코딩까지 고려해서 필터링해주는 서비스는 해주지 않는 것 같습니다. 따라서 sendmail.cf 파일을 통한 한글 제목 필터링은 성공할 수 없었습니다.

milter
는 너무 복잡해!

그래서 참고한 자료가 KLDP의 한글 리눅스 팁 프로젝트의 이메일 부분입니다.

http://kltp.kldp.org/stories.php?topic=16

(한글 리눅스 팁 프로젝트: 이메일)

여기에 보면 'sendmail 에서 milter 사용해서 약간의 스팸과 바이러스 막기'라는 글이 있는데 메일 본문까지 검색해서 스팸 메일을 차단하는 방식으로, 시스템에 깔린 센드메일과 동일한 센드메일 소스를 가져와서, milter가 센드메일과 붙을 수 있도록 컴파일해줘야 하는 등 다소 복잡합니다. 제가 본격 시스템 관리자라면 시도해보겠지만 그렇지 않아서 컴파일까지 하는 방법은 일단 보류했습니다. 자신이 있는 분은 한번 시도해보시기 바랍니다. 하지만 중요한 업무를 처리하는 서버에서는 상당한 주의가 필요합니다.

procmail로 스팸 메일을 잡자!


위에 언급한 게시판에 보면 'procmail 을 이용해 스팸메일 필터링하기' 라는 글에 쓰레드 글이 붙어 있음을 알 수 있습니다. procmail을 사용한 필터링에 필요한 정보를 기본적으로 제공하고 있습니다.

procmail
의 장점은 센드메일을 사용하는 리눅스 시스템에 대부분 깔려있을 가능성이 많아서 따로 설치하지 않아도 된다는 점입니다. 이 경우 센드메일에서 procmail을 호출할 수 있도록 기본으로 설정되어 있기 때문에 아주 간단하게 작업을 할 수 있습니다.

저의 경우 데스크탑에 코어리눅스2004 워크스테이션을 사용하는데 여기에도 깔려 있군요. 그리고 서버로 사용하는 레드햇 리눅스 최근 버전에도 procmail 패키지가 기본으로 설치되어 있습니다. 센드메일 패키지에 필요한 부속 패키지로 그냥 따라다니는 모양입니다. procmail에서 사용하는 formailprocmail 패키지에 들어있기 때문에 따로 설치할 필요가 없습니다.

rpm -qa | grep procmail
명령을 사용하면 현재 시스템에 procmail 패키지가 설치되어 있는지 알 수 있습니다. 또는 한텀 같은 쉘에서 procmail 이나 formail을 입력하고 탭 키를 눌러보면 해당 바이너리를 실행할 수 있는지 알 수 있습니다.

먼저 메일 제목을 인코딩 해야지!

, 이제 필요한 것은 한글 제목을 인코딩하는 데 필요한 hcode 입니다. 다른 인코딩 프로그램을 사용할 수 있지만 여기서는 구하기 쉬운 hcode를 사용하기로 하겠습니다. hcode 제작자 는 이전 hcode 버전에 심각한 보안 문제가 있으니 hcode 세번째 버전을 사용하라고 강력히 경고합니다. 그리고 버그 픽스된 버전이라도 시스템 전역에서 사용하지 말 것을 추천하고 있습니다. 가급적이면 자신의 계정에서만 hcode를 사용하라는 이야기지요. 시스템의 중요도에 따라 이것을 판단할 수 있겠습니다. 아래에서 언급하는 사이트의 자료는 버그 픽스된 것입니다. hcode와 간단한 예제는 다음에서 다운로드받을 수 있습니다.

http://www.intosea.com/
(hcode
를 이용한 spam 메일 차단 방법 및 hcode 자료)

이 사이트는 익스플로러 접근을 허용하지 않으니 모질라 등의 브라우저를 사용해서 들어가야 합니다. 이 사이트의 자료마당-리눅스 메뉴로 들어가서 hcode로 검색을 하면 자료가 나오니 내려받으시면 됩니다. 이 자료실 게시판에서 말하는 것처럼 해도 간단하게 procmailrc 파일을 설정해서 사용할 수 있습니다만, 다소 복잡한 문제가 남습니다. 이것은 뒤에 설명을 드리겠습니다.


bunzip2 hcode_spam_filter.tar.bz2
tar xvf hcode_spam_filter.tar

이런 식으로 압축을 풀면 파일 세 개가 나옵니다.


procmailrc.example : procmailrc 예제파 일로 그대로 사용해도 됨
hcode-2.1.3-2ea.i686.rpm : hcode RPM 바이너리
hcode-2.1.3-2ea.src.rpm : hcode RPM 소스

대부분의 경우 바이너리를 설치하면 될테니 rpm 소스는 사용할 일이 잘 없을 겁니다.


rpm -Uvh hcode-2.1.3-2ea.i686.rpm

이런 식으로 바이너리 rpm 을 설치할 수 있습니다.

<>

, 이제 어떻게 해야하나?

이제 필요한 소프트웨어는 다 구비를 했습니다
. /etc/mail/sendmail.mc 파일에 procmail 단어를 포함한 줄이 몇 줄 있는가 확인해 봅니다. 또는 아래 명령을 실행했을 때 이와 비슷하게 출력이 나오면 센드메일에서 procmail을 사용할 수 있도록 설정이 된 것입니다.

# cat /etc/mail/sendmail.mc | grep procmail

define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
MAILER(procmail)dnl

참고로 sendmail.mc sendmail.cf가 너무 복잡하고 읽기 힘든 코드로 되어 있기 때문에 이를 쉽게 생성할 수 있도록 하는 설정 파일입니다. 대부분 sendmail.mc를 통해 설정한 다음 sendmail.cf를 생성하지, 직접 sendmail.cf를 손대지 않는 것이 좋습니다.

그리고 /etc/procmailrc 란 파일도 시스템에 있을 겁니다. 기본 설정 파일로 특별한 필터링을 하지는 않는 상태로 되어 있습니다.

이제는 기본 환경 구비는 끝났습니다. 마지막 설정만 남은 것입니다. 이제 센드메일이 메일을 받으면 procmail에게 권한을 넘겨줘 사용자 홈디렉토리의 .procmailrc 파일에 설정된 대로 실행하거나 시스템 전역의 /etc/procmailrc 파일의 지시사항 대로 실행할 겁니다.

간단히 테스트를 해보겠습니다. 위의 hcode를 내려받은 곳에서 설명한 대로 procmailrc.example/etc/procmailrc 파일이나 ~/.procmailrc 파일로 복사하고 /var/mail/spam이라는 파일을 만들어 둡니다.

% cp procmailrc.example ~/.procmailrc
% su
# touch /var/mail/spam
# chmod a+rw /var/mail/spam

이러면 스팸 메일들이 /var/mail/spam이라는 곳에 쌓입니다.


남은 문제는
?

일단 aliases 문제가 걸립니다. 즉 센드메일이 이메일을 받으면 /etc/mail/aliases 파일에 나열된 이메일 주소로 바로 보내버리기 때문에 필터링이 안됩니다. 가령 webmaster라는 주소를 몇 군데 다른 주소로 aliases 해놓았다면 webmaster 계정의 .procmailrc 파일을 참고도 하기 전에 해당 주소로 곧장 보내버리기 때문에 기대했던 필터링은 물건너가고 맙니다.

두번째 문제는 ~/.forward 파일 문제입니다. 보통 자기 계정으로 날라오는 이메일을 다른 곳으로 포워딩하는 데 사용하는 설정 파일인데 이 또한 필터링을 거치기도 전에 바로 해당 이메일 주소로 보내버리기 때문에 기대했던 필터링은 무위로 끝나고 맙니다. .forward 자체에 대해서도 몇 가지 이슈가 있습니다. .forward 파일을 그룹이 쓰기 가능하면 센드메일에서 호출을 하지 않는다고 하는군요. 저도 .forward 사용을 시도해보다가 필터링이 안되는 관계로 포기하고 말았습니다.

그럼, 이제 어떻게 해야 할까요?


기본 지식부터 쌓기

먼저 센드메일과 procmailrc 구동 방법에 대한 약간의 지식이 있으면 좋습니다. 이러한 정보는 아래에서 찾을 수 있습니다.

http://wiki.kldp.org/wiki.php/LinuxdocSgml/Sendmail-KLDP
sendmail 이야기

http://www.feep.net/sendmail/tutorial/
영문, sendmail Tutorial

http://userpages.umbc.edu/~ian/procmail.html
영문, Mail Filtering with Procmail

첫번째 한글 자료는 센드메일의 기본 구동 방법을 배우는 데 좋은 자료입니다. 두번째 영문 자료는 센드메일의 동작방법을 그림으로 보여주기 때문에 꽤 유익합니다. 마지막 자료는 procmailrc를 통한 필터링 방법을 초보자를 대상으로 쉽게 설명하고 있기 때문에 ‘강추!’입니다. 일단 기본적인 지식을 쌓았다면 다음으로 넘어가볼까요?

procmailrc 파일 건드리기

센드메일은 메일을 받으면 사용자 홈 디렉토리의 .procmailrc 파일을 살펴보고, 이 파일이 있으면 이 파일이 시키는 대로 실행을 합니다. 이 파일이 없으면 /etc/procmailrc 파일의 내용대로 실행합니다. 따라서 aliases 파일의 해당 알리아스 항목과 홈 디렉토리의 .forward 파일의 내용을 제거하고 순수하게 procmailrc 파일만으로 작업을 하는 게 여러 모로 권장할 만합니다. 즉 한군데서 모든 작업을 함으로써 여기저기에서 설정 작업을 할 필요가 없다는 말이지요.

위의 세번째 링크 자료는 정말 읽어보시기 바랍니다. procmailrc에 대해 이렇게 쉽고 유익하게 설명된 자료는 다른 데서 찾아보기 힘듭니다. 저도 그 문서에서 procmailrc 파일 설정법을 배웠고, 이후 내용도 그것을 참고해서 진행하겠습니다.

먼저 제가 작성한 procmailrc 파일을 중심으로 검토해보겠습니다. 간간히 아까 hcode와 함께 내려받았던 procmailrc 예제 파일도 들여다보겠습니다.

.procmailrc 파일의 제일 위에는 기본 환경 설정 부분입니다.


PATH=/usr/bin:/usr/local/bin:/bin

MAILDIR=$HOME/.mbox
DEFAULT=$HOME/.mbox/webmaster
LOGFILE=$MAILDIR/log
SHELL=/bin/sh

PATH.procmailrc 내부에 지정된 실행 파일이 있는 경로를 지정하는 것입니다. 보통 이 정도로 지정해 놓으면 문제 없습니다. MAILDIR은 메일을 저장할 공간으로 저는 홈디렉토리의 .mbox/ 디렉토리를 만들었습니다.

DEFAULT는 날아오는 메일을 기본으로 저장하는 파일을 지정하는 부분입니다. 저는 .mbox/webmaster 파일을 touch webmaster 명령으로 만들어 두었습니다. 그냥 빈 파일을 만드는 것은 touch 명령을 사용하면 됩니다.

LOGFILE은 날아오는 메일을 어떻게 분류했는지 기록하는 파일입니다. 저는 .mbox/log 파일로 지정했습니다. SHELL은 내부에서 사용하는 쉘을 지정한 것입니다.

일단 이렇게 기본 환경 설정이 끝나면 날아오는 메일의 제목을 인코딩해야 합니다. 제각기 다른 코드로 날아오는 메일을 인코딩해야 문자열을 비교할 수 있겠지요.


#
인코드되어 날아오는 헤더를 디코드 하는 부분.

:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|formail -c | hcode -dk -m

:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|formail -c | hcode -dk -m

이 부분은 우리가 내려받은 예제 파일의 내용을 그대로 사용했습니다. ‘:0’은 아래 조건에 맞는 명령을 실행한다는 지시자로 특정 조건을 검색하고 처리를 하려면 첫머리에 적어줘야 합니다. 뒤의 Efhw은 저도 잘 모르는 옵션인데 글자 한자한자가 특정 행동을 지시하는 옵션입니다. ‘*’는 조건 검색 시에 앞부분에 적어주는 지시자고, ‘^’는 정규표현식으로 문자열 첫머리를 의미합니다. ‘()’는 한 집단으로 묶는 것이고 ‘|’or 연산자입니다. ‘.’는 글자 한자를 의미하고 ‘*’는 앞서 나온 글자가 0번 이상 반복되는 것을 의미합니다. 즉 ‘*^(Subject|From|Cc).*’는 헤더 첫머리에 Subject 이나 From이나 Cc라는 글자가 나오고 그 다음에 아무 문자나 한개 이상이 나온 다음에 EUC-KR 류의 문자열을 검색하는 것입니다. 이 조건에 합당하면 다음 명령을 실행합니다.

여기서 ‘|’는 기존 내용물을 파이프로 넘겨준다는 것입니다. formail 프로그램이 -c 옵션으로 기존 내용물을 받아서 처리한 다음 hcode가 다시 이것을 받아서 적절한 처리를 한다는 명령입니다. 그 다음 부분도 ks_c_5601-1987 헤더 문자열에 대해 비슷한 처리를 하는 부분입니다.

이 부분은 잘 모르면 바꿀 필요가 없을 것으로 보입니다. 이후 부분이 우리가 신경을 써야할 부분입니다.


#
제목부분에 지정된 문자열이 걸리면, spam계정으로 메일전송

:0
* ^Subject: .*(광고|홍보|-|목록입니다|리스트입니다|성인 정보|몰카|\[.*\]|\[.*\]|\[.*\]|\(.*\)|\(.*\))
trash

:0
* ^Subject: .*(대출|대출해|전문대출|직장 인|무료로|로또|무료 상담|전용대출|전문상담|유망 직|공짜로|공짜|최신 유행|발송기|광고|자격 증|직장인대출|직장인대출상담|코웨 이|판매|트레이닝|건강 지킴이|랭킹닷컴|성인영화|성인 방송|성인소설|-|link exchange|PARTNER|유 망직종|0순위|전문컨설팅|최저 수수료|자연의힘|대출상담|카드 연체|신용불량|상담신청|자동 차|연체|카드|돈 마련|상담신청|숙취|다이 어트|신용대출전문|체질|대출 상품|돈이|취업|수수 료|관리사|시험)
trash

...이하 생략...

원본 문서를 워드로 작성해서 html 파일로 몇 번 변환하는 과정에서 ( ) 안 한글 문자열 사이에 공백이 많이 들어갔군요. 헤아리시고 봐주시기 바랍니다. 아울러 나머지 부분은 상단의 다운로드를 통해 봐 주시기 바랍니다. 강좌를 올리는 데 약간 문제가 있습니다.

Posted by tornado
|

한글인터넷주소와 퓨니코드(Punycode). 그리고, 한글도메인

1. 한글인터넷주소란?

- 한글인터넷주소란 각종 웹브라우저(Ex. MS-Explorer, Mozilla, Nescafe 등)상에서

웹페이지에 접속하기위해 기존에 사용(입력)하던 영문URL이나, IP대신 한글로 해당 업체의

회사명, 상품명, 개인명, 특정숫자를 입력하여 해당 인터넷 홈페이지를 연결시켜주는

서비스명입니다. 현재 국내에서는 넷피아에서 한글인터넷주소에 관련한 전반적인

업무를 수행하고 있으며, 별도의 프로그램 설치(각종 Plug-in, ActiveX Control 등) 절차없이

사용할 수 있는 유일한 한글주소 서비스인 것같습니다.

2. 한글도메인이란?

- 한글인터넷주소와 유사한 서비스로 한글인터넷주소에서는 사용이 필요없는

[www]와 [.com]이 앞뒤로 붙게되며, 별도의 Plug-in을 설치하여야 사용이 가능하다는 것입니다.

한글도메인의 경우 넷피아의 한글인터넷주소와는 달리 "www.한글주소.com" 의 형태로 사용해야

하기때문에 한글인터넷주소에 비해 사용방법이 불편하고, 별도의 프로그램을 설치해야하는

번거로움이 있는 것같습니다. 한글도메인은 미국의 Verisign사에서 주도적으로 운영하는

서비스로 이 서비스를 처음 사용하려면 별도의 프로그램을 설치해야하며, 국내에서는

WHoIS등에서 업무를 제휴하고, 서비스하고 있는 듯합니다.

(아무래도 외국 기업에서 운영하는 서비스보다는 국내기업에서 서비스하는 것을 등록하는 것이

나라사랑..한글사랑이 아닐까 합니다.)

3. Punycode란 무엇인가?

- 다국어 도메인의 표준화 작업이 이루어지기전에는 넷피아의 한글인터넷주소나 Verisign의 한글

 

도메인의 연결 방식이 [레이스코드]와 [퓨니코드]를 병행해서 사용할 수밖에 없었기때문에 사용자

 

입장에서는 DNS Setting부터 등록에 이르기까지 여러면에서 불편함과 애로사항이 많이 발생하였습

 

니다.

하지만, 올해(2004년) 한글인터넷주소와 한글도메인 변환 방식이 '퓨니코드(Punycode)'로 표준화

 

되어 보다 편리한 한글인터넷주소 사용에 많은 도움이 될것으로 예상됩니다. 퓨니코드라고 하는 것

 

은 인터넷에서 현재 7Bit로 표현되던 영문자를 8Bit 값의 한글로 변환해 주는 체계이며, 표준이 확정

 

되기 전에 '레이스코드'를 사용하던 한글도메인의 경우는 '퓨니코드'로 변경해야 정상적으로 기존

 

의 인터넷 홈페이지에 접속할 수  있다고 합니다. 한글인터넷주소나 한글도메인 변환방식이

 

Punycode 로 표준이 확정된 만큼 한글인터넷주소를 등록 사용하게되면, 기존에 Verisign사에서 제

 

공하던 한글도메인만 가지고 있던 사용자의 홈페이지도 별도의 프로그램 설치없이 접속이 가능하

 

겠네요...

요약)

한글인터넷주소 등록시 Punicode의 예)

a. 삼성: www.xn--cg4bki.co.kr
b. 엘지: www.xn--pi5bm5e.com
c. 진로: www.xn--2o2b913a.com
d. 밤바다: www.xn--2j1b67omb.com

☆ 기존에 영문URL없이 한글도메인을 등록하신 분들이 한글인터넷주소를 사용하기위해서는
[www.한글도메인.com]형식의 URL을 등록하는 것이 아니라 [www.한글도메인.com]을 Punycode로
변환해서 등록하게되면, 한글인터넷주소를 등록해서 사용이 가능하다고 합니다.
WHoIS에서도 한글인터넷주소를 병행해서 사용하려면 어떻게해야하는지 문의하였더니,
불친절한 태도와 무성의한 답변으로 인해서 무슨 내용인지 제가 알아들을 수가 없었던 관계로
병행 사용이 완벽하게 이루어지는지에 관해서는 언급을 피하도록 하겠습니다.

4. Punycode 환경의 Named.conf 셋팅 방법(한글도메인이 [www.밤바다.com]일 경우)

+++++++++++++++++++++++++++++++++++++++++++++++
zone "xn--2j1b67omb.com“ {
type master;
file "Zone 파일 참고.zone";
};

zone "회사IP.in-addr.arpa" {
type master;
file "db.Zone 파일 참고";
};

zone "0.0.127.in-addr.arpa" { //프록시 구성
type master;
file "db.127.0.0";
};

zone "." {
type hint;
file "db.cache";
};

+++++++++++++++++++++++++++++++++++++++++++++++

Posted by tornado
|

awstats 를 여러 가상 도메인에서 사용할 경우..


각각의 로그 파일들의 이름을 정확히 httpd.conf 에서 명시하고..


awstats 가 설치된 디렉토리(ex : /etc/awstats ) 에 awstats 설정 파일을 적용시킬 가상 도메인 이름으로 복사 하고 설정 파일 내용중 LogFile , SiteDomain 등의 내용을 가상 호스트에 맞게 수정한다.


그리고 http://도메인/awstats.pl?config=적용이름

으로 호출하면 된다. 무지 간단한걸~~


근데 DB 입출력 보다 무지 느린듯 ...

Posted by tornado
|

[펌] winbbs.com --> xp  질문 게시판

 

내컴퓨터-속성-고급-성능-설정-시각효과-여기서 설정이 제일위에 내컴퓨터에 가장좋은 설정을 자동선택 여기에 체크가되어있고 밑에 박스안에 모두 체크가 되어있어야합니다.

Posted by tornado
|
Posted by tornado
|

보안에 문제가 많을 듯 ㅡㅡ


--stdin 이라는걸 오늘 첨 알았음... 리눅스 계열 밖에 없는듯 합니다.


FreeBSD 에는 없넹..


================================================================================

파일 이름 : uadd.sh

퍼미션     : 700

사용법     : uadd.sh 아이디 패스워드

================================================================================

#!/bin/bash
userId=$1;
userPasswd=$2;

# User Add
/usr/sbin/useradd $userId

echo $userPasswd | /usr/bin/passwd --stdin $userId



 

================================================================================

파일 이름 : chpwd.sh

퍼미션     : 700

사용법     : chpwd.sh 아이디 패스워드

================================================================================

#!/bin/bash
userId=$1;
userPasswd=$2;

echo $userPasswd | /usr/bin/passwd --stdin $userId

================================================================================

파일 이름 : duser.sh

퍼미션     : 700

사용법     : duser.sh 아이디

================================================================================

#!/bin/bash

userId=$1;

userdel -r $userId



쓰고보니 허접의 극치를 달리는군 ㅡㅡ


Posted by tornado
|
질문,광고 등록 절대금지! 질문은 Q&A로
글쓴이:jyuvenia [서버]대량 메일 발송???조회수:7304

jyuvenia


대량의 메일이 발송되지 않는다고 호소를 하는군요.

:)

덕분에 그 문제에 관하여 이곳을 검색해보니...

별 방법이 전부 동원이 되는군요.

결과론적으로 몇백통씩 끊어서 보내는것이 사실상 전례가 된듯

합니다.

솔직히 약간 당황스럽습니다.

개인적으로 아직까지 몇만통을 한번에 그냥 보내도 빠짐없이

잘 가는데 왜 그런 문제들이 일어나서 끊어 보내는 일이

발생하는지 잘 이해가 가질 않았습니다.

대부분 조급하신 분들이 많은 관계로 방법 부터 거론하면..

1. sendmail 은 8.10.x 이상의 버전을 사용

2. /var 의 파일시스템은 저널링 파일 시스템 이어야 함 (ReiserFS, ext3)

3. Multiple Queues 를 사용


위 3가지면 충분합니다.

3번을 사용하기 위한 설정 밥법은 sendmail.cf 에서

O QueueDirectory

라는 행을 찾아서

O QueueDirectory=/var/spool/mqueue/q*

으로 변경을 하시거나 추가를 하시기 바랍니다.

그 다음 /var/spool/mqueue 에 q1 애서 q6 정도 까지 만들어 줍니다.

# cd /var/spool/mqueue
# mkdir q1 q2 q3 q4 q5 q6
# chown root.mail q*

그다음 sendmail 을 재시작 하면 되겠죠?

참고로 Multiple Queues 의 장점은

1. 고성능
2. 병렬 큐 처리
3. 파일 시스템 결점 보완

입니다.

더 자세한 부가적인 설명을 원하신다면 kldp.org 를 참고하시거나

http://kldp.org/~yong  

으로 가보세요.. 특히 http://kldp.org/~yong 사이트는 개인적으로

아주 좋아하는 사이트 입니다.

국내 리눅스계에 공헌을 아주 많이 하신 분이죠 :)

사이트 또한 정말 멋집니다.   :)

역시 성질 급하신 분은 http://kldp.org/~yong/misc/sendmail/

로 바로~~~~

 

 

 

Ext2 가라~!

Posted by tornado
|

뻘짓거리.. ㅡㅡ;

OS/LINUX 2004. 12. 16. 15:42

어제 잘 되던 CVS 가 갑자기 먹통...


내 이클립스 셋팅 불량인줄 알고.. 셋팅 싹~! 지우고 다시 구성..


그래두 안됨 ㅡㅡ


nmap 으로 열린 포트 검사해보니.. 2401 포트 안보임 ㅡㅡ 대략 난감...


혹시나 해서 iptables 보니 ...


헐.... 2401 포트 막아놨네 ㅡㅡ ... 이거 막으면 어쩌라고 ㅡㅡ


포트 막을때는 왜 막았는지 주석좀 답시다.






Posted by tornado
|