Lynis를 사용하여 Linux 시스템의 보안을 감사하는 방법

리눅스 컴퓨터의 보안을 점검하고 시스템을 최대한 안전하게 유지하는 데 Lynis는 매우 유용한 도구입니다. 인터넷 연결 기기의 보안은 매우 중요하며, Lynis를 사용하면 시스템을 안전하게 보호할 수 있습니다.

리눅스 시스템, 얼마나 안전한가?

Lynis는 자동화된 보안 테스트 도구로, 리눅스 운영체제의 다양한 설정과 구성 요소를 상세하게 검사합니다. 검사 결과는 색상으로 구분되어 표시되며, ASCII 형식의 경고, 개선 제안, 그리고 필요한 조치 목록으로 제공됩니다.

사이버 보안은 균형을 맞추는 작업입니다. 과도한 편집증은 오히려 해로울 수 있습니다. 그렇다면 어느 정도까지 주의해야 할까요? 신뢰할 수 있는 웹사이트만 방문하고, 첨부 파일을 열거나 스팸 메일의 링크를 클릭하지 않고, 모든 계정에 강력한 비밀번호를 사용한다면 리스크는 얼마나 될까요? 특히 리눅스를 사용하는 경우라면 어떨까요?

반대로 생각해 봅시다. 리눅스도 악성코드로부터 안전하지 않습니다. 사실, 최초의 컴퓨터 웜은 1988년에 유닉스 시스템을 공격하기 위해 만들어졌습니다. 또한, 루트킷은 유닉스 최고 관리자(루트)의 권한을 얻어 시스템에 침투하는 소프트웨어 모음입니다. 이는 공격자에게 시스템 접근 권한을 제공할 수 있습니다.

루트킷이라는 이름이 붙은 이유는 무엇일까요? 최초의 루트킷은 1990년에 공개되었으며, 썬 마이크로시스템즈썬OS 유닉스 시스템에서 사용되었습니다.

악성코드는 유닉스에서 시작되었지만, 윈도우가 대중화되면서 윈도우 시스템을 공격하는 방향으로 발전했습니다. 하지만 현재 리눅스 사용자가 증가함에 따라 리눅스와 맥OS와 같은 유닉스 계열 운영 체제 또한 공격자들의 주요 표적이 되고 있습니다.

컴퓨터 사용 시 주의를 기울이고 조심한다면 리스크는 어느 정도일까요? 이에 대한 답은 복잡합니다. 간단히 말해, 사이버 공격은 매우 다양하고 교묘하며, 과거에는 불가능하다고 생각했던 일들도 가능하게 합니다.

류크와 같은 루트킷은 시스템이 꺼져 있을 때에도 Wake-on-LAN 기능을 통해 컴퓨터를 감염시킬 수 있습니다. 심지어 개념 증명 코드도 개발되었으며, 벤구리온 대학교 연구진은 공격자가 에어 갭 컴퓨터에서 데이터를 유출할 수 있음을 입증했습니다.

미래의 사이버 위협을 예측하기는 어렵지만, 시스템 방어의 취약점을 미리 알고 보완하는 것은 매우 중요합니다. 현재 또는 미래의 공격 유형에 관계없이 이러한 취약점을 해결하는 것이 합리적인 선택입니다.

대부분의 사이버 공격은 특정 개인이나 조직을 표적으로 삼지 않습니다. 악성코드는 사용자가 누구인지에 관심이 없기 때문에 무차별적으로 확산됩니다. 자동화된 포트 스캔 등의 기술을 통해 취약한 시스템을 찾아 공격합니다. 시스템의 취약점은 곧 공격의 표적이 될 수 있습니다.

이러한 위험을 방지하기 위해 Lynis가 필요한 것입니다.

Lynis 설치

Ubuntu에 Lynis를 설치하려면 다음 명령어를 실행합니다.

sudo apt-get install lynis

Fedora에서는 다음 명령어를 입력합니다.

sudo dnf install lynis

Manjaro에서는 pacman을 사용합니다.

sudo pacman -Sy lynis

보안 감사 실행

Lynis는 터미널 기반 도구이므로 GUI가 없습니다. 감사를 시작하려면 터미널 창을 엽니다. 터미널 창을 전체 높이로 조정하거나 최대한 늘리는 것이 좋습니다. Lynis의 출력량이 많기 때문에 터미널 창이 클수록 결과를 검토하기가 더 용이합니다.

또한 Lynis 전용 터미널 창을 사용하는 것이 더 편리합니다. 여러 명령어를 실행하는 중에 결과 창을 스크롤할 필요가 없어 Lynis 결과를 쉽게 탐색할 수 있습니다.

감사를 시작하려면 다음과 같은 간단한 명령어를 입력합니다.

sudo lynis audit system

감사가 진행되면 터미널 창에 범주 이름, 테스트 제목 및 결과가 순차적으로 표시됩니다. 감사는 몇 분 안에 완료되며, 완료되면 명령 프롬프트로 돌아갑니다. 결과를 확인하려면 터미널 창을 스크롤하십시오.

감사의 첫 번째 섹션에서는 리눅스 버전, 커널 릴리스, 그리고 기타 시스템 정보가 감지됩니다.

검토해야 할 부분은 주황색(제안) 및 빨간색(해결해야 할 경고)으로 강조 표시됩니다.

다음은 경고의 예입니다. Lynis는 postfix 메일 서버 구성과 배너 설정을 분석하고 문제를 발견했습니다. 발견된 내용과 문제점에 대한 자세한 내용은 나중에 확인할 수 있습니다.

아래에서는 Lynis가 우리가 사용하는 Ubuntu 가상 머신에 방화벽이 설정되어 있지 않다는 경고를 표시합니다.

결과를 스크롤하여 Lynis가 발견한 모든 항목을 확인하십시오. 감사 보고서의 하단에는 요약 화면이 표시됩니다.

“경화 지수”는 시스템 보안 점수입니다. 이 시스템의 점수는 100점 만점에 56점입니다. 그리 높지 않은 점수입니다. 총 222개의 테스트가 수행되었으며, Lynis 플러그인 하나가 활성화되었습니다. Lynis 다운로드 페이지에서 뉴스레터를 구독하면 더 많은 플러그인 링크를 얻을 수 있습니다.

플러그인에는 GDPR, ISO27001, 그리고 PCI-DSS 표준에 대한 감사를 위한 플러그인이 포함되어 있습니다.

녹색 V 표시는 통과를 의미하며, 주황색 물음표와 빨간색 X 표시는 주의가 필요한 항목을 나타냅니다.

방화벽과 악성코드 스캐너가 설치되어 있어 녹색 확인 표시가 나타납니다. 테스트를 위해 우리는 rkhunter를 설치하여 루트킷 탐지기를 사용했고, Lynis가 이를 감지하는지 확인했습니다. 위의 결과에서 볼 수 있듯이 Lynis는 “Malware Scanner” 옆에 녹색 확인 표시를 추가했습니다.

감사 시 규정 준수 플러그인을 사용하지 않았기 때문에 현재 규정 준수 상태를 알 수 없습니다. 이 테스트에서는 보안 및 취약성 모듈을 사용했습니다.

감사 결과로 두 개의 파일이 생성됩니다. “/var/log/lynis-report.dat”에 저장된 데이터 파일은 터미널 창에서 볼 수 있는 결과를 색상 강조 없이 복사한 것입니다. 이 파일은 시스템 경화 수준이 시간 경과에 따라 어떻게 개선되는지 확인하는 데 유용합니다.

터미널 창을 스크롤하면 제안 사항과 경고 목록을 볼 수 있습니다. 경고는 중요도가 높은 항목이므로 먼저 검토해 보겠습니다.

다음은 다섯 가지 경고입니다.

“Lynis 버전이 너무 오래되었으므로 업데이트해야 합니다.”: 실제로 이것은 Ubuntu 저장소에 있는 최신 버전의 Lynis입니다. 4개월밖에 되지 않았지만 Lynis는 이 버전을 오래된 것으로 간주합니다. Manjaro 및 Fedora 패키지의 최신 버전이 있습니다. 패키지 관리자의 업데이트는 항상 약간 뒤쳐질 수 있습니다. 최신 버전을 원한다면 GitHub에서 프로젝트를 복제하여 최신 상태를 유지할 수 있습니다.
“단일 모드에 암호가 설정되어 있지 않습니다.”: 단일 모드는 루트 사용자만 사용할 수 있는 복구 및 유지 관리 모드입니다. 기본적으로 이 모드에는 암호가 설정되어 있지 않습니다.
“응답하는 네임 서버를 2개 찾을 수 없습니다.”: Lynis가 2개의 DNS 서버에 연결을 시도했지만 실패했습니다. 이는 현재 DNS 서버가 작동하지 않을 경우 다른 서버로 자동 전환되지 않는다는 것을 의미합니다.
“SMTP 배너에서 일부 정보 공개가 발견되었습니다.”: 정보 공개는 응용 프로그램이나 네트워크 장비가 표준 응답에서 제조업체 및 모델 번호와 같은 추가 정보를 제공하는 경우를 의미합니다. 이를 통해 공격자는 시스템의 취약점을 파악할 수 있습니다. 연결된 소프트웨어나 장치를 식별하면 관련 취약점을 쉽게 찾을 수 있습니다.
“iptables 모듈이 로드되었지만 활성 규칙이 없습니다.”: Linux 방화벽이 실행 중이지만 규칙이 설정되어 있지 않습니다.

경고 해결

각 경고에는 문제점과 해결 방법을 설명하는 웹 페이지 링크가 제공됩니다. 링크 위에 마우스 포인터를 놓고 Ctrl 키를 누른 상태에서 클릭하면 해당 웹 페이지가 브라우저에 열립니다.

이전 섹션에서 다룬 네 번째 경고에 대한 링크를 Ctrl+클릭하면 아래 페이지가 열립니다.

이러한 경고들을 하나씩 검토하고 필요한 조치를 취할 수 있습니다.

위의 웹 페이지에서는 원격 시스템이 Ubuntu 컴퓨터에 설정된 postfix 메일 서버에 연결할 때 전송되는 기본 정보(“배너”)가 너무 자세하다고 설명합니다. 지나치게 많은 정보를 제공하는 것은 보안에 도움이 되지 않으며, 오히려 공격자에게 취약점을 제공할 수 있습니다.

웹 페이지에서는 배너가 “/etc/postfix/main.cf”에 위치한다고 알려줍니다. 이 배너를 “$myhostname ESMTP”만 표시하도록 변경해야 한다고 조언합니다.

Lynis의 권장 사항에 따라 다음 명령어를 입력하여 파일을 편집합니다.

sudo gedit /etc/postfix/main.cf

파일에서 배너를 정의하는 줄을 찾습니다.

Lynis에서 권장하는 대로 텍스트를 수정합니다.

변경 사항을 저장하고 gedit를 닫습니다. 변경 사항을 적용하려면 postfix 메일 서버를 다시 시작해야 합니다.

sudo systemctl restart postfix

이제 Lynis를 다시 실행하여 변경 사항이 적용되었는지 확인해 보겠습니다.

“경고” 섹션에는 이제 4개의 경고만 표시됩니다. postfix 관련 경고는 사라졌습니다.

이제 경고가 4개, 제안이 50개 남았습니다!

보안 강화를 위한 노력

만약 시스템 보안을 처음으로 강화한다면, 많은 경고와 제안을 마주하게 될 것입니다. 각 경고를 주의 깊게 검토하고 Lynis 웹 페이지의 안내에 따라 문제 해결 여부를 결정해야 합니다.

이상적으로는 모든 문제를 해결하는 것이 바람직하지만, 실제로는 쉽지 않을 수 있습니다. 또한 일부 제안은 일반 가정용 컴퓨터에는 과도할 수 있습니다.

예를 들어, USB 액세스를 사용하지 않을 때 USB 커널 드라이버를 블랙리스트에 추가하는 것은 보안에 도움이 될 수 있지만, 중요한 비즈니스 서비스를 제공하는 시스템에 더 적합합니다. Ubuntu 가정용 PC에는 필요하지 않을 수도 있습니다.