이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:

작성자: 정웅구
편집자: 엔시스



안녕하세요! 정웅구입니다.

지난 번 포스팅에서는 윈도우 시스템 보안 설정에 관해서 포스팅을 했는데요 이번에는 유닉스 시스템 보안 설정에 관해 포스팅 하겠습니다. ^^

01. 계정 관리
02. 서비스 관리
03. 패치 관리
04. 접근 제어
05. 파일 및 디렉터리 관리


01. 계정 관리

 - 취약한 패스워드 점검

 - 사용하지 않는 계정의 삭제

 - 중복된 root계정의 존재 여부

   => root 이외의 관리자 계정의 존재 여부를 확인하는 방법은?!

# grep ':0:' /etc/passwd

    cf). root 계정 이외의 관리자 계정 생성하기

     ①. useradd로 wung9 계정 생성


     ②. /etc/passwd 파일의 내용 변경(User ID 부분을 "0"으로~)


       여기서 잠깐!!! /etc/passwd의 구조에 대해 알아보겠습니다. 각각의 정보는 ':'으로 나뉘어져 있고 의 각 항목이 의미하는 것은 순서대로 다음과 같습니다.

         ⓐ. 사용자 계정
         ⓑ. 암호화 되어 있는 패스워드(/etd/shadow file)
         ⓒ. 사용자 번호
           - 관리자 : 0번
           - 일반 사용자 : 500번부터
         ⓓ. 그룹 ID
         ⓔ. 실제 이름
         ⓕ. 사용자의 홈 디렉터리
         ⓖ. 사용자 쉘(로그인이 필요없는 사용자의 경우 /bin/bash -> /bin/false로 바꿔준다.)

     ③. 계정의 패스워드 설정


     ④. 생성 확인


 - 계정에 대한 정책 적용

   => /etc/shadow file에서 할 수 있습니다.


   ①. 사용자 계정
   ②. 암호화된 패스워드
   ③. 1970년 1월 1일을 기준으로 마지막 패스워드를 바꾼 날까지의 값(days)
   ④. 패스워드를 바꾸기 전에 패스워드를 사용한 기간(days)
   ⑤. 패스워드를 바꾸지 않고 사용할 수 있는 최대 사용기간(days)
   ⑥. 위의 ⑤번에서 설정한 값 몇 일 전에 경고를 보낼 것인가 지정(days)
   ⑦. 계정 사용에 대한 제한을 설정한 다음 언제 사용 정지되게 할 것인가 설정(days)
   ⑧. 계정의 사용이 정지된 기간(1970년 1월 1일을 기준으로)(days)
   ⑨. 관리자가 임의로 사용할 수 있는 부분


02. 서비스 관리

 - 먼저 솔라리스에서 기본적으로 동작되는 서비스를 nmap을 통해 알아보겠습니다.


 - 상당히 많은 서비스가 기본적으로 동작하고 있음을 알 수 있습니다. 그럼 중요한 서비스에 대해 알아볼까요?

   (1). echo(포트 7)

     - RFC862 에 정의(링크)

     - 어떤 시스템이 echo 포트로 데이터를 보내면 데이터를 보낸 시스템에게 똑같은 데이터를 보냄

   (2). discard(포트 9)

     - RFC863 에 정의(링크)

     - 어떤 데이터를 받더라도 그 데이터를 소거하는 역할(응답을 보내지 않음)

   (3). chargen(포트 19)

     - RFC 864에 정의(링크)

     - 입력 값에 상관없이 임의의 문자열을 보냄

   (4). ftp(포트 21)

     - 원격 버퍼 오버플로우 공격

     - 포맷 스트링 공격

     - anonymous 로그인

     - root 계정의 로그인 허용

     - 로그인 사용자의 제한

       => ftp의 경우 해당 시스템에 계정이 있으면 누구나 로그인 가능
       => /etc/ftpuser 파일을 통해 계정 제한

   (5). ssh(포트 22)

     - telnet의 계량형으로 암호화된 통신을 한다.

     - ssh는 ssh1, ssh2 2가지 종류가 있으며 둘의 특징은 다음과 같습니다.

       ①. Cipher for encryption

 Cipher ssh1  ssh2
 DES  ○  X 
 3DES  ○  ○
 IDEA  ○  X
 Blowfish  ○  ○
 TwoFish  X  ○
 Arcfour  X  ○
 Cast128-cbc  X  ○

       ②. Cipher for authentication

 Cipher  ssh1  ssh2 
 RSA  ○  X
 DSA  X  ○


   (6). telnet(포트 23)

     - /etc/default/login 파일에서 원격 접속 설정

       ①. #CONSOLE = /dev/console : 로컬 및 원격에서 root로 접속 가능
       ②. CONSOLE = /dev/console : 콘솔에서만 접속 가능
       ③. CONSOLE = : root로 로그인되지 않고 일반 유저로 접속 후 su를 통해 접속 가능

   (7). smtp(포트 25)

     - 메일을 보내기 위한 프로토콜

     - sendmail의 경우 expn과 vrty 명령의 실행을 통해 사용자 목록화 가능 이를 방지하기 위해 /etc/maill/sendmail.cf 파일 안의  O PrivacyOptionsnoexpnnovrfy를 추가해준다.

   (8). tftp(포트 69)

     - ftp의 간략화 버전으로 인증과정이 없다.

     - 라우터나 스위치처럼 저장 매체가 설치되지 않은 시스템이 자신의 운영체제를 내려받을 때 사용

     - tftp 사용 시 /etc/inetd.conf에서 주석 표시를 제거해주고 -s /tftpboot 옵션을 주고 실행

   (9). finger(포트 79)

     - 서버에 현재 로그인 중인 사용자 계정에 대한 정보를 확인

   (10). http(포트 80)

     - 웹 서비스  수행

   (11). sunrpc(포트 111)

     - 자신에게 연결을 요청한 클라이언트에게 등록된 포트 중 적당한 포트를 할당해주고 클라이언트는 rpc로 받은 서버 정보를 이용해 자신에게 필요한 서비스를 포트로 접속

     - 관련 취약 서비스 : rpc.statd, rpc.ttdbserver

     - /etc/init.d/rpc stop

     - /etc/rc2.d 아래에 있는 rpc 서비스 제거

   (12). lockd(포트 4045)

     - nfs를 사용할 경우에 하나의 클라이언트가 시스템 자원에 대해 자원을 공유할 때 파일을 여는 동안 다른 클라이언트가 중복 변경을 행하지 않도록 파일을 잠그는(lock) 데몬이다.

     - /etc/rc2.d/S73nfs.client 를 제거

03. 패치관리

 - 해당 벤더 사이트에서 패치

1. RedHat


2. Solaris


3. HP-UX


4. IBM


04. 접근 제어

 - 유닉스(솔라리스)에서 접근 제어를 하기 위해 TCPWrapper를 사용합니다.

 - TCPWrapper를 이용한 접근 제어를 하기 전에 inetd(수퍼 데몬)의 대한 이해가 필요합니다. 그래서 먼저 inetd에대해 살펴보고 그 후 TCPWrapper를 이용한 설정에 대해 알아보겠습니다.

 1. inetd 데몬

                                                                  <inetd 데몬의 구성>

   (1). 그림과 같이 텔넷과 FTP 클라이언트가 서버에 접속을 요구하면 inetd 데몬이 이를 확인

   (2). /etc/inetd.conf 파일에 데몬에 대한 설정을 읽음

   (3). /etc/services 파일에서 설정된 포트 번호에 대해 클라이언트의 요청이 있을 때  텔넷 데몬을 실행

   - /etc/inetd.conf 파일을 vi를 통해 열면 아래 그림과 같다. 파일에는 여러 데몬에 대한 설정이 7개 부분으로 나와 있는데 각 부분에 대해 알아보자.


     ①. telnet -> 서비스

       - 서비스 이름을 정의하며, /etc/services에 정의되어 있어야 한다.



     ②. stream -> 소켓 타입
    
       - tcp의 경우 stream, udp의 경우 dgram

     ③. tcp6 -> 프로토콜

       - /etc/protocols에 정의된 프로토콜의 종류와 번호


     ④. nowait -> 대기설정

       - inetd가 서비스 요청을 받은 경우 즉시 처리할 것인가의 여부에 따라 nowait or wait

     ⑤. root -> 로그인 이름

       - 데몬을 어떤 사용자의 권한으로 수행할 것인가 명시

     ⑥. /usr/sbin/in.telnetd -> 서버

       - 해당 서비스를 수행하기 위해 어떤 프로그램을 실행시킬 것인가를 절대경로로 표시

     ⑦. in.telnetd -> 인자

       - 데몬을 실행하는데 필요한 인자 값

2. TCPWrapper Tool

 - 솔라리스 9에는 /usr/sfw/sbin에 기본적으로 설치되어 있다.

 - 위에서 inetd 데몬에 대해 알아보았습니다. 여기에 TCPWrapper가 설치되면 데몬의 동작이 아래와 같이 바뀝니다.


   ①. inetd 데몬은 클라이언트의 요청을 tcpd 데몬에게 넘겨준다.

   ②. tcpd 데몬은 클라이언트의 요청이 적절한 접근 권한이 있는지 확인

 - TCPWrapper의 설정(telnet의 경우)

   ①. /etc/inetd.conf 파일의 telnet  stream  tcp6  nowait  root  /usr/sbin/in.telnetd  in.telnetd
telnet  stream  tcp6  nowait  root  /usr/sfw/sbin/tcpd  in.telnetd로 바꿔줍니다.

   ②. 접근 제어 설정 시 /etc/hosts.allow/etc/hotst.deny를 사용 

     -> 두파일에 기록하는 접근 통제 규칙

데몬 목록 : 클라이언트 목록 [:쉘 명령]

   ③. 설정 확인

/usr/sfw/sbin/tcpdck

05. 파일 및 디렉터리 관리

 - PATH에 현재 디렉터리를 의미하는 '.'를 포함시키지 않는다.

 - umask값을 022 또는 027로 지정

 - /etc 디렉터리
   ▷ 여러가지 시스템에 대한 설정 파일을 담고 있는 디렉터리
   ▷ 기본은 755이나 751로 주는 것이 좋다.

 - /bin
   ▷ 명령에 대한 실행 파일을 담고 있는 디릭터리
   ▷ 기본은 777이나 771로 주는 것이 좋다.

 - /usr/bin
   ▷ 기본은 755이나 751로 주는 것이 좋다.

 - /sbin


 - /tmp, /var/tmp
   ▷ 임의의 사용자가 모두 사용할 수 있는 디렉터리
   ▷ 이 디렉터리에는 스티키 비트가 설정되어 있다.

 - /var/log
   ▷ 여러가지 로그 정보를 담고 있는 파일
   ▷ 755 -> 751

 - /etc/ssh
   ▷ ssh 연결 시 필요한 공개키 등의 정보를 담고 있다.
   ▷ 755 -> 750

 - /etc/crontab
   ▷ cron 데몬에 의한 자동 실행을 설정할 수 있는 파일

 - /etc/syslog.conf
   ▷ 시스템 로그에 대한 설정을 담고 있는 파일
   ▷ 640이하로 권한 설정

 - /var/log/wtmp
   ▷ 시스템 접속에 대한 로깅
   ▷ 640이하로 권한 설정

 - /var/log/lastlog
   ▷ 시스템에 로그인한 사용자에 대한 로그 정보
   ▷ 640이하로 권한 설정

 - /etc/ftpusers
   ▷ 관리자나 특정 계정에 대해 ftp 로그인이 불가능하도록 설정하는 파일
   ▷ 644 -> 600

 - /etc/passwd
   ▷ 계정에 대한 기본적인 정보를 제공
   ▷ 444 -> 400

 - /etc/shadow
   ▷ 암호화된 패스워드가 있는 파일

 - /etc/hosts.equiv
   ▷ 시스템에 대한 신뢰(trust)를 설정할 수 있는 파일
   ▷ 권한을 600이하로 설정

 - /etc/hosts.allow, /etc/hosts.deny
   ▷ 기본적으로 존재하는 파일이 아니므로 생성 후 권한 변경
   ▷ TCPWrapper에서 접근 권한을 설정하는 파일
   ▷ 권한을 600이하로 설정

 - /etc/securetty
   ▷ 텔넷 등에 대한 접근 제어 설정
   ▷ 권한을 600이하로 설정

 - /etc/rc.d/init.d, /etc/init.d
   ▷ 시스템을 부팅할 때의 설정 파일
   ▷ 755 -> 750

 - /etc/initd.conf
   ▷ 시스템이 제공하는 서비스에 대한 정보를 담고 있다.
   ▷ 777 -> 600

 - /etc/cron.allow, /etc/cron.deny
   ▷ cron 데몬에 대한 접근 제어 파일
   ▷ 기본적으로 존재하는 파일이 아니므로 생성 후 권한 변경
   ▷ 권한을 400으로 준다.

 - /etc/hosts
   ▷ 시스템에 접근하는 호스트들에 대한 IP와 호스트 이름을 확인할 수 있는 정보를 제공
   ▷ 권한을 644 이하로 준다.



****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 비회원

댓글을 달아 주세요

  1. Favicon of https://eva1717.tistory.com BlogIcon eva1717 2009.05.05 19:08 신고  댓글주소  수정/삭제  댓글쓰기

    정말 실무적으로 적용할 수 있게끔 깔끔하고, 세부적으로 정리해주신 것 같아요...^.^

    매 달 서버들을 정기정검하는데, 참고할 수 있도록 하겠습니다..^^

    (혹시, 서버 정검 메뉴얼 만드는데 갖다 써도 될까요?>ㅇ<;;;;)

    무튼, 좋은 내용 포스팅 하시느라 수고 많으셨습니다..^^

    감사합니다^_-

    (참.. 유식스 오타 있어요..^^ 4번째 Line...
    조금 자세히 봐서 보이나부네요..^^)

    • Favicon of https://ctf-hub.tistory.com BlogIcon 정웅구 2009.05.05 20:07 신고  댓글주소  수정/삭제

      eva1717님께 도움이 되신다면 당연히~ㅋ

      그리고 오타 지적 감사합니다. 제가 또 자세히 보니까 다른 곳에도 몇몇 오타가 있어서 수정했습니다.

      감사합니다~ ^0^

  2. Favicon of https://boanin.tistory.com BlogIcon 보안인닷컴 2009.05.06 08:50 신고  댓글주소  수정/삭제  댓글쓰기

    웅구씨 고생했습니다. 그림까지 넣으려면 시간 많이 걸렸을텐데..아무튼 하나씩 하나씩 만들어가 보자구요..

  3. Favicon of https://whoaru.tistory.com BlogIcon 후아유! 2009.05.10 01:24 신고  댓글주소  수정/삭제  댓글쓰기

    솔라리스 처음 접했을때.. 조금 당황했던 기억이 떠오르네요^^;;
    리눅스랑 별반 차이가 없ㄷ ㅏ생각하다가..
    좀 달랐던;;

    감사합니다^^

    • Favicon of https://ctf-hub.tistory.com BlogIcon 정웅구 2009.05.11 18:32 신고  댓글주소  수정/삭제

      저도 옛~~~날에 리눅스 혼자서 공부하다가 완전히 까먹은 상태에서 유닉스인 솔라리스를 접하게 되서...공부하고 다시 리눅스 공부를 했더니 차이점이 무자게 보이던데요.. ㅋ 나중에는 유닉스 별 그리고 리눅스와 차이점들을 간락하게(?) 정리해서 포스팅하겠습니다.(지금은 다른 것을 하고 있어서요.. ^^;)

  4. gofighting 2009.05.29 11:59  댓글주소  수정/삭제  댓글쓰기

    항상 좋은 내용 감사합니다.

    근데요, 저만 그런가요?

    이미지가 안떠요 ^_^//

    • Favicon of https://ctf-hub.tistory.com BlogIcon 정웅구 2009.05.30 19:00 신고  댓글주소  수정/삭제

      앗~! 답글 늦어서 죄송합니다.. 오랜만에 들어와서리 ^^;

      잘 나타나던 이미지가... ㅡㅜ

      확인 후 수정했습니다. 감사합니다~! ^0^a

  5. Favicon of https://boanin.tistory.com BlogIcon John_G 2009.06.01 04:50 신고  댓글주소  수정/삭제  댓글쓰기

    제 개인용 서버도 보안설정 해줘야겠습니다..
    있는 그대로이다보니 (디폴드 환경?) 손좀 봐야할곳이 많네요 하핫;;

  6. Favicon of https://tripwithson.tistory.com BlogIcon [건희아빠] 2010.01.21 17:13 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 자료 감사합니다. 덕분에 많은 도움 되었습니다.