리눅스보안강좌#6 : yum을 활용한 업데이트 자동화 방법
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,067 조회
- 0 추천
- 목록
본문
yum을 활용한 업데이트 자동화 방법
어떠한 시스템이든 보안에 완벽할 수 없는 만큼 네트워크가 연결되어 있는 이상 시스템 및 패키지 패치와 업데이트는 서버관리의 기본 사항이다.
물론 우리가 사용하고 있는 리눅스 역시 예외는 아닐 것이다.
하지만 리눅스 서버를 운영하다보면 어떠한 패키지를 업데이트 하여야 할지도 모르겠고, 일일이 찾아서 업데이트를 해 주어야 하는 것 역시 여간 불편한 일이 아닐 수 없다. 더군다나 업데이트 때문에 의존성 등 다른 문제가 발생하지 않을까 하는 막연한 두려움이 있는 것도 사실이다.
그러나 그 중에서도 가장 큰 문제는 리눅스 서버가 한 두 대가 아닐 때이다.
버전이 각기 다른 각 서버에 로그인하여 버전 확인 후 일일이 패치하는 것이 만만한 일이 아니기 때문이다.
따라서 Windows Update와 같이 전문적인 지식이 없어도 안전하고 편하게 자동으로 업데이트를 할 수는 없을까 하는 의구심이 생길 것이다.
물론 이를 해결하기 위한 답은 있다.
이와 관련된 몇 가지 솔루션이 나와 있지만 가장 권장할 만한 서비스는 yum이다.
yum은 Yellow dog Updater, Modified의 약자로 미국의 duke 대학에서 python 언어로 개발되고 있는데, yum에 대한 자세한 내용은 다음의 홈페이지를 참고하기 바란다.
http://linux.duke.edu/projects/yum/
[그림] yum 홈페이지
위 사이트에서 제공되는 yum rpm 또는 소스 파일을 설치한 후 간단히 yum을 실행하면 현재 시스템에 설치되어 있는 rpm 버전 정보와 최신 업데이트 버전 정보를 비교하여, 좀 더 정확하게 이야기하면 rpm의 헤더 정보를 비교하여 업데이트 여부를 확인 후 업데이트를 시작하게 된다.
. 이때 /etc/yum.conf에 지정되어 있는 서버에 접속한 후 rpm의 헤더 파일을 비교하여 다운로드 하게 되는데, duke 대학뿐만 아니라 국내 등 여러 곳에서 업데이트 서버를 제공하고 있으므로 적당한 서버를 지정하여 사용하면 된다.
. 물론 wget이나 rsync를 이용하여 미러링을 하면 자체적으로 업데이트 서버를 운영할 수도 있다.
필자의 회사에서도 업데이트 서버를 한 대 운영하고 있어 리눅스 설치 후에는 반드시 yum을 실행하여 자동 패치를 하고 있는데, 약 3-4분이면 패치작업이 끝난다.
만약 아무런 옵션 없이 yum을 실행하면 사용할 수 있는 옵션을 제공하는데, 일반적으로 update와 install을 많이 사용하므로 이 옵션 정도만 알고 있으면 된다.
. 아래와 같이 “yum -y update”를 실행하면 현재의 시스템에 설치되어 있는 rpm의 헤더 정보와 업데이트 서버에 있는 헤더 정보를 비교하여 최신의 rpm으로 패치를 하게 된다.
. 여기에서 -y는 일일이 설치 여부를 묻지 않고 업데이트 한다는 의미로 만약 -y를 지정하지 않으면 매번 패키지마다 업데이트 할 것인지 묻게 된다.
. 따라서 "yum -y update"를 cron에 걸어두면 자동으로 업데이트를 하므로 일일이 패치를 하지 않아도 언제나 시스템을 최신의 패치된 상태로 유지할 수 있을 것이다.
그런데, 무엇보다 rpm 업그레이드 및 설치 시 문제될 수 있는 것이 바로 의존성(dependency) 문제인데, yum은 이 문제를 자동으로 해결하므로 의존성 관련 문제는 걱정하지 않아도 된다.
. 아래는 yum을 실행한 결과인데, 현재 모든 패키지가 업데이트 되어 있다는 것을 알 수 있다.
# yum -y update Loading "installonlyn" plugin Setting up Update Process Setting up repositories Reading repository metadata in from local files No Packages marked for Update/Obsoletion |
만약 rpm을 삭제하거나 업데이트하려고 하는데, 아래와 같이 동일한 rpm이 두개 이상있을 경우 error가 나면서 삭제가 되지 않는다.
# rpm -qa|grep mysql mysql-4.1.20-2.RHEL4.1 mysql-4.1.20-2.RHEL4.1
# rpm -e mysql-4.1.20-2.RHEL4.1 error: "mysql-4.1.20-2.RHEL4.1" specifies multiple packages
이러한 경우 다음과 같이 "--allmatches" 옵션을 주어 삭제하면 된다.
.
# rpm -e mysql-4.1.20-2.RHEL4.1 --allmatches --nodeps |
아래에서는 lsof라는 rpm이 설치되어 있지 않을 때, install을 실행하여 자동으로 설치하는 예를 보여주고 있다.
# yum install lsof Loading "installonlyn" plugin Setting up Install Process Setting up repositories Reading repository metadata in from local files Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. --> Downloading header for lsof to pack into transaction set. lsof-4.78-3.x86_64.rpm 100% |=========================| 7.2 kB 00:00 ---> Package lsof.x86_64 0:4.78-3 set to be updated --> Running transaction check Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Installing: lsof x86_64 4.78-3 base 326 k Transaction Summary ================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 326 k Is this ok [y/N]: y Downloading Packages: (1/1):lsof-4.78-3.x86_64 100% |=========================| 326 kB 00:00 Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: lsof ######################### [1/1] Installed: lsof.x86_64 0:4.78-3 Complete! |
물론 http://rpmfind.net/ 이나 http://rpm.pbone.net/등을 통해 특정 rpm을 조회하여 설치도 가능하다.
yum을 이용하면 개별 패키지뿐만 아니라 설치과정에서 나오는 그룹 패키지도 설치할 수 있다.
먼저 어떤 그룹이 있는지 조회를 해 보자.
# yum grouplist Installed Groups: MySQL Database Editors System Tools ........ Available Groups: Engineering and Scientific Administration Tools Yum Utilities .......
이후 설치도 간단히 할 수 있다.
# yum groupinstall "Yum Utilities" Dependencies Resolved
================================================================== Package Arch Version Repository Size ================================================================== Installing: yum-fastestmirror noarch 1.0.4-3.el5.centos.2 base 12 k yum-priorities noarch 1.0.4-3.el5.centos.2 base 10 k yum-utils noarch 1.0.4-3.el5.centos.2 base 44 k yumex noarch 2.0.3-2.el5.centos extras 325 k
Transaction Summary ================================================================== Install 4 Package(s) Update 0 Package(s) Remove 0 Package(s)
Total download size: 391 k Is this ok [y/N]: y
Installed: yum-fastestmirror.noarch 0:1.0.4-3.el5.centos.2 yum-priorities.noarch 0:1.0.4-3.el5.centos.2 yum-utils.noarch 0:1.0.4-3.el5.centos.2 yumex.noarch 0:2.0.3-2.el5.centos Complete!
|
yum을 이용하여 업데이트를 자동화하는 것과 더불어 중요한 문제가 업데이트 패치의 제공기간이다.
2000년대 초기에는 국내 대부분의 리눅스 배포판은 레드햇(RedHat) 또는 레드햇 계열을 사용하였는데, 현재 레드햇 7.x/8.0/9.0은 2004년 4월말로 업데이트가 종료되었다. 따라서 프로그램의 호환성 문제로 이전 버전의 배포판을 사용하여야 하는 경우라면 아래의 fedora legacy 에서 반드시 패치버전을 설치할 것을 권장한다. 현재 메인 프로젝트는 종료되었으므로 사이트에서 제공하는 mirror 사이트에서 다운로드 받으면 된다.
.
아울러 이와는 별개로 레드햇 리눅스 이후의 상용 제품인 레드햇 엔터프라이즈 리눅스(RHEL-RedHat Enterprise Linux)를 rebuild하여 이와 호환되는 별개의 배포판을 제공하는 project가 있는데, 이 역시 무료로 다운로드받아 사용할 수 있으며 패치 역시 RHEL처럼 배포판 제공 후 5년 동안 업데이트를 제공한다. 이러한 대표적인 project는 아래와 같다.
가장 대중적으로 사용되고 있는 배포판은 역시 CentOS(센토스라고 발음한다.)라고 할 수 있다.
이는 상용버전인 RHEL버전을 rebuild한 것으로 가장 활발하게 개발 및 업데이트를 제공하며 사용자층도 꾸준히 증가하고 있다.
패치나 업데이트도 RHEL과 거의 비슷하게 제공된다.
.
[그림] centos 홈페이지
수퍼유저코리아에서 제공하는 서버전용 배포판으로 SSU 등 여러 유틸리티를 제공한다.
레드햇 7.x를 기반으로 하여 제공하고 있는 배포판으로 보안을 강화한 일종의 mini 레드햇이라고 할 수 있다.
꾸준한 업데이트를 제공하고 있다.
taolinux와 비슷한 성격으로 역시 RHEL 버전을 rebuild한 배포판이다.
community 보다는 개인적인 성격이 강하다.
레드햇의 지원으로 운영 중인 커뮤니티 배포판으로 RHEL 도입에 앞선 실험적인 기능들이 많이 사용되고 있으며 업데이트 기간이 다소 짧다.
물론 가능하다면 기술지원이 제공되는 상용버전인 RHEL을 사용하는 것이 좋겠지만 그렇지 못한 경우라면 위의 배포판을 이용하는 것이 좋은 방법이 것이다.
강사 : 홍석범부매니저 소속: 라쿠텐
관련자료
-
이전
-
다음