OS/SOLARIS2007. 7. 20. 20:01
반응형

Content

  • Solaris 에서의 Patch
  • HP-UX 에서의 Patch
  • ACDC98 소개
  • References

 

0. General Information

이 문서는 김휘강(sakai@major.kaist.ac.kr) 에 의해 만들어 졌습니다. 저자의 허가없이 무단으로 도용, 게제할 수 없습니다.

1. Solaris 에서의 Patch

1.0. What is the patch?

    ** patch :  헝겊조각 (깁는데 쓰는), 천조각, 판자조각, 덧대는 쇳조각 (수리용)

    사전적 의미에서도 바로 짐작할 수 있듯이 , OS 가 출시된뒤 OS 내부의 package 나 application program 또는 kernel 모듈에 버그가 발견된 경우 이를 바로잡기 위해 vendor 측에서 update 모듈을 내놓는데 이것이 바로 patch 이다.

    각각의 패치에는 고유한 Patch ID 가 부여되는데 xxxxxx-xx 와 같은 형태로 부여된다.

    앞의 6 자리는 ID serial number 이고 뒤의 두자리는 revision number 이다. 그러므로 같은 ID serial number를 가지고 있다하더라도, revision number 가 높을수록 최근에 나온 patch 임을 알 수 있다.

1.1. How to apply whole Patches?

  • http://sunsolve1.sun.com/pub-cgi/us/pubpatchpage.pl 에서 공식적인 recommended patch 를 구할 수 있고, OS 별 PATCH Report 를 구할 수 있다.
    Recommended Patch 와 Security Patch 의 Patch Cluster 를 다운로드 받아서 한꺼번에 설치를 하고 난 후에는 security mailing list 에 가입하여 지속적으로 추가되는 패치사항에 대해서만 patch 를 적용하면 된다.

    Recommended Patch 를 설치하는 경우에는 OS_VERSION_Recommended.tar.Z 파일을 다운로드 한 후 다음과 같이 설치하면 된다.

    # zcat OS_VERSION_Recommended.tar.Z | tar xvf -
    # cd OS_VERSION_Recommended
    # installcluster .
    ......

    security patch 에 대해서만 patch 를 apply 하고 싶다면, "http://sunsolve1.sun.com/pub-cgi/secbul.pl 에서 security bulletin 을 읽고 자신의 OS 버전에 해당된 버그를 찾아 대응되는 패치를 적용하면 된다. 이 경우에는 install_patch 라는 스크립트를 쓰는데, 자신이 패치하려고 하는 패치의 Patch ID 가 무엇인지를 반드시 확인하도록 한다.

    예:

    다음과 같이 실행하여, 솔라리스 패치를 적용시킨다.

    예를 들어 major 란 호스트에서 Patch ID 가 103817-03 인 패치를 설치해야 하는 경우라고 하면,

    우선 자신의 호스트에 103817-03 패치가 기존에 설치되어 있는지를 확인하도록 한다. 이는 /usr/bin/showrev 커맨드를 사용하여 손쉽게 확인할 수 있다.

    # showrev -p | grep 103817-03
    Patch: 103817-03  Obsoletes:   Packages: SUNWcsu
    #

    위와같은 출력결과가 나왔다면 이미 설치가 된 경우이고 아무것도 출력결과가 없다면 설치가 되지 않은 경우이다.

    설치가 되지 않았다면 ftp://sunsolve1.sun.com/pub/patches/103817-03.tar.Z 에서 파일을 받아온 후, 다음과 같이 설치하도록 한다.

    major# ./installpatch .
    Checking installed packages and patches...
    Generating list of files to be patched...
    Verifying sufficient filesystem capacity (exhaustive method)...
    Installing patch packages...
    Patch number 103817-03 has been successfully installed.
    See /var/sadm/patch/103817-03/log for details
    Patch packages installed:
      SUNWcsu
    major#

    패치가 설치된 후에 에러메시지나 결과 log 는 /var/sadm/patch/ 디렉토리 밑에 PATCH_ID 의 디렉토리 아래에 log 파일로 저장이 되게 된다. 다음에 다루겠지만, 패치를 uninstall 하고 싶은 경우에는 /var/sadm/patch/PATCH_ID/ 디렉토리에 있는 backoutpatch 스크립트를 사용하면 된다.

    시스템에 여유공간이 별로 없는 경우라면 /var/sadm/patch 디렉토리를 삭제해도 무방하다. showrev -p 에서 읽어들이는 정보는 /var/sadm/pkg/ 디렉토리에 기록되어 있는 package information 이므로 현재 시스템에 설치되어 있는 patch 정보를 알아내는 데에는 영향을 주지 않으므로 /var/sadm/patch를 삭제해도 문제없다.

1.2. How to back out patches?

    backout을 하는 경우는 패치를 설치한 후 시스템이 비정상적으로 작동하는 경우나, OS 버전에 맞지 않는 잘못된 패치를 설치한 경우 (이런 경우는 거의 드물다. 대개 설치시 installpatch script에서 error handling을 해준다.), 또는 패치를 설치할 때 에러가 발생한 경우, 설치한 패치를 제거하고 싶을 때이다.

    이때에는 /var/sadm/patch/PATCH_ID/backoutpatch 스크립트를 실행시키면 된다.

    # backoutpatch PATCH_ID

    와 같은 형태로 명령을 수행해 주면 안전하게 패치가 uninstall 된다.

    아래의 Exit Code 는 backoutpatch를 수행할 때 발생할 수 있는 Exit Code 를 나열한 것이다.

    # Exit Codes:
    #       0   No error
    #       1   Usage error
    #       2   Attempt to backout a patch that hasn't been applied
    #       3   Effective UID is not root
    #       4   No saved files to restore
    #       5   pkgrm failed
    #       6   Attempt to back out an obsoleted patch
    #       7   Attempt to restore CPIO archived files failed
    #       8   Invalid patch id format
    #       9   Prebackout script failed
    #       10  Postbackout script failed
    #       11  Suspended due to administrative defaults
    #       12  Backoutpatch could not locate the backout data
    #       13  The relative directory supplied can't be found
    #       14  Installpatch has been interrupted, re-invoke installpatch
    #       15  This patch is required by a patch already installed, can't back it out

    아래는 major 란 호스트에서 Patch ID 가 103817-03 인 패치를 제거(back out) 하는 예이다.

    major# ./backoutpatch 103817-03
    Checking installed packages and patches...
    Patch 103817-03 has been backed out.
    major# showrev -p | grep 103817
    Patch: 103817-01  Obsoletes:   Packages: SUNWcsu
    Patch: 103817-02  Obsoletes:   Packages: SUNWcsu

     

1.3 참고사항 (중요)

  • 패치를 적용할 때 , required 패치가 설치할 패치 이전에 설치되어 있어야 한다. 참고로 Solaris 2.5.1 머쉰에서 사전에 필요한 패치를 하지 않고 패치를 실행시켰을 때의 예이다.
    Solaris2.5.1_machine# ./installpatch .
    Checking installed packages and patches...
    ERROR: This patch requires the following patches
    which have not been applied to the system:
    103566-36 106663-01 106662-01 103901-11
    Installpatch is terminating.
     
    이 예에서는 103666-36.tar.Z , 106663-01.tar.Z , 106662-01.tar.Z , 
    103901-11.tar.Z 를 pre-required patch 로 설치를 사전에 해두어야 한다.  
  • 패치를 설치할 경우나 backout 시킬 때에는 single user mode 로 로긴하여 패치를 하는 것이 원칙이다. 하지만 이것이 여의치 않을 경우 (가령, 24 시간 Full Service 를 하고 있는 시스템인 경우) 에는 가급적 시스템이 조용한 상태에서 , 즉 사용자가 뜸한 시간이라든가 작동되고 있는 프로세스 수가 적은 시간 대를 이용해서 패치를 하는 것이 바람직하다.
  • 패치를 설치한 후에는 리부팅을 시켜야 한다. 간단히 application 프로그램의 바이너리 파일만 패치하는 경우가 아닌 커널모듈이나 데몬을 패치하는 경우라면 가급적 리부팅을 시켜주도록 한다.

2. HP-UX 에서의 PATCH

2.1. How to apply whole Patches?

  • 아래의 사이트에서 패치를 구하도록 한다. 자신이 어떤 항목에 관련된 패치를 적용할 것인지 미리 키워드를 알고 있는 것이 좋다. 아직 아래의 사이트에서는 OS 별 , 패키지별 패치항목을 표로 정리해서 보여주고 있지 않다.
  • 원하는 패치를 받아왔으면 간단하게 sh을 이용하여 압축을 풀도록 한다. 압축을 풀고나면 패치에 대한 간략한 설명이 포함되어 있는 PATCH_ID.text 파일과 PATCH_ID.depot 파일이 생성되게 된다.  이 파일들을 swinstall을 이용해서 설치해 주기만 하면 된다. X windows 환경이나 CDE 환경 하에서는 GUI 로 swinstall 이 작동되며, 그렇지 않은 경우에는 text 모드로 작동되게 된다.
  • 아래는 PHCO_8246 이라는 팻치를 설치하는 예제이다.

     # sh PHCO_8246  
     PHCO_8246.text  PHCO_8246.depot
     # swinstall -s $PWD/PHCO_8246.depot

    swinstall에서 패치가 기존에 설치되어 있는지, 또는 시스템에 맞는 패치인지를 알아서 점검해 주므로 상당히 편리하다.

2.2 참고사항 (중요)

    PATCH_ID.depot 파일 내에 Automatic Reboot? 항목이 yes 인지 no 인지 사전에 반드시 확인해야 한다. Automatic Reboot 이 yes 로 되어 있는 경우 패치를 설치함과 동시에 시스템이 rebooting 되기 때문이다.

3. ACDC98 소개

  • 보안에 관련되서 한달에 한두 개 정도는 새로운 버그가 지적이 되고 이를 해결해주는 패치역시 1~2 개 정도는 꼬박꼬박 나오게 마련인데, 시스템 관리를 하면서 자기가 관리하고 있는 시스템이 어떤 것이 패치가 되어 있는지, 또 어떤 것이 패치가 되어 있지 않은지 일일이 점검해 보기는 보통 시간을 많이 잡아먹는 일이 아니다. 이를 위해 Solaris 2.x에서 Security 관련 패치에 대해 패치상황을 점검해 주고 , 필요한 패치를 다운로드 받도록 지시해 주는 간단한 프로그램이다.

    이 프로그램에서 점검해 주는 항목들은 다음과 같다. 이 프로그램 내에서는 98/11/14 일까지 발표된 security 상의 문제점을 점검하고 그에 대한 패치가 설치되어 있는가를 점검한다. 프로그램에서 체크해 주는 항목들은 꾸준히 업데이트 될 예정이다.

     

    OS Version

    check list

    Solaris 2.3

    Solaris_2.3.txt

    Solaris 2.4

    Solaris_2.4.txt

    Solaris 2.5

    Solaris_2.5.txt

    Solaris 2.5.1

    Solaris_2.5.1.txt

    Solaris 2.6

    Solaris_2.6.txt

         # gzip -dc acdc98.tar.gz | tar xvf -
           # make all
           # ./acdc

  • result report

      성공적으로 버그에 대한 검색이 끝났다면 results.html 이 생성되었을 것이다.
        시스템 내의 WWW browser 를 이용해서 보면 된다.

    다음은 captain.kaist.ac.kr 에서의 실행 예이다.


     

장점

    이 프로그램의 장점은 알고리즘이 단순하기 때문에 빠르고 시스템에 부하를 거의 주지 않는다. 또 관리자에게 도움이 될 만한 문서를 많이 제공해 주고 있다.

4. References

반응형

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

Solaris 보안  (0) 2007.08.01
Solaris 설치 후 기본적인 설정  (0) 2007.07.25
SOLARIS PATCH ERROR CODE  (0) 2007.07.20
Trunking  (0) 2007.07.20
solaris 10 DVD 여러개 파일 한개이미지로 합치기  (0) 2007.07.19
Posted by [PineTree]