[System Hardening] 시스템 단순화를 위한 필수 소프트웨어 관리

IMKUNYOUNG·2024년 6월 13일
0

CKS

목록 보기
32/70

이번 글에서는 시스템을 단순한 상태로 유지하기 위해 필요한 소프트웨어만 설치하는 방법에 대해 알아보겠습니다. 이는 시스템 보안과 효율성을 높이는 데 매우 중요합니다.

불필요한 소프트웨어 제거의 중요성

먼저, 노드에서 실행 중인 소프트웨어를 살펴봅시다. 시스템을 가능한 한 가볍게 유지하는 것은 항상 좋은 생각입니다. 이를 위해 필요한 소프트웨어만 설치하고, 설치된 소프트웨어는 보안 수정 사항을 반영하기 위해 지속적으로 업데이트해야 합니다.

이 일반적인 규칙은 단순히 쿠버네티스에만 적용되는 것이 아니라, 전체적인 보안에도 적용됩니다. 스스로에게 물어보세요, 쿠버네티스 클러스터의 노드에 아파치가 정말로 필요한가요?

아마도 운영 체제가 스냅샷에서 설치되었거나, 추가 소프트웨어가 포함된 이미지 템플릿에서 설치되었을 것입니다. 어느 경우든 필요하지 않은 소프트웨어는 노드에 설치되지 않아야 합니다.

  1. 사용하지 않을 소프트웨어: 절대 사용하지 않게 될 수도 있습니다.
  2. 시스템 복잡성 증가: 더 많은 유지 보수가 필요한 부품이 늘어남에 따라 시스템의 복잡성도 증가합니다.

새로운 취약점과 기존 패키지의 업데이트

매일 새로운 취약점이 발견됩니다. 기존 패키지가 제때 업데이트되도록 하는 것도 매우 중요합니다. 보안 유지와 시스템 안정성을 위해서는 주기적인 업데이트가 필수적입니다.

서비스 관리

다음으로, 리눅스 시스템이 부팅될 때 애플리케이션을 시작하는 데 사용되는 서비스를 살펴보겠습니다. 대부분의 최신 리눅스 배포판에서는 서비스가 systemd 프로세스에 의해 관리됩니다. systemctl 도구를 사용하면 systemd 서비스를 관리할 수 있습니다. 예를 들어, 상태를 확인하거나, 서비스를 시작 및 중지하는 등의 작업이 가능합니다.

Apache 서비스 상태 확인

예를 들어, 시스템에서 실행 중인 apache 서비스의 상태를 확인하려면 다음 명령을 실행할 수 있습니다:

$ systemctl status apache2

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2023-06-12 09:21:38 UTC; 2 days ago

이 명령을 통해 apache 서비스가 현재 시스템에서 활성 상태로 실행 중인지 확인할 수 있습니다.

서비스 구성 파일은 /lib/systemd/system/apache2.service에 위치해 있습니다. 대부분의 서버 구성 파일은 패키지가 설치될 때 함께 설치됩니다. 그러나 시스템에서 프로세스를 시작하기 위해 서비스를 수동으로 설치할 수도 있습니다. 소프트웨어 패키지와 마찬가지로, 시스템에서 실제로 필요한 서비스만 식별하여 실행하는 것이 중요합니다.

모든 서비스 목록 확인

시스템에 설치된 모든 서비스 목록을 보려면 다음 명령어를 사용할 수 있습니다:

$ systemctl list-units --type=service

UNIT                          LOAD   ACTIVE SUB     DESCRIPTION
apache2.service               loaded active running The Apache HTTP Server
cron.service                  loaded active running Regular background program processing daemon
dbus.service                  loaded active running D-Bus System Message Bus
...

불필요한 서비스 중지 및 비활성화

필요하지 않은 서비스 파일이 있다면, systemctl 명령을 사용하여 다음과 같이 서비스 중지 및 비활성화할 수 있습니다:

$ systemctl stop apache2
$ systemctl disable apache2

Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysvinstall.
Executing: /lib/systemd/systemd-sysv-install disable apache2

이제 서비스가 중지되고 비활성화되었으므로, 시스템에서 apache 패키지를 제거하려면 다음 명령을 사용할 수 있습니다:

$ sudo apt remove apache2

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap liblua5.2-0 ssl-cert
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
apache2
0 upgraded, 0 newly installed, 1 to remove and 23 not upgraded.
After this operation, 536 kB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 15908 files and directories currently installed.)
Removing apache2 (2.4.29-1ubuntu4.14) ...
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: policy-rc.d denied execution of stop.

추가 참고 자료

계속 진행하기 전에, 추가 참고 자료로 배포판에 독립적인 리눅스를 위한 CIS 벤치마크의 섹션 2를 확인할 수 있습니다. 이는 서비스를 구성할 때 따라야 할 모범 사례에 대한 권장 사항을 제공합니다.


이 글을 통해 시스템을 단순화하고 보안을 강화하기 위한 소프트웨어 및 서비스 관리를 어떻게 할 수 있는지 알아보았습니다. 이를 통해 시스템의 효율성을 높이고 유지 보수 작업을 줄일 수 있습니다.

0개의 댓글