피터지고 치열하게 삶을 유지하다  
Front Page
Notice | Keyword | Tag | Location | Guestbook | Admin | Write Article   
 
IT 세상속으로에 해당하는 글 42건
2008/01/06   아 무서버라 - 오픈 하자마다 득달 같이 달려드는군요.
2008/01/04   "알약" 한번 먹어볼까 했더니...
2008/01/01   Trac Notification을 위한 SELinux Policy Module (이렇게 마구 허용해도 되는 걸까?)
2008/01/01   SELinux Policy 커스터마이징을 위해 꼭 알아야할 audit2allow, semodule (CentOS 5)
2007/12/31   Trac과 SELinux 한고비 넘기


아 무서버라 - 오픈 하자마다 득달 같이 달려드는군요.

서버 시스템의 메일을 체크해보니 시스템 로그 메일들이 도착해 있었다.

메일을 보니 서버가 오픈 되고 나니 그새 Port Scan을 했는지 열려 있는 sshd로 수많은 로그인 시도 및 프로그램 수행 시도가 있었다.

sshd:
    Authentication Failures:
       root (218.158.1.194): 336 Time(s)
       unknown (210.112.232.13): 128 Time(s)
       root (o184.orange.fastwebserver.de): 63 Time(s)
       unknown (218.158.1.194): 52 Time(s)
       unknown (58x159x34x212.ap58.ftth.ucom.ne.jp): 37 Time(s)
       root (210.112.232.13): 15 Time(s)
       root (58x159x34x212.ap58.ftth.ucom.ne.jp): 11 Time(s)
       root (61.156.35.117): 9 Time(s)
       unknown (o184.orange.fastwebserver.de): 6 Time(s)
       news (o184.orange.fastwebserver.de): 3 Time(s)
       nobody (218.158.1.194): 2 Time(s)
       rpcuser (218.158.1.194): 2 Time(s)
       adm (210.112.232.13): 1 Time(s)
       adm (218.158.1.194): 1 Time(s)
       apache (210.112.232.13): 1 Time(s)
       apache (218.158.1.194): 1 Time(s)
       apache (58x159x34x212.ap58.ftth.ucom.ne.jp): 1 Time(s)
       bin (210.112.232.13): 1 Time(s)
       daemon (210.112.232.13): 1 Time(s)
       ftp (210.112.232.13): 1 Time(s)
       ftp (58x159x34x212.ap58.ftth.ucom.ne.jp): 1 Time(s)
       games (210.112.232.13): 1 Time(s)
       gopher (210.112.232.13): 1 Time(s)
       halt (210.112.232.13): 1 Time(s)
       lp (210.112.232.13): 1 Time(s)
       mail (210.112.232.13): 1 Time(s)
       mail (218.158.1.194): 1 Time(s)
       mailnull (210.112.232.13): 1 Time(s)
       mysql (210.112.232.13): 1 Time(s)
       mysql (58x159x34x212.ap58.ftth.ucom.ne.jp): 1 Time(s)
       named (210.112.232.13): 1 Time(s)
       news (210.112.232.13): 1 Time(s)
       nfsnobody (210.112.232.13): 1 Time(s)
       nobody (210.112.232.13): 1 Time(s)
       operator (210.112.232.13): 1 Time(s)
       rpc (210.112.232.13): 1 Time(s)
       rpcuser (210.112.232.13): 1 Time(s)
       rpm (210.112.232.13): 1 Time(s)
       shutdown (210.112.232.13): 1 Time(s)
       smmsp (210.112.232.13): 1 Time(s)
       sshd (210.112.232.13): 1 Time(s)
       sync (210.112.232.13): 1 Time(s)
       uucp (210.112.232.13): 1 Time(s)
    Invalid Users:
       Unknown Account: 223 Time(s)


아직 열려 있는 HTTPD 포트를 통한 의심스런 시도는 발견되지 않았지만 ^^; 정말 서버 오픈시 가장 두려운 부분이다.

서버 관리를 해야 하는 입장으로 인터넷과의 연결시 가장 두려운 부분이 바로 보안이다.
예전 오래된 구 리눅스 서버가 자꾸 루트킷에 감염되어 결국 서버를 내리고 다시 셋팅해야 하는 단계까지 간 후로 요즘의 해킹 기법들에 두려움을 갖지 않을 수 없게 된다.

CentOS로 넘어와서 yum을 통해 꾸준이 업데이트를 해주고 있다. 이러한 시도가 보안에 도움이 되길 바랄 뿐이다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
Tag : 보안
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/148

name    password    homepage
 hidden


"알약" 한번 먹어볼까 했더니...
요즘 이스트소프트의 무료 백신 알약이 화제가 되고 있는듯 합니다.

저도 오늘 알약 기사에 자극받아 실시간 검사가 무료라는 점때문에 현재 사용하는 빛자루를 제거하고 알약을 사용해 볼까 심각히 고민해 보았습니다.

그러나, 아직은 좀더 두고볼 일이다라는 결론에 도달했습니다. 의외로 비판의 글이 많은듯 합니다.
기존 무료 백신들을 이것 저것 많지는 않게 써보면서 엔진 성능의 중요함을 많이 느꼈기 때문입니다.

무료라는 타이틀에 넘어가 어중간한 백신을 깔았다가 악성 바이러스 못지 않은 행패를 경험한 적이 있으므로 ....

http://sunfire.tistory.com/7 : 알약 백신과 이스트소프트가 실망스러운 이유
http://skysummer.com/438 : 무료 백신 알약에 대한 의혹과 아쉬움
http://skysummer.com/452 : 이스트소프트로 부터 받은 공식답변입니다.

등등... 빨리 빛자루의 실시간 검사 기능도 개인사용자에게는 무료화 되길 기대해 봅니다. ^^
이런 공짜 너무 좋아 하면 안되는데....
ㅠ.ㅠ 그래도 좋은걸 어떡해!


크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
Tag : 백신
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/146

name    password    homepage
 hidden


Trac Notification을 위한 SELinux Policy Module (이렇게 마구 허용해도 되는 걸까?)
Trac의 Ticket의 변화에 따라 관련자에게 메일이 전달되는 Notification 기능을 사용하기 위해 최종적으로 메일 전달을 위한 메일 서버 접속에 성공하기까지 계속 시도를 하며 문제가 된 audit 기록을 수집하였다.

그래서 얻어진 최종 Trac을 위한 Customized된 SELinux Policy Module은 다음과 같다.

 [root@ProjectS policy]#  egrep "netif|trac.cgi" /var/log/audit/audit.log | audit2allow
# ============= httpd_sys_script_t ==============
allow httpd_sys_script_t devlog_t:sock_file write;
allow httpd_sys_script_t file_t:dir { search getattr };
allow httpd_sys_script_t file_t:file { read getattr };
allow httpd_sys_script_t self:netlink_route_socket { write getattr read bind create nlmsg_read };
allow httpd_sys_script_t self:tcp_socket { read write create connect };
allow httpd_sys_script_t self:unix_dgram_socket { write create connect };
allow httpd_sys_script_t smtp_port_t:tcp_socket name_connect;
allow httpd_sys_script_t syslogd_t:unix_dgram_socket sendto;
allow httpd_sys_script_t unlabeled_t:packet { recv send };
allow httpd_sys_script_t user_home_t:dir { search getattr };
allow httpd_sys_script_t user_home_t:file { read getattr };
# ============= unconfined_t ==============
allow unconfined_t httpd_sys_script_t:file relabelto;
[root@ProjectS policy]#  egrep "netif|trac.cgi" /var/log/audit/audit.log | audit2allow -M tracsocket
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i tracsocket.pp
[root@ProjectS policy]#  more tracsocket.te
module tracsocket 1.0;
require {
         type unconfined_t;
         type unlabeled_t;
         type user_home_t;
         type smtp_port_t;
         type syslogd_t;
         type file_t;
         type devlog_t;
         type httpd_sys_script_t;
         class packet { recv send };
         class tcp_socket { read write name_connect create connect };
         class file { read relabelto getattr };
         class sock_file write;
         class netlink_route_socket { write getattr read bind create nlmsg_read };
         class unix_dgram_socket { write create connect sendto };
         class dir { search getattr };
}
# ============= httpd_sys_script_t ==============
allow httpd_sys_script_t devlog_t:sock_file write;
allow httpd_sys_script_t file_t:dir { search getattr };
allow httpd_sys_script_t file_t:file { read getattr };
allow httpd_sys_script_t self:netlink_route_socket { write getattr read bind create nlms
g_read };
allow httpd_sys_script_t self:tcp_socket { read write create connect };
allow httpd_sys_script_t self:unix_dgram_socket { write create connect };
allow httpd_sys_script_t smtp_port_t:tcp_socket name_connect;
allow httpd_sys_script_t syslogd_t:unix_dgram_socket sendto;
allow httpd_sys_script_t unlabeled_t:packet { recv send };
allow httpd_sys_script_t user_home_t:dir { search getattr };
allow httpd_sys_script_t user_home_t:file { read getattr };
# ============= unconfined_t ==============
allow unconfined_t httpd_sys_script_t:file relabelto;
[root@ProjectS policy]#  semodule -i tracsocket.pp

이렇게 하고 나니 httpd 데몬에 대한 SELinux 적용을 비활성화 하는 것과 어떤 차이가 있을까 하는 의문이 든다.
ㅋ 너무 마구잡이로 허용한건 아닐까? 그래도 막연히 기존 Linux 보안 체계보다는 믿음이 간다는.... ㅋㅋ

삽질하며 일일이 정책을 등록하는 보람이 있어야 할텐데.....

이로서 httpd 데몬에 의한 udp, tcp socket의 사용권이 허가된 셈이다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
Tag : SELinux, Trac
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/141

name    password    homepage
 hidden


SELinux Policy 커스터마이징을 위해 꼭 알아야할 audit2allow, semodule (CentOS 5)

^^; 웁스..... 한고비 뒤 SELinux와 관련된 에러가 또 발생하였다. Trac에서 로깅을 위해 syslogd를 사용하도록 설정하였더니, 웁스 아래 그림과 같은 에러가 발생하였다.

원인은 기본적으로 httpd 데몬에서 수행된 script (httpd_sys_script_t)에서 Socket 생성하는 것이 막혀 있기 때문이었다. ( ^^; 재미있는 것은 php는 스크립트로 취급되지 않는 것 같다. php로 된 Dokuwiki는 smtp를 사용한 메일 발송에 문제가 없었었다.)

사용자 삽입 이미지

이것은 socket이라는 시스템의 커널 리소스에 대한 문제이기 때문에 무언가 context type을 변경해준다고 해결될 문제가 아니었다. 즉 정책 변경이 필요하게 된 것이다.

그동만 별 영양가 없다고 생각했던 audit2allow가 드디어 빛을 발하기 시작했다.

참고문서 : Chapter 45. Customizing SELinux Policy

SELinux Policy를 커스터마이징 하는데 있어  Red Hat Enterprise Linux 4, 5에 각각 대응하는 CentOS 4, 5의 정책 Customizing 방법이 큰 차이가 있었다.

CentOS 4는 selinux-policy-targeted-sources 패키지를 설치하여 정책 파일들을 편집한 다음 다시 로드 하는 방식을 사용한다.

그러나 CentOS 5에서는 정책관리를 보다 커널 모듈과 같이 취급하여 Policy Module이라는 것을 사용하였다.
모듈의 install, reload, remove 등에 사용되는 명령이 semodule 이라는 것이다.

다시 위의 에러가 발생한 문제로 돌아가 문제가 발행한 프로그램은 trac.cgi라는 것이다.
/var/log/audit/audit.log 의 AVC 로그중 comm="trac.cgi" 와 관련된 AVC를 뽑고자 한다면 다음과 같이 할 수 있다.

$ grep trac.cgi /var/log/audit/audit.log | audit2allow

그동안 문제되었던 다른것 포함, audit 로그를 분석하여 그것을 allow 정책으로 변환하여 보여준다.

[root@ProjectS policy]# grep trac.cgi /var/log/audit/audit.log | audit2allow


#============= httpd_sys_script_t ==============
allow httpd_sys_script_t devlog_t:sock_file write;
allow httpd_sys_script_t file_t:dir { search getattr };
allow httpd_sys_script_t file_t:file { read getattr };
allow httpd_sys_script_t self:unix_dgram_socket { write create connect };
allow httpd_sys_script_t syslogd_t:unix_dgram_socket sendto;
allow httpd_sys_script_t user_home_t:dir { search getattr };
allow httpd_sys_script_t user_home_t:file { read getattr };

#============= unconfined_t ==============
allow unconfined_t httpd_sys_script_t:file relabelto;


1차적으로 allow httpd_sys_script_t self:unix_dgram_socket { write create connect }; 이 적용되면 일차적으로 위 소켓 생성시 나는 에러를 해결할 수 있을 것이다. 기타 관련된 다른 allow도 audit 로그 분석을 통해 뽑아졌다.

이를 Policy Module로 컴파일하여 만드는 방법은 다음과 같다.

$ grep trac.cgi /var/log/audit/audit.log | audit2allow -M tracsocket

위 명령을 수행하면 현재 폴더에 tracsocket.pp 와 tracsocket.te 파일 2개가 생성된다.
tracsocket.pp는 컴파일된 policy module 파일이다.
tracsocket.te는 text로 된 컴파일되기 전의 소스이다.

이것을 SELinux 시스템에 적용하는 방법은
$ semodule -i tracsocket.pp
와 같이 하면 적용된다.

이렇게 한번 인스톨된 모듈의 정책은 리부팅 후에도 유지된다고 하니, install에 사용된 pp를 삭제하면 무슨일이 벌어질까?!, 아마도 커널에 로드된 정책을 포함한 전체 Policy를 별도로 저장한다면 문제가 없겠지만 커널 모듈 파일이 지워지면 커널 모듈 로딩중 에러가 나듯, pp 파일이 삭제되면 SELinux에서 Policy 모듈 로드중 에러가 나지 않을까 생각해 본다.

굳이 시간을 들여 테스트 해보픈 마음은 없다. ^^; 여튼 사용된 pp파일은 되도록 삭제나 install된 위치에서 옮기지 말도록 하자. te 파일도 같이 보관하자. 컴파일된 pp 모듈이 실제 어떤 정책을 갖는지 텍스트인 te 파일을 통해 확인할 수 있으니 말이다. 얼핏 te를 가지고 재 컴파일도 가능하다고 한것 같지만 사용법은 나중에 필요하면 알아봐야 겠다. ㅋㅋ

^^ 멋지게 문제가 해결되었다. SELinux에서 audit2allow 무척 유용하구나! ㅋㅋ


크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
Tag : SELinux
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/139

name    password    homepage
 hidden


Trac과 SELinux 한고비 넘기
Trac 설치가 거의 완료되었다고 안심한 순간!
역시나 다를까?! 또 문제가 발생하였다. 새로운 Framework이 적용된 OS는 항상 사용자를 당황케 한다.
역시나 SELinux에서 문제가 발생하였다.

SELinux가 문제가 되는지 가장 빨리 확인하는 방법은 setenforce 0 를 수행하여 SELinux를 비 활성화 시킨다음 문제가 되는 기능을 수행해 보는 방법이다.

예상했던대로 비활성화 시에는 아무런 문제없이 잘 수행되는 기능이 setenforce 1 로 SELinux를 활성화 시키면 다음의 에러를 발생하였다.

사용자 삽입 이미지

처음엔 간단한 문제로 생각하였다. home/svn/publicsvn/test2 이하를 chcon -t httpd_sys_content_t 로 바꾸어주면 문제가 모두 해결되겠거니 하고 생각하였다. ㅠ.ㅠ 그러나 오산이었다.

이때 부터 헤매임이 시작되었다. 구글 신공도 신통치 않았다.
대략 찾아본 페이지들은 다음과 같았다.
  • http://trac.edgewall.org/wiki/TracOnRhel5

    그중 너무나 고맙게도 영감을 주는 글이 있었다.(역시 뭐든지 원리 이해가 필요했다. 조만간 SELinux의 내부 원리를 탐독할 필요가 있을 것으로 생각된다.)
    http://lists.edgewall.com/archive/trac/2006-June/008191.html

    SELinux는 고맙게도 자신이 거부한 것에 대한 안내를 /var/log/audit/audit.log에 친절히 남겨주고 있었다. 이것을 보기좋게 보여주는 audit2allow -a 명령은 불행하게도 별 도움이 되지 못했다.
    다음은 /var/log/audit/audit.log를 직접 분석하여 위의 문제를 해결하는 일련의 과정이다.

    사용자 삽입 이미지

    음... 이 고비는 일단 넘겼지만 Apache 웹 데몬에서 실행되는 mod_python의 디렉토리, 파일 I/O에 대해 그 대상이 httpd_sys_script_rw_t 를 가지고 있어야 한다니, 벌써부터 예상되는 문제가 떠오른다.
    아마 산너머 산이 될까? 다행히 type 부여후 새로 생성되는 것들은 부모의 속성을 이어 받는듯 하다. 정말 다행 스런 일이다.

    PHP는 httpd_sys_content_t로 만사 오케이 이건만 ^^;

    여하튼 그동안 정확한 원인을 몰라 쩔쩔매던 것이 이렇게 SELinux가 자신이 거부한 것에 대해 친절이 로그를 남기고 있다니 천만 다행이다.
  • 크리에이티브 커먼즈 라이센스
    Creative Commons License
    이올린에 북마크하기(0) 이올린에 추천하기(0)
    Tag : SELinux, Trac
    Track this back : http://www.codeforum.net/blog/pitoosung/trackback/138

    name    password    homepage
     hidden


    BLOG main image
    피투성의 IT 분투기
     Notice
    (2009.11.30) - ㅠ.ㅠ 안녕! 서버 H/W 시스템 교체(서버보드 사망, HP Workstation으로 교체)
    (2008.2.2) IP : 195.225.178.29 - 스팸 차단 조치
    (2008.1.14) 오후 06:34 ~ 08:07 : 시스템 복구
    (2008.1.14) 오전 00:25(?) : 시스템 다운 - 흠 심각하군!
    (2008.1.13) 오후 11:31 : 시스템 리부팅됨
    (2008.1.13) 시스템 복구 : 오전(?)~오후 1:00
     Category
    전체 (148)
    프로그래밍 (42)
    IT 세상속으로 (42)
    세상 엿보기 (26)
    지하창고 (18)
    책의 향기 (12)
    생각의 힘(바둑) (4)
    OCR-내가 다 읽어줄께 (1)
    두발의 짐승 (2)
    지능형 로봇 (1)
     Calendar
    «   2010/09   »
          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    
     Recent Entries
    투명 Display 그리고 Augm... (2)
    64bits(x64) Windows OS...
    NFS & Eclipse & CDT & In...
    행복에 대해 생각하며
    Virtual Audio Cable (가...
     Recent Comments
    ^^ 안녕! 축하축하. 난 아...
    피투성 - 03/16
    오랜만에들림니다 아이폰...
    쭌 - 03/15
    Thanks for your kind tra...
    hyungju - 2009
    정보 감사합니다 덕분에...
    허수 - 2009
    관리자만 볼 수 있는 댓글...
    - 2009
     Recent Trackbacks
    내가 생각하는 한의학의...
    Life Is Always Emergency
    FreeBSD 6.2, 64bit, 메모...
    엘레노아의 작업로그
    알약 백신 제대로 사용하...
    촌철살인
    유용한 블로그 툴 몇개..
    ENTClic@blog...just anot...
    국내의 검색엔진에 등록하...
    케이알선의 이야기
     Archive
    2010/01
    2009/12
    2009/07
    2008/09
    2008/03
     Link Site
    00_피투성의 지식창고_00
     Visitor Statistics
    Total : 70722
    Today : 1
    Yesterday : 60
    텍스트큐브 배너
    Eolin
    rss