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 프로그램의 바이너리 파일만 패치하는 경우가 아닌 커널모듈이나 데몬을 패치하는 경우라면 가급적 리부팅을 시켜주도록 한다.
- OS 버전 별 패치들의 리스트 및 패치를 정리해 놓은 표는 http://sunsolve1.Sun.COM/sunsolve/us/pubpatches/patches.html 에서 구할 수 있다.
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.4
Solaris 2.5
Solaris 2.5.1
Solaris 2.6
- 설치 및 실행
이 프로그램은 다음의 사이트에서 구할 수 있다.
http://mgt.kaist.ac.kr/~sakai/DOWNLOAD/ACDC98.tar.gz
다운로드 받은 프로그램을 다음과 같이 설치한 뒤 실행하면 된다.
# 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 |