예전것/시스템 보안2009. 5. 29. 12:02

문제:
솔라리스의 NFS(Network File System)을 이용하여 NFS서버로부터 파일시스템을
마운트하는 NFS클라이언트 시스템을 구축하고 싶다.
현재 네트웍에 존재하는 NFS서버의 hostname은 nserver 이며
NFS서버에서 제공하는 파일시스템은 /export/share이다.
그런데 위 NFS서버에서는 kerberos를 이용한 암호화 NFS만을 제공한다고 하며,
본 시스템(hostname은 nclient)은 이미 위 NFS서버의 principal에 등록이 된
상태이며, NFS서버로부터 kerberos ticket도 이미 받은 상태이다.
Kerberos의 암호화 옵션을 이용하여
위 NFS서버의 파일시스템을 본 시스템의 /home2로 mount하시오.
단, 이문제에서는 현재 접속된 쉘 상태에서 일회성으로 mount하면 되며,
시스템이 부팅될때마다 항상 mount되도록 설정할 필요는 없다.

NFS란? (http://www.terms.co.kr/NFS.htm 참조)


NFS는 컴퓨터 사용자가 원격지 컴퓨터에 있는 파일을 마치 자신의 컴퓨터에 있는 것처럼 검색하고, 마음대로 저장하거나 수정하도록 해주는 클라이언트/서버형 응용프로그램이다. 사용자 시스템에는 NFS 클라이언트가 있어야하며, 다른 컴퓨터 (원격지의 컴퓨터)에는 NFS 서버가 설치되어 있어야 한다. 또한, 둘 모두 TCP/IP 프로토콜이 설치되어 있어야 하는데, 왜냐하면, NFS 서버와 클라이언트가 파일을 보내거나 수정하는 프로그램으로 TCP/IP를 사용하기 때문이다 (그러나, 초기버전의 NFS에서는 TCP 대신에 UDP가 사용되기도 한다).

NFS는 썬마이크로시스템즈에 의해 개발되었으며, 파일서버의 표준으로 정착되었다. 이 프로토콜은 컴퓨터들 간의 통신 방법으로서 RPC를 사용한다. 윈도우 95와 썬(Sun)의 Solstice Network Client와 같은 제품을 사용하는 일부 운영체계에 NFS를 설치할 수 있다.

NFS를 이용하여, 사용자나 시스템관리자는 파일시스템의 전부 또는 일부를 설치할 수 있다. 설치된(액세스할 수 있도록 지정된) 파일시스템은 각 사용자들의 권한에 따라 개개의 파일을 액세스할 수 있게된다.

NFS는 인터넷 기술이 가미된 WebNFS로 확장되었으며, 이 제품과 제시된 표준안은 현재 넷스케이프 커뮤니케이터 브라우저의 일부이다. WebNFS는 썬마이크로시스템즈가 웹 페이지와 다른 인터넷 파일들을 빠르게 액세스할 수 있는 방법이라고 믿고 있는 바로 그것을 제공한다.

kerberos란? (http://www.terms.co.kr/Kerberos.htm 참조)

커베로스는 개방된 컴퓨터 네트웍 내에서 서비스 요구를 인증하기 위한 안전한 방법이다. 커베로스는 미국 MIT의 Athena 프로젝트에서 개발되었다. 이 이름은 그리스 신화에서 따왔는데, 커베로스는 저승의 신 하데스의 문을 지키는 머리가 셋 달린 개이다. 커베로스는 사용자가 인증 과정으로부터 암호화된 "티켓"을 요청할 수 있게 해주는데, 이 티켓은 서버에 특정 서비스를 요구하는데 사용될 수 있다. 사용자의 암호는 네트웍을 지나가야 할 필요가 없다. 커베로스의 클라이언트서버 버전은 MIT로부터 다운로드 하거나, 또는 상용 버전을 구입할 수 있다.

아래에 커베로스의 동작원리를 간단하게 설명하였다.

  1. 당신이 지금 텔넷이나 기타 이와 비슷한 로그인 요청을 통해, 다른 컴퓨터에서 서버에 액세스하기 원한다고 가정해 보자. 이 서버는 당신의 요청을 받아들이기 전에, 커베로스 "티켓"을 요구한다.
  2. 티켓을 받기 위해, 당신은 먼저 인증 서버에 인증을 요구한다. 인증 서버는 당신이 입력한 패스워드에 기반하여 "세션 키"와, 서비스 요구를 나타내는 임의의 값을 만든다. 세션 키는 사실상 "티켓을 부여하는 티켓"이다.
  3. 그 다음에 세션 키를, 티켓 부여 서버, 즉 TGS (ticket-granting server)에 보낸다. TGS는 인증 서버와 물리적으로는 동일한 서버에 있을 수 있지만, 그러나 지금은 다른 서비스를 수행한다. TGS는 서비스를 요청할 때 서버에 보낼 수 있는 티켓을 돌려준다.
  4. 그 서비스는 티켓을 거절하거나, 또는 받아들여서 서비스를 수행한다.
  5. TGS로부터 받은 티켓은 발송일자와 시간이 적혀있기 때문에, 일정 시간 동안 (대체로 8시간 동안) 내에는 재인증 없이도 동일한 티켓으로 다른 추가 서비스를 요청할 수 있다. 티켓을 제한된 시간 동안에만 유효하게 만듦으로써, 후에 어떤 사람이 그것을 사용할 수 없도록 만든다.
실제의 과정은 위에 설명한 것보다 더 복잡하며, 사용자 절차도 구현 내용에 따라 다소 달라질 수 있다.

mount 명령은 mount될 file system type의 지정을 위한 -F option을 갖고 있다.

예전것/시스템 보안2009. 5. 29. 00:58
문제:
Solaris시스템에 해커가 침입하여 root 권한을 빼앗기는 보안사고가 발생하였다.
해커가 침입을 한 상태에서 설치한 백도어를 찾아내야 한다. 그런데 이번
해킹패턴을 보면 /usr/sbin/ 디렉토리 있는 네트웍서비스 프로그램중에 하나가
백도어로 바뀐것으로 강하게 의심된다. 다행히도 해킹사고가 발생하기 이전에
/backup/usr/sbin 이라는 디렉토리를 만들어서 원본파일들을 이미 복사해 놓았다.
원본파일과 비교하여 백도어 프로그램을 찾아내시오.
(찾아낸 후에 정답확인 프로그램을 실행하여 백도어 프로그램 파일명을
입력하시오).

diff 명령어를 활용하자. diff명령어는 두 파일사이에 다른것이 있나 확인하는 명령어

#diff /usr/sbin /backup/usr/sbin
다른것이 하나있다.

#cksum ...
#cksum ...
찾은 파일의 체크섬 값을 비교해보자 - 다르다

예전것/시스템 보안2009. 5. 28. 22:37

csh를 사용하는 솔라리스 시스템 로그인을 한 상태에서 파일을 새로 생성할때마다
파일모드가 -rw-r-r-- (644)로 된다. 하지만 이 파일모드는 다른 유저가 파일
내용을 열람할 수 있는 취약점이 있기 때문에 좋지 않아서 일일이 생성된 파일에
대해서 chmod명령어를 통하여 -rw------- (600)으로 바꿔줘야만 했다.
이 작업은 번거롭기 때문에 쉘환경변수를 적절히 변경하여 새로 파일을
생성할때마다 default 파일모드가 -rw------- (600)이 되도록 설정하시오.
단, 이문제에서는 현재 접속되어 있는 쉘에 대해서만 일회성으로 바로잡으면 되며,
쉘환경변수 값을 영구적으로 바로잡기 위해 resource파일을 변경할 필요는없다.


umask에 관한 링크
http://ttongfly.net/zbxe/?mid=linux&page=3&document_srl=43500
http://unix.co.kr/bbs/board.php?bo_table=03_4&wr_id=279

umask를 변경하는문제인데 파일의 경우 기본 666 디렉토리의 경우 기본 777에서 umask값을 뺀값을 권한으로 지정해준다.

chmod의 정반대라고 생각하면 된다 .chmod는 권한을 주는것이지만 umask는 권한을 박탈하는것

따라서
#umask 077 이라고하면 그룹과 다른사용자의 읽기,쓰기,실행 권한을 박탈한다는 뜻이된다.
 q7hint에 자세히 나와있다.

예전것/시스템 보안2009. 5. 28. 21:34
문제:
 회사의 홈페이지 서버로 사용하기 위한 용도로 Linux시스템을 인스톨 하였다.
하지만, 인스톨하는 과정에서 일부 네트웍서비스가 같이 인스톨되었다.
이중, named 같은 네트웍서비스는 불필요한 것이므로 disable시켜야 된다.
시스템 설정을 변경시켜서 이 서비스가 영구적으로 제공되지 않도록 하시오.
(단, 나중에 다시 이 네트웍서비스가 필요하게 될지 확실치 않기 때문에
서비스 관련 파일들을 완전히 삭제해서는 안된다.)

#ps
#pkill named

#cd /etc/rc.d/rc3.d/   ( default run level이 3이므로 여기서 변경)

#mv S45named B45named (K로 해줘도 됨.)

S는 부팅시에 시작하기 위한것이다. 그뒤에 나오는 숫자는 우선순위를 의미합니다. 즉, 어떤것을 먼저 시작하는가에 대한 것이다. 그리고, K로 시작하는 것은 서버를 종료할때에 종료할 스크립트들이다. 즉, K로 시작하는 모든 파일들은 종료를 위한 스크립트이다. 뒤에 나오는 숫자는 종료시의 우선순위를 의미한다.


-- 리눅스는 부팅시에 런레벨에 따라 /etc/rc.d/rc?.d/로 들어가고 여기서 실행할것을 /etc/init.d에서 스크립트를 실행한다.
예전것/시스템 보안2009. 5. 28. 19:32
TTY란?
- The name of the program comes from teletypewriter, abbreviated "TTY"

TTY는 프로세스가 실행된 터미널 포트를 가리킨다.
TTY와 PTS로 표시가 되는데 의미는 다음과 같다

-로컬 시스템 로그인시 : tty + 가상터미널 수
-원격 시스템 로그인시 : pts/번호

가) netstat
시스템이 사용중인 프로토콜과 소켓에 대한 정보를 보여주는 명령으로 주요 사용법은 다음과 같다.

netstat -na
LISTEN - 연결대기
ESTABLISHED - 연결됨

lsof ('List Open File')에 관한 글.
http://www.superuser.co.kr/security/certcc/secu_certcc_15.htm



예전것/시스템 보안2009. 5. 26. 23:27

보안모니터링 프로그램 secure agent를 컴파일하여 실행파일을 얻었다.
그런데 이 실행파일은 daemon형태로 시스템에서 항상 실행되어야 하는 프로그램이다.
시스템이 부팅시마다 secure agent가 실행될 수 있도록 완전한 부팅 스크립트를
작성하여 적절한 위치에 설치하시오.
현재 secure agent 데몬의 실행파일 경로는 /usr/local/bin/sagentd이며,
설치하고자 하는 시스템은 solaris이다.


참조 : http://www.onurmark.co.kr/76 

리눅스에서는
/etc/init.d/ (문제의 solaris 시스템에서는 이디렉토리만 존재하지만 centos에서는 /etc/init.d도 있지만 /etc/rc.d/init.d도 존재. 똑같은 스크립트를 가진다. 왜 이런식으로 사용하는지는 잘모르겠다.- 검색이 더 필요)


여튼 , /etc/init.d/ 아래 있는 스크립트 파일들은 부팅시에 실행되는 것들이다.
여기에 sagentd가 실행될수있도록 아무 파일이나 만들자. (여기서는 SA라고 하자. 사실 sagentd로 만들고 싶었으나 같은 파일이 존재한다. 깨져서 먼말인지는 잘 모르겠다.)

#vi SA
을 치고 SA파일을 작성하자
#!/bin/sh
/usr/local/bin/sagentd
작성후 꼭
#chmod 755 SA 를 해서 실행가능하도록 해야한다..

실제로 리눅스는 부팅할때 /etc/rc.d/init.d에 있는 스크립트를 실행을 하게 되는데 이 파일들을 바로 불러서 쓰는것이 아니다. 이 스크립트들은 리눅스의 부팅 레벨이나 사용 설정에 따라 실행 되게 된다. 이러한 설정은 /etc/rc.d/에 보면 rcX.d(X는 숫자)로 되어있는 디렉토리가 있는것을 알 수 있다.

#grep 'initdefault' /etc/inittab
을 쳐서 default runlevel을 확인하자 ( runlevel은 3)

ln -s /etc/init.d/SA /etc/rc.d/rc3.d/S89SA   --> 심볼릭 링크를 만들어주자.
(뒤에 S의 의미는 부팅시 수행되는 스크립트라는 뜻. K가 붙으면 종료시 수행. S뒤의 숫자는 우선순위이다.)

사실 /etc/rc.d/rc3.d/S89SA 파일을 만들고 작성해서 사용해도되지만 나중에 관리가 힘들어진다고 한다.

이제 끝

finish







예전것/시스템 보안2009. 5. 26. 03:16

inetd 데몬은 ftp, telnet등을 탑재(?)한 데몬인데 항상 수행되지는않으나 가끔 수행되는것을 여기에 놓고 쓴다고한다,

inetd vs xinetd(eXtended inted)
xinetd는 inted의 문제점을 보완하고 기능이 추가된 확장판이라고 할 수 있다.

더 자세한 사항 :
http://www.linuxplanet.com/linuxplanet/tutorials/4505/2/ 

문제 : 그동안 ftp서버로 사용하던 시스템을 ftp서비스를 더이상 제공하지 않고
다른 용도로 사용하게 되었다.
현재 제공되고 있는 ftp서비스를 중지시키고
앞으로도 부팅시에도 더이상 제공되지 않도록 필요한 시스템 설정을 바꾸시오.

vi /etc/inetd.conf 에 inetd에 관한 설정이 들어있다. ftp관련 항목을 #으로 주석처리한다.
/etc/services 에도 ftp 항목이있고 이것은 주석처리 안해주어도 상관없다. 이것은 포트 번호를 모를때 우리는 그냥 ftp, smtp 이렇게 쓰는데 이것의 역도 된다. (주석처리를 하면 안됨, 보안과는 별 상관이 없는듯하다.)

/ ************* 퍼온 글
/etc/services에 있는 것은 그냥 서버스의 영문약자를 숫자로 전환하기 위한
테이블에 불과하고,
ipchains나 iptables와 같은 툴로 다 필터링이 가능하다고, *************/

이것만 해도 문제가 풀린다.

inetd데몬을 중지시키기 위해서 inetd데몬이 어디 위치해 있는지 찾고 중지시키는것도 괜찮겠다.
하지만 이방법은 ftp가 아닌 다른 서비스도 중지시키므로 자제.

데몬관리 : http://ask.nate.com/knowhow/view.html?num=123513 여기 참고

 (2)슈퍼데몬 inet에서 관리하는 데몬
   1) inet에서 관리하는 전체를 중지 또는 실행시키는 방법
    ㄱ. 커널 2.2 버전
       /etc/rc.d/init.d/inet stop
       /etc/rc.d/init.d/inet start
    ㄴ. 커널 2.4 버전
       /etc/rc.d/init.d/xinetd stop
       /etc/rc.d/init.d/xinetd start
    ㄷ. 참고: 위의 방법으로 inet을 중단시키면 inet데몬에 관련된 모든 데몬들이 작동을 하지 않는
             다. 그러므로, 한가지 데몬만을 중단한 경우에는 적합하지 않다.

   2) inet(또는 xinetd)에서 관리하는 데몬중 일부만 중지시키기
    ㄱ. 커널 2.2 버전: inet데몬에서 일부만 중단하려면 /etc/inetd.conf 파일에서 한다. 해당 서비
                      스 항목의 맨 앞에 주석처리('#')를 하면 해당 서비스에 해당하는 데몬이
                      작동하지 않는다.

   예) telnet서비스 중단하기
       #telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
        => (항목설명)
          - 서비스이름: /etc/services파일에 정의된 텔넷, ftp와 같은 특정 서비스들을 의미
          - 소켓타입: 서비스에 의해 사용된 연결의 타입을 기술. 보통 tcp서비스인 경우에는
                     'stream', udp서비스인 경우에는 'dgram'이 옴
          - 프로토콜: 네트워크 프로토콜 타입이 기술된다. 보통 'tcp'나 'udp'가 옴.
          - 대기상태: 하나의 서버프로세스가 한번에 여러 요청을 처리할 수 있는지를 나타냄. wait
                     이면 inetd가 서비스들에 대한 각각의 요청을 처리하기 위해 여러 프로세스가
                     생성되는 것을 방지하고 nowait라고 설정되어 있으면 각각의 요청을 위해 프로
                     세스를 생성
          - 사용자이름: 네트워크 서비스를 수행해야 할 로그인 이름
          - 서버프로그램: 네트워크 서비스를 활성화시키기 위해 수행해야 할 프로그램을 가리킴
          - 서버프로그램인자: 네트워크 서비스가 수행되기 시작할 때, 전달 되어야 할 인자와 설정
                             플래그들을 나열
    ㄴ. 커널 2.4 버전: /etc/xinetd.d디렉토리에 보면 xinetd에서 관리하는 데몬들의 파일이 생성
                     되어 있다. 만약 telnet이면 telnet이라는 파일의 항목에서 'disable = yes'
                     라고 설정하면 해당 데몬은 xinetd에서 실행하지 않는다. 또는 'chkconfig
                     telnet off' 하면 된다.