패키지 설치 정책

최소 패키지 설치

리눅스를 서버로 사용할 경우 설치시 서버의 사용용도(예: 웹 서버, 애플리케이션 서버, DB 서버등)에 맞게 필요한 패키지만 최소로 설치하는 것이 좋습니다.

예로 DB 전용 서버라면 Web Server 나 FTP Server, Bind name 서버는 필요없으므로 설치하지 않는게 좋습니다.


사용하지 않는 서버 프로세스를 설치하고 부팅시마다 구동하는 것은 불필요하게 시스템의 자원을 사용하며 보안상 문제를 일으킬 수 있으며 운영체제 업그레이드나 패치가 힘들어 지며 재부팅시 오래 걸리는 문제가 있습니다.

CentOS 7 최소 설치 화면

특히 웹 서버나 메일 서버같이 DMZ 구간에 설치되는 서버는 최소 설치후 서비스에 필요한 패키지만 설치하는 것이 좋습니다.


외부 저장소 비활성화 또는 최소화

RHEL 이나 CentOS 의 경우 패키지 정책이 매우 보수적이므로 오래된 패키지가 탑재되어 있는 경우가 많습니다. 예로 CentOS 6 에는 PHP 5.3.3 과 Ruby 1.8 이 탑재되어 있으므로 ruby on rails 나 laravel 같은 프레임워크가 제대로 동작하지 않습니다.

그렇다고 일일이 소스를 가져다가 컴파일해서 설치하는 것은 시간도 오래 걸리고 업데이트와 패치 문제가 발생하므로 어쩔수 없이 WebTatic 이나 Remi 등 3rd party 저장소를 사용할 수 밖에 없는 경우가 있습니다.


하지만 외부 저장소를 사용할 경우 해당 저장소가 해킹당하면 오염된 패키지가 그대로 설치될 우려가 있으며 실제로 윈도 업데이트 서버를 공격해서 기업내 PC 들을 감염시킨 사례들도 많이 있습니다.


이때문에 보안을 위해서라면 3rd party 저장소 사용은 최소화하고 꼭 필요할 경우 잘 관리되고 있는 저장소를 사용하는 것이 좋으며 MySQL 이나 nginx 등 주요 패키지들은 Webtatic 이나 remi 보다는 개발사가 직접 제공하는 저장소를 통해서 설치하는 것을 권장합니다.


X-Windows 삭제

리눅스 시스템을 설치할 때  X-Windows 는 반드시 제외하고 이미 설치된 서버라면 삭제하는 게 좋습니다.

X-Windows 는 용량이 크고 의존성 있는 패키지가 많으므로 잦은 업데이트가 발생하게 되며 시스템의 리소스를 많이 소모하는 문제가 있습니다.


콘솔에 익숙하지 않아서 X-Windows 를 통해서 관리를 해야 한다면 지속적으로 교육과 훈련을 통해 리눅스 커맨드 라인에 익숙해지는 것이 원활한 시스템 관리 업무 수행을 위해 필요합니다.

X-Windows 가 구동되고 있다면 먼저 systemctl isolate multi-user.target  명령어로 런 레벨(run level)을 graphical 에서 multi-user 으로 변경한 후에 삭제해야 합니다.

RHEL과 CentOS 에서는 다음 명령어로 X-Windows 패키지를 삭제할 수 있습니다.

$ sudo systemctl isolate multi-user.target  
$ sudo yum groupremove "X Window System"
X Windows 삭제

우분투 서버는 X Windows 를 포함하고 있지 않으므로 서버용으로 설치할 경우에는 데스크탑대신 서버를 설치해야 합니다.


패키지 삭제

이미 설치해서 사용중인 시스템이라면 사용하지 않는 서비스 패키지들은 삭제하는 것이 좋으며 CentOS 에서는 다음 명령어로 현재 설치된 패키지의 목록을 확인할 수 있습니다.


$ sudo yum list installed
CentOS 패키지 삭제


우분투에서는 아래 명령어로 설치된 전체 패키지의 목록을 볼 수 있습니다.

$ sudo apt --installed list
우분투 설치 패키지 목록 보기

삭제할 패키지가 있다면 패키지 관리자를 통해서 삭제할 수 있습니다. CentOS 는 yum remove 명령어를 우분투는 apt remove 명령어를 삭제할 패키지 이름과 함께 사용하면 됩니다.

예로 아래 명령어는 FTP 서버 데몬인 vsftpd 를 삭제하는 명령어입니다.


$ sudo yum remove vsftpd
CentOS vsftpd 삭제
$ sudo apt remove vsftpd
우분투에서 vsftpd 삭제


특히 운영 시스템에 컴파일러나 디버기등의 개발 도구가 설치되어 있을 경우 이를 사용하여 Buffer overflow 공격을 시도할 수 있으므로 보안을 위해 개발 도구를 삭제하는 것이 좋습니다.

만약 여러 가지 이유로 패키지를 컴파일해서 설치해서 사용해야 한다면 운영 환경에 컴파일러를 설치한 후에 빌드하지 말고 개발이나 테스트 환경에서 빌드한 후에 이를 rpm 으로 패키징하거나 또는 tar 로 묶어서 운영 환경으로 옮겨서 사용해야 합니다.


$ sudo yum groupremove "Development tools"
CentOS 개발 도구 삭제

우분투 서버의 경우 gcc 개발 패키지가 시스템과 밀접하게 연결되어서 삭제하면 시스템이 제대로 동작하지 않으므로 삭제하지 말고 그대로 두면 됩니다.


만약 만드는 웹 서비스가 금융권 서비스와 연동되어야 할 경우 보안성 심의등을 받아야 할 수 있으며 이때 운영 서버에 개발 도구가 설치되었을 경우 수정 권고가 나올 수 있으므로 외부 기관과 연동되어야 하는 서버는 RHEL이나 CentOS 를 사용하는 것도 방법입니다.