Linux 서버의 보안을 향상시키는 7가지 방법

과거에는 리눅스가 ‘모호함을 통한 보안’이라는 인식을 얻었었습니다. 사용자들은 해커의 주요 타겟이 되지 않아 안심할 수 있었죠. 하지만 더 이상은 아닙니다. 2017년과 2018년에는 리눅스 버그와 취약점을 악용하여 악성코드, 바이러스, 루트킷 등을 설치하는 정교한 해커들이 많았습니다.

최근 익스플로잇, 악성 프로그램, 기타 리눅스 사용자에게 피해를 주는 공격 사례가 급증하자, 오픈 소스 커뮤니티는 보안을 강화하여 대응에 나섰습니다. 그러나 이것만으로는 충분하지 않습니다. 서버에서 리눅스를 사용한다면, 아래 목록을 살펴보고 리눅스 서버 보안을 향상시키는 방법을 배우는 것이 좋습니다.

1. SELinux 적극 활용

SELinux, 즉 Security-Enhanced Linux는 리눅스 커널에 내장된 보안 도구입니다. 활성화되면 사용자가 설정한 보안 정책을 쉽게 적용할 수 있으며, 이는 강력한 리눅스 서버의 필수 요소입니다.

많은 RedHat 기반 서버 운영 체제는 SELinux가 활성화되어 있고, 기본 설정도 꽤 잘 되어 있습니다. 하지만 모든 운영 체제가 기본적으로 SELinux를 지원하는 것은 아니므로, 활성화 방법을 알려드리겠습니다.

참고: Snap 패키지는 SELinux 대신 AppArmor를 필요로 합니다. SELinux를 선택하면 특정 리눅스 운영 체제에서 Snap을 사용하지 못할 수도 있습니다.

CentOS/Rhel

CentOS와 RedHat Enterprise Linux는 모두 SELinux 보안 시스템을 기본 제공합니다. 훌륭한 보안을 위해 미리 구성되어 있으므로 추가적인 설정은 필요하지 않습니다.

우분투 서버

Karmic Koala 버전 이후로 Ubuntu는 SELinux 보안 도구를 매우 쉽게 활성화할 수 있도록 했습니다. 설정하려면 다음 명령을 입력하십시오.

sudo apt install selinux

데비안

우분투와 마찬가지로 Debian에서도 SELinux를 아주 쉽게 설정할 수 있습니다. 다음 명령을 입력하십시오.

sudo apt-get install selinux-basics selinux-policy-default auditd

데비안에 SELinux 설치를 완료한 후에는 소프트웨어 위키 항목을 참고하십시오.. 운영 체제에서 사용하기 위해 알아야 할 많은 정보가 담겨 있습니다.

SE리눅스 설명서

SELinux가 작동하게 되면, SELinux 매뉴얼을 읽고 작동 방식을 익히는 것이 좋습니다. 서버 보안에 큰 도움이 될 것입니다!

SELinux 매뉴얼을 보려면 터미널에서 다음 명령을 입력하십시오.

man selinux

2. 루트 계정 비활성화

리눅스 서버를 보호하는 가장 현명한 방법 중 하나는 루트 계정을 비활성화하고, Sudoer 권한만 사용하여 시스템 작업을 수행하는 것입니다. 루트 계정 접근을 막으면 악의적인 사용자가 시스템 파일에 접근하거나, 악성 소프트웨어를 설치하는 등의 행위를 방지할 수 있습니다.

리눅스에서 루트 계정을 잠그는 것은 간단하며, 사실 많은 리눅스 서버 운영 체제(예: Ubuntu)에서는 예방 차원에서 이미 비활성화되어 있습니다. 루트 접근 비활성화에 대한 자세한 내용은 이 가이드를 확인하십시오. 루트 계정 잠금 방법에 대해 자세히 설명하고 있습니다.

3. SSH 서버 보안 강화

SSH는 많은 리눅스 서버에서 취약한 부분으로 자주 드러납니다. 리눅스 관리자들은 모든 것을 안전하게 설정하기보다는 기본 SSH 설정을 사용하는 것을 선호하기 때문입니다.

리눅스 시스템에서 SSH 서버를 보호하기 위한 작은 조치를 취하면 권한 없는 사용자, 악성 프로그램 공격, 데이터 도난 등을 상당히 줄일 수 있습니다.

과거 wdzwdz에서 리눅스 SSH 서버를 보호하는 방법에 대한 심층적인 글을 작성했습니다. SSH 서버 잠금 방법에 대한 자세한 내용은 해당 글을 참조하십시오.

4. 꾸준한 업데이트

이것은 너무나 당연한 이야기처럼 들릴 수 있지만, 많은 리눅스 서버 운영자들이 시스템 업데이트를 소홀히 한다는 사실에 놀라게 될 것입니다. 업데이트로 인해 실행 중인 애플리케이션에 문제가 발생할 수 있다는 점 때문에 이해는 되지만, 시스템 업데이트를 피하면 해커가 리눅스 시스템을 공격하는 데 사용하는 취약점 및 버그에 대한 보안 패치를 놓치게 됩니다.

운영 환경의 리눅스 서버에서 업데이트하는 것은 데스크톱에서 업데이트하는 것보다 훨씬 번거로운 일입니다. 패치를 설치하기 위해 모든 것을 중단할 수 없다는 사실은 분명합니다. 이 문제를 해결하려면 계획된 업데이트 일정을 설정하는 것이 좋습니다.

업데이트 일정에 정해진 규칙은 없습니다. 사용 환경에 따라 다르겠지만, 최대한의 보안을 위해서는 매주 또는 격주로 패치를 설치하는 것이 가장 좋습니다.

5. 검증된 저장소 사용

리눅스를 사용하는 장점 중 하나는 필요한 프로그램이 있을 때, 올바른 배포판을 사용하고 있다면 타사 소프트웨어 저장소를 이용할 수 있다는 점입니다. 하지만 이러한 소프트웨어 저장소 중 상당수는 시스템에 문제를 일으킬 수 있고, 악성 프로그램이 발견되는 경우도 있습니다. 검증되지 않은 타사 저장소의 소프트웨어에 의존하는 리눅스 환경은 문제를 야기할 수 있습니다.

리눅스 운영 체제에서 기본적으로 배포하지 않는 소프트웨어를 사용해야 한다면 Snap 패키지를 사용하는 것을 권장합니다. Snap 스토어에는 수십 개의 서버급 애플리케이션이 있습니다. 또한, Snap 스토어의 모든 앱은 정기적인 보안 감사를 받습니다.

Snap에 대해 더 알고 싶으신가요? 리눅스 서버에서 Snap을 사용하는 방법을 알아보려면 관련 글을 확인해 보십시오!

6. 방화벽 활용

서버 환경에서는 효과적인 방화벽 시스템을 갖추는 것이 매우 중요합니다. 방화벽을 설정하면, 그렇지 않으면 마주칠 수 있는 수많은 침입자를 피할 수 있습니다. 반대로, 효과적인 방화벽 시스템을 구축하지 못하면 리눅스 서버에 심각한 문제가 발생할 수 있습니다.

리눅스에는 다양한 방화벽 솔루션이 있습니다. 어떤 솔루션은 다른 것보다 이해하기 쉬운데요, 현재까지 리눅스에서 가장 간단하고 효과적인 방화벽 중 하나는 FirewallD입니다.

참고: FirewallD를 사용하려면 SystemD 초기화 시스템을 사용하는 서버 운영 체제를 사용해야 합니다.

FirewallD를 활성화하려면 먼저 설치해야 합니다. 터미널을 열고 리눅스 운영 체제에 해당하는 명령을 입력하십시오.

우분투 서버

sudo systemctl disable ufw
sudo systemctl stop ufw
sudo apt install firewalld

데비안

sudo apt-get install firewalld

CentOS/Rhel

sudo yum install firewalld

시스템에 소프트웨어가 설치되었으면 Systemd를 사용하여 활성화합니다.

sudo systemctl enable firewalld
sudo systemctl start firewalld

결론

보안 문제는 리눅스 서버에서 점점 더 흔하게 발생하고 있습니다. 안타깝게도 리눅스가 기업 환경에서 인기를 얻으면서 이러한 문제는 더욱 심각해질 것입니다. 이 목록에서 제시한 보안 팁을 따른다면 이러한 공격을 대부분 예방할 수 있을 것입니다.