리눅스를 서버로 사용할 경우 설치시 서버의 사용용도(예: 웹 서버, 애플리케이션 서버, 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 패키지를 삭제할 수 있습니다.