리눅스 서버 설정 방법: 초기 세팅 완벽 가이드

핵심 요약
  • 서버를 받으면 가장 먼저 업데이트, 계정, SSH 순서로 설정해야 합니다
  • root 직접 접속을 막고 sudo 계정을 쓰는 것이 보안의 출발점입니다
  • SSH 포트 변경과 키 기반 인증만으로도 무차별 대입 공격을 크게 줄일 수 있습니다
  • Ubuntu와 CentOS·RHEL은 패키지 관리와 방화벽 명령어가 다르므로 배포판부터 확인해야 합니다

리눅스 서버 설정, 무엇부터 해야 할까요

책상에 앉은 사람이 터미널을 보고 있고, 모니터 주변에 체크리스트, 보안, 톱니바퀴, 네트워크 아이콘들이 떠있다.

새 리눅스 서버(클라우드 인스턴스든 온프레미스든)를 받으면 순서는 항상 같습니다. ① 시스템 업데이트 → ② 일반 사용자 계정 생성과 sudo 권한 부여 → ③ SSH 접속 보안 강화 → ④ 방화벽 설정입니다. 이 네 단계만 제대로 해도 대부분의 자동화된 공격과 초보적인 보안 사고를 예방할 수 있습니다. 아래에서 배포판별 차이와 실무에서 자주 놓치는 포인트까지 순서대로 정리했습니다.

1단계 — 시스템 업데이트와 기본 정보 설정

배포판별 업데이트 명령어 차이

리눅스는 배포판마다 패키지 관리자가 다릅니다. Ubuntu·Debian 계열은 apt, CentOS·RHEL·Rocky Linux 계열은 yum 또는 최신 버전에서는 dnf를 사용합니다. 명령어가 다르다고 당황할 필요는 없고, 아래 표로 대응 관계만 기억해 두면 됩니다.

작업 Ubuntu·Debian CentOS·RHEL·Rocky
패키지 목록 갱신 apt update yum check-update
패키지 업그레이드 apt upgrade -y yum update -y
방화벽 도구 ufw firewalld
서비스 관리 systemctl (공통) systemctl (공통)

# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y

# CentOS / RHEL / Rocky Linux
sudo yum update -y

서버를 처음 세팅할 때 이 업데이트를 건너뛰고 넘어가면, 이후 패키지 설치 과정에서 의존성 오류가 나거나 알려진 취약점이 그대로 남아있는 경우가 많습니다. 반드시 첫 단계로 실행하세요.

호스트네임과 타임존, 로케일 설정

클라우드 서버는 대부분 임의의 호스트네임으로 생성됩니다. 여러 대를 운영한다면 역할을 알아볼 수 있는 이름으로 바꿔두는 것이 관리에 유리합니다.

  • 호스트네임 변경: sudo hostnamectl set-hostname 원하는이름
  • 타임존을 서울로 설정: sudo timedatectl set-timezone Asia/Seoul
  • 한국어 로케일 설치(Ubuntu 예시): sudo apt install language-pack-ko -y

타임존을 맞추지 않으면 로그 파일의 시각과 실제 장애 발생 시각이 어긋나, 장애 발생 시 원인 추적이 훨씬 어려워집니다. 서버를 만들자마자 가장 먼저 확인해야 할 항목입니다.

2단계 — 계정 관리와 sudo 권한 설정

사람이 서있고 관리자가 사용자에게 키 배지를 건네주며 배경에 잠금과 여러 계정이 표현된 모습

일반 사용자 계정 생성과 sudo 등록

root 계정은 시스템의 모든 권한을 가지고 있어, 이 계정으로 직접 접속해 작업하는 것은 권장되지 않습니다. 실수로 잘못된 명령을 입력했을 때 되돌릴 수 없는 손상이 발생할 수 있기 때문입니다. 대신 일반 사용자 계정을 만들고 필요할 때만 sudo로 권한을 상승시키는 방식이 표준입니다.

  1. sudo adduser 사용자이름으로 계정을 생성합니다.
  2. sudo passwd 사용자이름으로 비밀번호를 설정합니다.
  3. Ubuntu는 sudo usermod -aG sudo 사용자이름, CentOS 계열은 sudo usermod -aG wheel 사용자이름으로 관리자 그룹에 추가합니다.
  4. su - 사용자이름으로 전환해 sudo whoami 명령이 root를 반환하는지 확인합니다.

root 계정 직접 로그인 차단

계정 생성 후에는 SSH를 통한 root 직접 접속 자체를 막아야 합니다. /etc/ssh/sshd_config 파일에서 PermitRootLogin 값을 no로 바꾸고 SSH 서비스를 재시작하면 됩니다.

sudo vi /etc/ssh/sshd_config
# PermitRootLogin no 로 수정 후 저장
sudo systemctl restart sshd

설정을 바꾼 직후에는 기존 세션을 종료하기 전에 새 터미널로 접속 테스트를 반드시 해보세요. 접속이 안 되는 상태에서 기존 세션마저 끊기면 서버에 접근할 방법이 없어질 수 있습니다.

3단계 — SSH 접속 보안 강화

SSH 포트 변경과 키 기반 인증

SSH의 기본 포트인 22번은 인터넷에 노출된 서버라면 사실상 매일 무차별 대입 공격(브루트포스)의 표적이 됩니다. 포트를 바꾸고, 비밀번호 대신 키 기반 인증으로 전환하면 이런 자동화 공격의 대부분을 차단할 수 있습니다.

기본 포트 22번을 그대로 사용하는 서버는 로그를 확인해보면 하루에도 수백 건씩 낯선 IP의 로그인 시도가 기록되는 경우가 흔합니다. 포트 변경과 키 기반 인증은 선택이 아니라 기본 조치로 보는 것이 안전합니다.

  • 로컬에서 키 쌍 생성: ssh-keygen -t ed25519
  • 공개키를 서버에 등록: ssh-copy-id -p 포트번호 사용자이름@서버IP
  • 서버에서 PasswordAuthentication no로 설정해 비밀번호 로그인 자체를 차단

방화벽으로 접속 포트 통제

변경한 SSH 포트와 웹 서버 등 실제 서비스에 필요한 포트만 열어두고 나머지는 모두 차단하는 것이 원칙입니다.


# Ubuntu (ufw)
sudo ufw allow 22222/tcp
sudo ufw enable

# CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --reload

서버를 공유기 안쪽 사설망에서 운영하고 외부에서 접속해야 한다면 공유기 포트포워딩 설정 방법도 함께 확인해두면 방화벽 규칙과 포트 매핑을 헷갈리지 않고 관리할 수 있습니다.

4단계 — 자주 하는 실수와 운영 체크리스트

점검 목록의 오류를 검토하는 사람과 안전 실천, 백업 아이콘

초기 설정에서 흔히 놓치는 부분

여러 서버를 세팅해보면 반복적으로 발생하는 실수가 몇 가지로 정리됩니다.

  • SELinux(CentOS)나 AppArmor(Ubuntu)를 무작정 끄고 잊어버리는 경우 — 운영 환경에서는 정책을 맞춰 켜두는 것이 원칙입니다.
  • swap 메모리를 설정하지 않아 메모리 부족 시 프로세스가 갑자기 종료되는 경우
  • fail2ban 같은 침입 차단 도구를 설치하지 않아 반복적인 로그인 시도를 그대로 방치하는 경우
  • 패키지 업데이트를 수동으로만 진행해 보안 패치가 몇 달씩 밀리는 경우

운영 안정화를 위한 다음 단계

기본 보안 설정이 끝났다면, 서버 성격에 따라 다음 작업을 추가로 검토하세요.

  1. fail2ban 설치로 반복 로그인 시도 IP 자동 차단
  2. unattended-upgrades(Ubuntu) 또는 dnf-automatic(RHEL 계열)로 보안 패치 자동화
  3. 정기 백업 스크립트와 크론(cron) 등록
  4. 모니터링 도구(예: Netdata, Zabbix)로 리소스 사용량 상시 확인

서버를 처음부터 하나씩 손으로 세팅하기 부담스럽다면, 홈서버 구축 방법: 미니PC로 시작하기 글에서 저사양 환경에서의 구성 팁도 참고할 수 있습니다. 또한 명령어 자체가 익숙하지 않다면 리눅스 명령어 정리: 실무 필수 40선을 먼저 훑어보는 것도 도움이 됩니다.

자주 묻는 질문

Q. Ubuntu와 CentOS 중 어떤 배포판이 초보자에게 더 적합한가요

정답은 없지만 실무 관점에서는 Ubuntu가 문서와 커뮤니티 자료가 많아 처음 서버를 다뤄보는 경우 진입장벽이 낮은 편입니다. 다만 회사·프로젝트에서 특정 배포판을 표준으로 쓰고 있다면 그것을 따르는 것이 유지보수 측면에서 유리합니다.

Q. root 계정으로 바로 접속해서 작업하면 안 되나요

가능은 하지만 권장하지 않습니다. root는 시스템의 모든 파일과 설정을 제한 없이 변경할 수 있어, 명령어 하나의 실수가 서버 전체 장애로 이어질 수 있습니다. 일반 계정에 sudo 권한을 부여해 필요한 순간에만 권한을 상승시키는 방식이 안전합니다.

Q. SSH 포트를 바꾸면 정말 공격이 줄어드나요

완전한 방어는 아니지만, 자동화된 스캐너 대부분이 기본 포트인 22번을 대상으로 하기 때문에 포트만 바꿔도 무의미한 접속 시도의 상당수를 걸러낼 수 있습니다. 다만 포트 변경은 보조 수단이며, 키 기반 인증과 방화벽 설정을 함께 적용해야 실질적인 보안 효과가 있습니다.

Q. 방화벽을 설정하면 기존에 쓰던 서비스가 갑자기 안 될 수도 있나요

네, 그럴 수 있습니다. 방화벽은 명시적으로 허용한 포트 외에는 모두 차단하는 것이 기본 원칙이므로, 웹 서버·데이터베이스·SSH 등 실제로 사용 중인 서비스의 포트를 사전에 파악해 허용 목록에 추가한 뒤 활성화해야 서비스 중단을 막을 수 있습니다.

Q. 서버 설정 후 가장 먼저 확인해야 할 것은 무엇인가요

변경한 SSH 설정(포트, 키 인증, root 로그인 차단)이 실제로 적용됐는지 새로운 터미널 세션으로 접속 테스트를 하는 것입니다. 기존 세션을 끊기 전에 반드시 확인해야 서버 접근 불능 상황을 예방할 수 있습니다.

관련 글 보기