라즈베리파이·구형 PC에 우분투 서버 설치부터 기본 보안 설정까지

라즈베리파이나 오래된 PC는 저전력 홈 서버, 파일 저장소, 미디어 서버, 개발용 테스트 환경, 개인 웹 서비스 등으로 활용하기 좋습니다. 최신 고성능 장비가 아니더라도 우분투 서버(Ubuntu Server)는 비교적 가볍게 동작하며, 패키지 관리와 커뮤니티 자료가 풍부해 처음 서버를 구축하는 사람에게도 적합합니다.

라즈베리파이는 전력 소모가 적고 공간을 거의 차지하지 않는다는 장점이 있습니다. 반면 microSD 카드의 내구성이 낮을 수 있으므로 장기간 운영할 계획이라면 품질 좋은 카드나 USB SSD를 사용하는 편이 좋습니다. 라즈베리파이 4 이상이라면 64비트 Ubuntu Server 24.04 LTS를 선택하는 것이 일반적입니다.

구형 PC는 라즈베리파이보다 저장장치와 메모리를 확장하기 쉽고, SATA SSD나 대용량 HDD를 연결하기 편합니다. 다만 오래된 PC는 소음, 발열, 전력 사용량을 고려해야 하며, BIOS 방식 부팅인지 UEFI 방식 부팅인지 미리 확인하는 것이 좋습니다. 특히 설치 과정에서 기존 디스크의 데이터가 삭제될 수 있으므로 중요한 파일은 반드시 백업해야 합니다.

설치 전에 유선 LAN 연결, 안정적인 전원, 공유기 관리자 화면 접근 권한을 준비하면 작업이 수월합니다. 서버는 가능하면 Wi-Fi보다 유선 네트워크를 사용하는 것이 안정적이며, 공유기에서 DHCP 예약을 설정해 서버의 내부 IP 주소가 바뀌지 않도록 구성하는 편이 좋습니다.

설치 이미지 준비와 부팅

라즈베리파이에 설치할 때는 공식 Raspberry Pi Imager를 이용하는 방법이 가장 간단합니다. 운영체제 목록에서 Ubuntu Server 24.04 LTS 또는 사용하는 모델에 맞는 최신 LTS 이미지를 선택한 뒤 microSD 카드나 USB SSD에 기록합니다. 설정 아이콘에서 호스트 이름, 사용자 이름, 비밀번호, Wi-Fi 정보, SSH 활성화 여부를 미리 지정할 수 있습니다.

라즈베리파이를 원격으로만 사용할 계획이라면 이미지 기록 단계에서 SSH를 켜 두는 것이 편리합니다. 사용자 이름은 ubuntu, server, admin처럼 너무 추측하기 쉬운 이름보다 개인적으로 구분 가능한 이름을 사용하는 편이 낫습니다. 또한 비밀번호는 길고 복잡하게 설정하되, 이후에는 SSH 키 인증으로 전환하는 것을 권장합니다.

구형 PC에는 Ubuntu 공식 홈페이지에서 Ubuntu Server LTS ISO 파일을 내려받아 설치 USB를 만듭니다. Windows에서는 Rufus나 balenaEtcher를, macOS나 Linux에서는 Etcher 또는 dd 명령을 사용할 수 있습니다. USB를 만든 뒤 PC의 BIOS 또는 UEFI 설정 화면에서 USB 부팅 순서를 우선으로 바꾸고 설치 프로그램을 실행합니다.

설치 과정에서는 언어, 키보드, 네트워크, 사용자 계정, 저장장치 구성을 차례로 설정합니다. 서버 전용으로 사용할 디스크라면 자동 파티션 설정도 무난하지만, 기존 데이터가 있는 디스크를 사용할 때는 수동 파티션 설정을 신중히 진행해야 합니다. 설치가 끝난 뒤 USB를 제거하고 재부팅하면 우분투 서버의 로그인 화면 또는 SSH 접속 환경을 사용할 수 있습니다.

첫 로그인과 기본 시스템 설정

처음 로그인한 뒤에는 가장 먼저 패키지 목록과 설치된 패키지를 업데이트합니다. 다음 명령으로 보안 업데이트와 버그 수정 패키지를 함께 적용할 수 있습니다: sudo apt update && sudo apt upgrade -y. 설치 직후에는 커널이나 핵심 라이브러리 업데이트가 포함될 수 있으므로 업데이트 후 재부팅이 필요할 수도 있습니다.

현재 시스템 정보는 hostnamectl, lsb_release -a, ip addr 등의 명령으로 확인할 수 있습니다. hostnamectl set-hostname home-server처럼 서버 이름을 설정하면 공유기 관리 화면이나 SSH 접속 목록에서 장비를 구분하기 쉬워집니다. 여러 대의 서버를 운영한다면 pi-backup, media-server, dev-node처럼 용도별 이름을 정하는 것이 관리에 유리합니다.

시간대 설정도 중요합니다. 한국에서 운영한다면 sudo timedatectl set-timezone Asia/Seoul 명령으로 시간대를 변경할 수 있으며, timedatectl 명령으로 NTP 시간 동기화 상태를 확인할 수 있습니다. 서버 시간이 맞지 않으면 HTTPS 인증서, 로그 기록, 예약 작업, 파일 동기화 등에 문제가 생길 수 있습니다.

네트워크는 공유기에서 DHCP 예약을 설정하는 방식이 가장 관리하기 편합니다. 서버 내부에서 고정 IP를 직접 설정하려면 Netplan 설정 파일을 수정해야 하지만, 문법 오류가 발생하면 원격 접속이 끊길 수 있으므로 주의해야 합니다. 처음에는 DHCP를 유지하고, 공유기에서 해당 장비의 MAC 주소에 특정 내부 IP를 할당하는 방식을 권장합니다.

SSH 원격 접속과 계정 관리

서버는 모니터와 키보드를 계속 연결하지 않고 SSH로 관리하는 경우가 많습니다. 같은 네트워크의 다른 PC에서 ssh 사용자이름@서버IP주소 형식으로 접속할 수 있으며, 처음 접속할 때는 서버의 호스트 키 지문을 확인하라는 메시지가 표시됩니다. 처음 설치한 서버가 맞는지 확인한 뒤 연결을 진행하면 됩니다.

비밀번호 로그인만 사용하는 것보다 SSH 키 인증을 설정하는 편이 훨씬 안전합니다. 관리용 PC에서 ssh-keygen 명령으로 키를 생성한 뒤 ssh-copy-id 사용자이름@서버IP주소를 실행하면 공개 키를 서버에 등록할 수 있습니다. Windows의 최신 PowerShell, macOS, Linux 환경에서는 대부분 기본적으로 SSH 도구를 사용할 수 있습니다.

SSH 키 로그인까지 확인한 뒤에는 /etc/ssh/sshd_config 또는 /etc/ssh/sshd_config.d/ 아래의 설정 파일에서 비밀번호 로그인을 제한할 수 있습니다. 일반적으로 PasswordAuthentication no와 PermitRootLogin no 설정을 적용하면 무차별 대입 공격 위험을 크게 줄일 수 있습니다. 설정을 변경한 뒤에는 반드시 sudo sshd -t로 문법을 점검하고 sudo systemctl reload ssh를 실행해야 합니다.

SSH 설정을 수정할 때는 현재 연결된 터미널을 바로 닫지 않는 것이 좋습니다. 새 터미널 창에서 SSH 키로 정상 접속되는지 먼저 확인한 뒤 기존 세션을 종료해야 접속 불가 상황을 피할 수 있습니다. 또한 루트 계정으로 직접 로그인하기보다 일반 사용자 계정에 필요한 경우에만 sudo 권한을 부여하는 방식이 안전합니다.

방화벽과 자동 보안 업데이트 설정

우분투 서버의 기본 방화벽 도구로는 UFW(Uncomplicated Firewall)가 많이 사용됩니다. SSH 접속을 유지하려면 먼저 sudo ufw allow OpenSSH 또는 sudo ufw allow 22/tcp로 SSH 포트를 허용해야 합니다. 그 다음 sudo ufw enable을 실행하면 기본적으로 외부에서 들어오는 불필요한 연결을 차단할 수 있습니다.

웹 서버를 운영한다면 HTTP와 HTTPS 포트만 추가로 열면 됩니다. 예를 들어 sudo ufw allow 80/tcp와 sudo ufw allow 443/tcp를 실행하면 웹 서비스용 포트를 허용할 수 있습니다. 현재 규칙은 sudo ufw status verbose로 확인할 수 있으며, 사용하지 않는 서비스 포트는 열지 않는 것이 원칙입니다.

SSH를 인터넷에 직접 노출해야 한다면 fail2ban 설치도 고려할 수 있습니다. sudo apt install fail2ban -y로 설치하면 반복적으로 로그인에 실패하는 IP를 일정 시간 차단하는 기능을 사용할 수 있습니다. 다만 fail2ban은 보조 수단일 뿐이며, 가장 중요한 방어는 SSH 키 인증, 비밀번호 로그인 비활성화, 불필요한 포트 차단입니다.

보안 업데이트를 자동으로 적용하려면 unattended-upgrades 패키지를 사용할 수 있습니다. sudo apt install unattended-upgrades -y로 설치한 뒤 설정을 활성화하면 알려진 취약점에 대한 보안 패치가 자동으로 적용됩니다. 다만 커널 업데이트 이후 재부팅이 필요한 경우도 있으므로, 정기적으로 sudo reboot가 필요한지 확인하고 서비스 중단 시간을 고려해 관리하는 것이 좋습니다.

안정적인 운영과 점검 습관

서버 운영에서 보안 설정만큼 중요한 것은 백업입니다. 설정 파일, 데이터베이스, 웹 서비스 데이터, 개인 파일은 다른 디스크나 NAS, 외장 저장장치, 클라우드 등에 주기적으로 복사해야 합니다. 단순히 백업 파일을 만드는 것에 그치지 말고, 실제로 복구할 수 있는지 가끔 확인하는 습관이 필요합니다.

시스템 상태는 df -h로 디스크 사용량을, free -h로 메모리 사용량을, uptime으로 서버 가동 시간과 부하를 확인할 수 있습니다. 라즈베리파이에서 microSD 카드 공간이 부족해지면 시스템이 불안정해질 수 있으므로 로그와 캐시 파일이 과도하게 쌓이지 않도록 관리해야 합니다. 구형 PC에서는 HDD 상태와 온도, 팬 소음도 정기적으로 점검하는 것이 좋습니다.

문제가 생겼을 때는 journalctl -xe, systemctl status 서비스이름, dmesg 명령이 도움이 됩니다. 예를 들어 웹 서버가 실행되지 않는다면 sudo systemctl status nginx 또는 sudo systemctl status apache2로 상태와 최근 오류 메시지를 확인할 수 있습니다. 로그를 읽는 습관을 들이면 단순한 재부팅보다 정확한 원인 파악과 안정적인 운영에 도움이 됩니다.

외부에서 서버에 접속하려면 공유기 포트 포워딩보다 VPN이나 Tailscale 같은 사설 네트워크 도구를 우선 고려하는 것이 안전합니다. 꼭 포트 포워딩을 해야 한다면 필요한 포트만 열고, 관리자 페이지와 SSH는 가능한 한 인터넷에 직접 노출하지 않는 편이 좋습니다. 작은 라즈베리파이나 구형 PC라도 업데이트, 백업, 접근 제어를 꾸준히 관리하면 충분히 안정적인 개인 서버로 활용할 수 있습니다.

댓글 남기기