리눅스 홈 서버를 안전하게 설정하는 방법

리눅스 홈 서버 보안 사진

홈 서버를 설정할 이유는 매우 다양합니다. 미디어 서버, 파일 서버 또는 로컬 백업 서버로 사용할 수 있습니다. 기본적으로 온라인에 필요하지 않은 파일은 홈 서버에 적합한 후보입니다. 리눅스 기반 홈 서버를 설정하는 것은 요즘에는 비교적 간단합니다. 하지만 그 서버의 보안을 유지하는 것은 전혀 다른 이야기입니다. 보안은 중요함 만큼이나 까다로울 수 있습니다.

또한 읽어보세요: Log4Shell이란 무엇이며 리눅스 시스템을 어떻게 보호할 수 있나요?

꼭 필요한 것만 설치하기

홈 서버를 안전하게 유지하는 가장 쉬운 방법 중 하나는 처음부터 보안을 고려하는 것입니다. 이것은 설치에서 시작됩니다. 애플리케이션이나 서비스가 필요한지 확실하지 않은 경우 설치하지 마세요. 나중에 언제든지 설치할 수 있습니다.

리눅스를 몇 번 설치해본 적이 있다면 더욱 쉽습니다. 기본값을 고수하는 대신 설치에 대한 가장 많은 제어를 제공하는 모드를 사용하세요. 이러한 모드는 때때로 “전문가 모드”와 비슷한 이름이 붙어 있습니다.

설치 옵션을 주의 깊게 추적하면 보안상의 이유로 서비스를 비활성화하는 데 소요되는 시간을 절약할 수 있습니다.

sudo 구성하기

다른 단계로 넘어가기 전에 sudo를 구성해야 합니다. 왜냐하면 여기서 작업을 마치면 SSH를 통해 서버에 로그인해야 하며, root 계정으로 로그인할 수 없기 때문입니다. 시스템에 대한 추가 변경을 하려면 sudo를 사용해야 합니다.

먼저, 이미 sudo를 사용할 수 있는지 확인하세요. 사용자 계정에서 다음을 실행합니다. USERNAME 자리에 본인의 사용자명을 넣으세요:

sudo -lU USERNAME

“(ALL) ALL을 수행할 수 있다”라는 메시지가 표시되면, 계속 진행할 준비가 된 것입니다.

이제 서버의 root 계정으로 다음을 실행하여 “/etc/sudoers” 파일을 편집하세요. 다른 편집기를 사용하고 싶으면 nano 대신 그것을 사용하세요.

EDITOR=nano visudo

USERNAME 자리에 본인의 사용자명을 넣고 다음을 포함하도록 파일을 수정하세요:

USERNAME   ALL=(ALL) ALL

또한 읽어보세요: 리눅스에서 Nessus 취약점 스캐너를 사용하는 방법

SSH 구성하기

리눅스 홈 서버 Openssh

귀하의 홈 서버에서는 이미 SSH가 활성화되어 있을 수 있습니다. 사실 그렇습니다. 이것은 일반적으로 서버와 상호작용하는 방법이기 때문입니다.

먼저 OpenSSH가 설치되어 있는지 확인하세요. 다른 배포판을 사용한다면 명령이 다를 수 있지만 패키지 이름은 꽤 일관될 것입니다. Ubuntu에서는 다음을 실행하세요:

sudo apt install openssh-server

키 기반 인증은 비밀번호 인증보다 훨씬 더 안전하므로, SSH가 이 방식으로 작동하도록 설정하겠습니다. 이를 위해, 서버가 아니라 서버에 연결할 계획인 클라이언트에서 작업하고 있는지 확인하세요. 먼저 SSH 키가 이미 있는지 확인합니다:

ls ~/.ssh/

“id_rsa”와 “id_rsa.pub”가 목록에 있다면, 이미 SSH 키가 있습니다. 다음 단계를 건너뛰세요.

ssh-keygen -t rsa -b 4096 -C "[email protected]"

이제 SSH 키를 서버로 복사합니다:

ssh-copy-id USERNAME@SERVER

홈 서버의 경우, 이름 대신 IP 주소를 사용할 가능성이 큽니다. 서버 이름을 모르는 경우 위에서 SERVER 자리에 IP 주소를 사용하세요.

이제 SSH 설정을 더 안전하게 구성합니다. 키를 생성한 클라이언트에서 서버에 로그인합니다. 이 단계 이후 다시 로그인할 수 있게 됩니다. 다음을 실행하세요. nano 대신 선택한 편집기를 사용하세요.

sudo nano /etc/ssh/sshd_config

다음 설정으로 파일을 편집합니다. 이들은 파일 내의 다양한 위치에 있을 수 있습니다. 중복이 없도록 확인하세요. 설정의 첫 번째 인스턴스만 적용됩니다.

ChallengeResponseAuthentication no  
PasswordAuthentication no  
UsePAM no  
PermitRootLogin no

이제 다음 명령 중 하나로 SSH 서버를 재시작해야 합니다.

Ubuntu에서는 다음을 실행하세요:

sudo systemctl restart ssh

또한 읽어보세요: SELinux vs AppArmor: 차이점은 무엇이며 어떤 것을 사용해야 하나요?

방화벽 구성하기

운영 중인 서비스와 서버의 인터넷 연결 정도에 따라 방화벽을 운영할 수 있습니다. 이를 위한 몇 가지 옵션이 있지만, 리눅스에서 가장 검증된 방법은 iptables입니다.

iptables 설정하는 것은 이 글의 범위를 넘어가지만 걱정하지 마세요. 귀하의 머신에서 iptables 구성하는 완료 가이드가 있습니다.

방화벽을 설정하는 또 다른 쉬운 방법은 ufw를 사용하는 것입니다. 다음 명령으로 설치할 수 있습니다:

sudo apt install ufw

기본적으로 모든 포트를 차단합니다. 온라인 및 SSH 접근을 가능하게 하려면 다음 ufw 명령을 실행하여 포트 80, 443 및 22를 열어주세요:

sudo ufw allow 80  
sudo ufw allow 443  
sudo ufw allow 22

마지막으로 ufw 서비스를 활성화합니다:

sudo ufw enable

최신 상태 유지하기

리눅스 홈 서버 설치

서버는 그냥 작동하면 쉽게 잊혀질 수 있지만, 이는 위험할 수 있습니다. 소프트웨어를 최신 상태로 유지하는 것이 중요합니다. 자동 업데이트를 사용할 수 있지만, 이는 예측하기 어려울 수 있습니다. 가장 안전한 방법은 정기적으로 주간 또는 월간 서버 유지 관리 약속의 일정을 잡아 모든 것이 제대로 작동하는지 확인하는 것입니다.

또한 읽어보세요: 리눅스 서버를 보호하기 위한 최고의 오픈 소스 도구들

여기서 다음에 무엇을 해야 할까요?

이제 외부 위협으로부터 서버를 보호하기 위한 좋은 출발점을 마련했습니다. 하지만 집에서 서버에 접근해야 할 경우는 어떻게 할까요? 여는 모든 문은 공격자에게 사용될 수 있으며, 열린 모든 포트는 여러분의 취약성을 증가시킵니다.

홈 네트워크에 외부에서 접근하는 가장 쉬운 방법 중 하나는 VPN을 사용하는 것입니다. 이는 기사 범위 밖의 내용이지만 걱정하지 마세요. 가장 안전한 VPN 서비스 목록을 확인하여 여러분의 선택이 무엇인지 알아보세요.