리눅스 서버를 안전하게 지키기 위한 전략 > 리눅스 Tip

본문 바로가기
 

리눅스 서버를 안전하게 지키기 위한 전략

페이지 정보

작성자 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 16,958회 작성일 08-05-13 16:58

본문

12장. 서버를 안전하게 지키기 위한 전략

리눅스는 다른 회사에서 나온 운영체제만큼 -- 또는 더 -- 안전하다고 생각된다. 리눅스가 점점 더 인기가 있어짐에 따라 크래커들이 공격 노력을 집중할 만한 매우 매력적인 표적이 되어가고 있다. 가끔은 헛점이 발견되기도 하지만 리눅스가 갖고 있는 개방성때문에 그러한 헛점은 빨리 패치가 되고 임시로 어떻게 대처할 것인지 또는 갱신된 소프트웨어는 어디서 구할 수 있는지 등을 담은 보안관련 안내문이 널리 배포된다.

나는 보안분야에서 전문가인척 하려는 것은 아니다. 하지만 나는 이러한 문제에 관심을 갖고 있으며 어떤 시스템을 최대한 안전하게 만드는 전투에서 중요한 부분이라고 믿고 있다. 보안관련 최신 뉴스에 관심을 갖고 부지런히 대처한다고 해서 시스템의 보안이 무너지지 않는다고 보장할 수는 없지만 침입의 가능성은 상당히 낮추어 줄 수 있다.

비록 크래커가 시스템에 침입하기 위하여 악용할 수 있는 외부 서비스에서도 보안상 취약성이 발견되기도 하지만 (예를 들어, IMAP 데몬 취약성) 내 생각으로는 어떤 크래커가 시스템을 내부로부터 뚫고 들어올 가능성이 훨씬 높다고 본다. 외부 세계와 통신하는데 사용되는 서비스는 한 줌 밖에 안되는데 비하여 쉘에서 사용할 수 있는 명령과 유틸리티는 수천개가 넘는다. 이들 중 어떤 것은 버그가 있어서 보안을 무너뜨릴 가능성이 있다. (물론, 내가 관리하는 서버 중 하나가 최근에 외부 서비스를 통하여 탈취당한 적이 있긴하다)

이런 이유로 나는 사용자들에게 절대적으로 필요한 경우가 아니라면 쉘 계정을 주는 것을 피하도록 권고한다. 비록 사용자들이 전적으로 믿을만 하고 쉘을 제공하는데 전혀 마음에 꺼림칙한 구석이 없다고 하더라도 사용자중에 간단한 패스워드를 갖고 있는 사람이 하나만 있어도 모든 것은 허사가 된다. 외부의 크래커는 바로 이 간단한 패스워드를 이용하여 들어올 수 있고 이를 발판으로 안에서 작업을 하면서 그 외의 약점을 노리게 된다.

리눅스 시스템의 보안성을 엄청나게 끌어올리는 방법이 다행스럽게도 있다. 보안관련 사항에 대한 자세한 설명은 이 문서의 범위를 넘는 것이므로 보안수준을 높이기 위하여 하여야 할 몇가지 사항에 대한 체크 리스트를 제시하였다:

  • 시스템 도구, 응용 프로그램, 커널의 업그레이드: 현재까지 시스템 침입의 가장 공통된 이유는 서버를 최신 상태로 유지할만큼 부지런하지 않아서이다. 시스템 커널, 도구와 유틸리티에 대해서 정기적으로 업그레이드를 수행하면 취약성이 알려진 오래된 항목이 시스템에 많지 않게 된다. 시스템을 최신의 상태로 유지하는 방법에 대하여는 4.9절10.3절 을 참조하시요.

  • 섀도우 패스워드: 반드시 섀도우 패스워드를 사용하여야만 한다; 이 패스워드 형식으로 바꾸는 것은 쉽다! 자세한 내용은 6.6절 을 참조하시요.

  • 안전한 패스워드 관리: 패스워드는, 특히 쉘 액세스를 제공하는 사용사에 대한 패스워드는, 강력하고 자주 바꾸어야 한다. 그리고 만약 여러 시스템을 사용하고 있다면 모든 시스템에서 같은 패스워드를 사용하고 싶은 욕망을 뿌리쳐야 한다 (그렇지 않으면, 어떤 크래커가 알아낸 패스워드를 이용하여 침입해온 경우 모든 시스템에 침입할 수 있게 된다).

  • 보안 쉘(ssh)을 사용하라: ``ssh'' 를 ``telnet'' 대신에 사용하라. 텔넷은 두가지 이유에서 안전하지 않다: 첫번째는 세션 자체가 암호화되지 않는다. 따라서 사용자이름과 패스워드를 포함하여 모든 내용이 그냥 텍스트로 전송된다. 두번째 이유는 열려있는 텔넷 포트는 크래커가 연결을 시작하는 첫번째 장소이기 때문이다.

    ssh 는 암호화되고 압축된 연결을 제공하며 텔넷 연결보다는 훨씬 많은 보안을 제공한다. 리눅스에서는 ssh 서버와 (이는 안전하게 접속해 들어오는 것을 가능하게한다) 클라이언트 (다른 서버로 안전하게 접속하도록 해주는 것) 를 모두 제공한다. 바이너리 RPM 은 ftp://ftp.replay.com/pub/replay/redhat/i386/ 에서 구할 수 있다. 다음과 같은 파일이 필요하다 (이 글을 읽을 때 쯤이면 더 새로운 버전이 나와있을 것이다):

    참고: 주의: SSH RPM 파일은 국제용 버전이다. 만약 당신이 미국이나 캐나다에 거주하고 있다면 미국용 패키지(여기서는 더욱 강력한 암호화 알고리즘을 사용하고 있다)를 다운로드할 수 있다; 이들 패키지에는 ``i'' 대신에 ``us'' 가 버전 번호 뒤에 붙어있다. 미국의 법에 의하여 미국이나 캐나다 바깥으로 강력한 암호화 제품을 수출하는 것은 불법으로 되어 있다. 언젠가는 미국 법무부에 있는 얼간이들이 마침에 빛을 보게 되어 이러한 멍청한 제한을 제거해주길 바란다 (레드햇은 바로 이런 이유 때문에 자기들의 배포판에 SSH 를 포함시키지 않고 있으며 이로 인해 우리들 모두 가 고통 받고 있다).

    만약 윈도 사용자들이 더이상 당신 시스템에 접속을 할 수 없어서 흥분하고 있더라도 다음과 같은 윈도용 공짜 ssh 클라이언트가 있다는 사실을 알게 되면 행복해할 것이다:

    "TeraTerm Pro" 클라이언트 소프트웨어

    http://hp.vector.co.jp/authors/VA002416/teraterm.html

    "TTSSH" 클라이언트 소프트웨어

    http://www.zip.com.au/~roca/download.html

    "Cryptlib" 클라이언트 소프트웨어

    http://www.doc.ic.ac.uk/~ci2/ssh

    "Putty" 클라이언트 소프트웨어

    http://www.chiark.greenend.org.uk/~sgtatham/putty.html

    참고: 주의: 만약 ssh 을 쓰기로 결정했다면 모든 서버에 설치하고 사용해야한다. 만약 다섯 대는 안전한 서버를 쓰고 한 대는 그렇지 않다면 이는 시간 낭비다. 특히 만약 당신이 여러대의 서버에서 같은 패스워드를 쓸 정도의 바보라면.

  • 외부 서비스에 대한 액세스를 금지:그 다음에는 ``/etc/hosts.allow'' 파일과 ``/etc/hosts.deny'' 파일을 편집하여 외부 호스트에 대한 서비스 액세스를 제한한다. 다음은 telnet 과 ftp 액세스를 제한하는 예이다. 먼저 ``/etc/hosts.allow'' 파일은:

    # hosts.allow
    in.telnetd: 123.12.41., 126.27.18., .mydomain.name, .another.name
    in.ftpd: 123.12.41., 126.27.18., .mydomain.name, .another.name

    위의 예는 IP C 클래스 123.12.41.* 과 126.27.18.* 에 속하는 모든 호스트와 mydomain.name 과 another.name 도메인에 속하는 모든 호스트에서는 telnet 과 ftp 연결을 할 수 있도록 허용해주고 있다.

    다음은 ``/etc/hosts.deny'' 파일이다:

    # hosts.deny
    in.telnetd: ALL
    in.ftpd: ALL
  • 필요없는 서비스는 꺼두거나 제거한다: ``/etc/inetd.conf'' 파일을 편집하여 필요하지 않은 서비스는 (예를 들어, 만약 앞에서 권고한대로 ssh 를 사용하기로 하였다면 ``telnet'' 서비스는 꺼두고 싶을 것이다) 사용하지 않도록 막아준다 (즉, ``#'' 문자를 사용하여 주석으로 만들어 버린다). 이렇게 한 다음에는 루트로서 ``/etc/rc.d/init.d/inet restart'' 라고 타이핑하여 변경된 내용을 가지고 inetd 데몬를 다시 시작시킨다.

  • 보안 탐지 시스템을 설치한다: 보안 프로그램을 설치할 것을 고려한다. 예를 들어 ``Tripwire'' (http://www.tripwiresecurity.com/ 참조) 는 침입을 탐지할 수 있으며 ``Abacus Sentry'' (http://www.psionic.com/abacus/ 참조) 는 침입을 막는데 도움이 된다.

  • 주의 의무: 시스템에 대하여 항상 감시하고 무작위적으로 보안 감사를 하는 것은 (패스워드 파일에 이상한 항목이 있지는 않은지 확인하고, 프로세스 리스트를 검사하고, 로그 파일에 이상한 흔적이 있지 않은지 검사하는 등 간단한 절차로도 가능하다) 안전한 시스템을 향한 머나먼 여정의 출발점이다. 그리고 어떤 침입 시도라도 발견되면 관계 기관에 보고하여야 한다 -- 이렇게 하는 것이 성가실 수도 있다. 특히, 어떤 짧은 기간에 여러 번의 공격이 있었다면 특히나 그럴 것이다. 하지만 그러한 보고는 처벌에 대한 두려움때문에 크래커가 포기를 하게 할 수도 있고 다른 시스템은 (이미 그들도 탈취당해 있을 수 있다) 안전한지 확인할 수 있는 계기를 제공하기 때문이다.

  • 만약 시스템 도구와 응용 프로그램을 ``RPM'' 유틸리티로 설치하거나 업그레이드 한다면 설치된 패키지의 무결성을 다음과 같은 명령으로 감사해 볼 수 있다:

    rpm --verify -a > /tmp/rpm-audit.txt

    위의 명령은 당신 시스템의 RPM 데이터베이스를 이용하여 관련된 모든 파일을 검사한다. 만약 변경된 파일이 있으면 '5' 표시하여 나타내준다. 다음은 그러한 감사의 결과 예이다.:

    S.5....T   /bin/ls
    S.5....T   /usr/bin/du
    ......G.   /dev/tty5
    .....U..   /dev/vcs5
    .....U..   /dev/vcsa5
    S.5....T c /etc/lynx.cfg
    S.5....T c /etc/sendmail.cf

    위의 예시에서 목록에는 총 일곱개의 파일이 있고 그 중에서 네개가 수정되었다는 것을 알 수 있다. 시스템을 필요에 따라 커스터마이징하였다면 명백히 수정된 파일이 몇개, 사실은 상당히 많이, 있을 것이다. /etc/lynx.cfg/etc/sendmail.cf 를 눈으로 살펴보거나 백업본과 비교해 봄으로서 정상적인 설정을 위한 변경이었는지를 알 수 있게 된다.

    하지만 위의 예에서 수정된 파일 중에서 두개는 실행 가능한 이진 파일이다? 이들 두 바이너리, ``ls'' 명령과 ``du'' 명령, 는 아마 실제로는 시스템 크래커가 사악한 용도로 심어둔 트로이의 목마일 것이다. (``diff'' 명령을 이용하여 수정된 바이너리와 백업본 또는 RPM 에 들어있는 것을 비교해보면 크기 나 그 외 어떤 부분에서 심각한 차이가 있음을 알 수 있게 될 것이다; 이는 트로이 목마임을 드러내는 추가의 증거가 된다.)

    (``RPM'' 에 대한 자세한 정보는 10.1절 을 참조하시요.)

보안 관련 이슈에 대한 더 자세한 정보는 http://redhat-security.ens.utulsa.edu/ 에 있는 훌륭한 자원인 "Securing RedHat 5.x" 문서를 참조하기 바란다. 리눅스에서의 암호화나 관련 소프트웨어에 대한 훌륭한 정보는 http://replay.com/redhat 에 있다.

댓글목록

등록된 댓글이 없습니다.

Total 138건 8 페이지
리눅스 Tip 목록
번호 제목 글쓴이 조회 날짜
12 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15937 05-19
11 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17505 05-15
10 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15827 05-15
9 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11928 05-13
8 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15744 05-13
7 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18087 05-13
6 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17859 05-13
열람중 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16959 05-13
4 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15777 05-13
3 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16855 05-13
2 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18765 05-13
1 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15132 05-13
게시물 검색