본문 바로가기

내 PC에 리눅스를 - (2) Ubuntu 서버 환경 기본 설정과 운영 준비

와우대박 WowDaebak 2025. 12. 25.
[개요]
Ubuntu 서버를 설치했다면, 바로 서비스 운영에 들어가기 전에 반드시 기본 환경 설정보안·운영 준비를 마쳐야 한다.
이 글에서는 서버 초보자도 따라 할 수 있도록 시간대 설정 → 시스템 업데이트 → 사용자 관리 → SSH 보안 → 방화벽 설정 → 운영 점검까지, 실제 서버 운영에 필요한 필수 설정만 정리했다.
VMware 기반 로컬 서버, 클라우드 서버 모두 동일하게 적용할 수 있는 실전 기준 Ubuntu 서버 초기 세팅 가이드다.
📌 전체 시리즈(내 PC에 리눅스를) 구성- (총 블로그 3편)
내 컴퓨터를 리눅스 서버로 만드는 실전 로드맵
1. Windows 기반 PC에서 Ubuntu 설치
2. Ubuntu 서버 환경 기본 설정과 운영 준비
3. Ubuntu에 DB MySQL 설치 및 서버 구조 완성
✒️본 블로그 " 2. Ubuntu 서버 환경 기본 설정과 운영 준비 ' 구성

들어가며
1. 서버 초기 환경 점검
2. 기본 시스템 환경 설정
3. 시스템 업데이트와 필수 패키지 설치
4. 사용자 계정과 권한 구성
5. SSH 접속 환경과 보안 설정
6. 방화벽(UFW) 설정과 접근 제어
나오며 

 

1. 서버 초기 환경 점검

Ubuntu 서버 설치 직후에는 추가 설정에 앞서 현재 서버 상태를 정확히 파악해야 한다.
이 단계는 서버의 안정성, 성능, 저장 공간 상태를 확인하는 기본 절차이며, 이후 설정 과정에서 발생할 수 있는 오류를 사전에 예방하는 목적을 가진다.


(1) 운영체제 및 커널 정보 확인

서버에 접속한 후 가장 먼저 운영체제 종류와 버전, 커널 정보를 확인해야 한다.
이는 설치가 정상적으로 완료되었는지, 문서나 강의에서 전제하는 환경과 일치하는지를 판단하기 위함이다.

uname -a
lsb_release -a
 
  • uname -a는 현재 사용 중인 리눅스 커널 버전아키텍처 정보를 출력한다.
  • lsb_release -aㄷ탸을 확인하는 데 사용된다.

이 정보를 통해 Ubuntu Server 버전이 의도한 버전과 일치하는지 확인하고, 향후 패키지 설치나 설정 시 기준 환경으로 삼는다.


(2) 서버 가동 상태와 시스템 부하 점검

다음으로 서버의 가동 상태와 현재 시스템 부하를 확인한다.
이는 서버가 정상적으로 실행 중인지, 과도한 부하가 걸려 있지 않은지를 판단하기 위한 절차이다.

uptime
 

출력 결과에는 녀다음 정보가 포함된다.

  • 서버 가동 시간(uptime)
  • 현재 접속 중인 사용자 수
  • 최근 1분, 5분, 15분 평균 부하(load average)

일반적으로 로컬 실습용 서버나 초기 설치 상태에서는 부하 수치가 매우 낮게 나타나는 것이 정상이다.
이 단계에서 비정상적으로 높은 부하가 확인된다면, 백그라운드 프로세스나 설치 오류 여부를 점검해야 한다.


(3) 디스크 용량 및 파일 시스템 확인

서버 운영에 있어 디스크 용량은 매우 중요한 요소이다.
설치 직후에는 디스크가 정상적으로 마운트되어 있는지, 사용 가능한 공간이 충분한지를 반드시 확인해야 한다.

df -h
 
  • df -h는 파일 시스템별 전체 용량, 사용량, 사용 가능 공간을 사람이 읽기 쉬운 형태로 출력한다.

필요한 경우 블록 디바이스 구조를 함께 확인할 수 있다.

lsblk
 

이 명령을 통해 루트(/) 파티션이 어느 디스크에 연결되어 있는지, 추가 디스크가 있는지 등을 확인할 수 있다.
디스크 여유 공간이 부족한 상태에서 서버를 운영하면 패키지 설치 실패, 로그 기록 오류, 서비스 중단 등의 문제가 발생할 수 있다.


정리

서버 초기 환경 점검은 단순한 확인 절차가 아니라, 이후 모든 서버 설정과 운영의 출발점이다.
운영체제 정보, 시스템 부하, 디스크 상태를 정확히 파악한 후 다음 단계인 시간대 설정과 시스템 환경 구성을 진행해야 한다.

 

이 과정을 통해 Ubuntu 서버는 안정적인 운영을 위한 기초 상태를 갖추게 된다.


2. 기본 시스템 환경 설정

기본 시스템 환경 설정은 Ubuntu 서버를 실제 운영 환경에 맞게 정렬하는 과정이다.
특히 시간대와 로케일 설정은 로그 기록, 예약 작업, 데이터 처리 전반에 영향을 미치므로 초기 단계에서 반드시 점검하고 설정해야 한다.


(1) 시간대(Timezone) 설정과 동기화

Ubuntu 서버는 기본적으로 UTC 기준으로 설정되는 경우가 많다.
국내에서 서버를 운영하거나 실습 환경으로 사용하는 경우에는 한국 표준시(KST)에 맞춰 시간대를 변경해야 한다.

먼저 현재 시간대 설정 상태를 확인한다.

 
timedatectl

출력 결과에서 Time zone 항목이 Asia/Seoul이 아니라면 변경이 필요하다.

다음 명령어를 사용하여 시간대를 한국 표준시로 설정한다.

 
sudo timedatectl set-timezone Asia/Seoul

설정 후 다시 한 번 확인한다.

 
timedatectl

시간대 설정은 다음과 같은 이유로 중요하다.

  • 서버 로그 시간과 실제 시간의 불일치 방지
  • cron 작업, 백업 스케줄 오류 예방
  • 데이터베이스 시간 기록 정확성 확보

Ubuntu는 기본적으로 NTP(Network Time Protocol)를 통해 시간을 자동 동기화한다.
동기화 상태는 다음 명령어로 확인할 수 있다.

 
timedatectl status

System clock synchronized: yes로 표시되면 정상적으로 시간 동기화가 이루어지고 있는 상태이다.


 

(2) 로케일(Locale) 설정과 문자 인코딩 점검

로케일은 언어, 문자 인코딩, 날짜 및 숫자 표현 방식 등을 결정하는 환경 설정이다.
로케일 설정이 올바르지 않으면 한글 출력 깨짐, 파일명 오류, 프로그램 실행 문제 등이 발생할 수 있다.

현재 로케일 설정 상태를 확인한다.

 
locale

기본 로케일이 C 또는 en_US.UTF-8로만 설정되어 있다면, 한글 환경을 고려하여 로케일을 추가 설정하는 것이 바람직하다.

다음 명령어로 한글 로케일을 생성한다.

 
sudo locale-gen ko_KR.UTF-8

이후 기본 로케일을 한글 UTF-8로 지정한다.

sudo update-locale LANG=ko_KR.UTF-8

설정이 적용되었는지 다시 확인한다.

 
locale

출력 결과에서 LANG=ko_KR.UTF-8이 표시되면 정상적으로 설정된 상태이다.

이 설정을 통해 다음과 같은 효과를 기대할 수 있다.

  • 터미널 및 로그에서 한글 출력 안정화
  • 파일명 인코딩 문제 예방
  • 일부 패키지 및 스크립트 실행 시 오류 감소

정리

시간대와 로케일 설정은 눈에 잘 보이지 않지만 서버 운영의 정확성과 안정성을 좌우하는 핵심 요소이다.
이 단계에서 시스템 기준 시간을 정렬하고 문자 인코딩 환경을 통일해 두면, 이후 웹 서버, 데이터베이스, 애플리케이션 설정 과정이 훨씬 안정적으로 진행된다.

 

기본 시스템 환경 설정이 완료되면, 다음 단계에서는 시스템 업데이트와 필수 패키지 설치를 진행한다.


3. 시스템 업데이트와 필수 패키지 설치

시스템 업데이트와 기본 패키지 설치는 Ubuntu 서버의 안정성과 보안을 확보하기 위한 핵심 단계이다.
초기 설치 직후의 서버는 보안 패치와 기능 업데이트가 적용되지 않은 상태일 수 있으므로, 본격적인 운영에 앞서 반드시 최신 상태로 정비해야 한다.


(1) 패키지 목록 갱신과 시스템 업그레이드

Ubuntu는 APT 패키지 관리자를 통해 소프트웨어를 관리한다.
먼저 패키지 저장소의 최신 정보를 갱신한다.

 
sudo apt update

이 명령은 실제 설치나 변경을 수행하지 않고,
설치 가능한 패키지와 업데이트 정보를 최신 상태로 동기화한다.

다음으로 시스템에 설치된 패키지를 최신 버전으로 업그레이드한다.

 
sudo apt upgrade -y
  • 보안 취약점 패치 적용
  • 기존 버그 수정
  • 시스템 안정성 향상

옵션 -y는 업그레이드 과정에서 묻는 확인 질문에 자동으로 동의하도록 설정한다.

업데이트 과정에서 커널이나 핵심 라이브러리가 변경되는 경우,
추후 서버 재부팅이 필요할 수 있으므로 안내 메시지를 주의 깊게 확인해야 한다.


(2) 서버 운영에 필요한 기본 유틸리티 설치

기본 설치 상태의 Ubuntu 서버에는 실무 운영에 필요한 도구가 충분히 포함되어 있지 않다.
서버 관리와 점검을 원활히 수행하기 위해 다음과 같은 기본 유틸리티를 설치한다.

 
sudo apt install -y vim curl wget net-tools htop unzip

각 패키지의 용도는 다음과 같다.

  • vim : 서버 환경에서 가장 널리 사용되는 텍스트 편집기
  • curl : URL 기반 데이터 전송 및 API 테스트 도구
  • wget : 파일 다운로드용 명령행 도구
  • net-tools : 네트워크 상태 확인(ifconfig 등)
  • htop : 실시간 시스템 자원 모니터링 도구
  • unzip : 압축 파일 해제 도구

설치가 완료되면 간단한 명령어를 통해 정상 동작 여부를 확인할 수 있다.

 
vim --version htop

이러한 유틸리티는 서버 점검, 장애 분석, 서비스 운영 전반에 반복적으로 사용되므로
초기 단계에서 함께 설치해 두는 것이 효율적이다.


정리

시스템 업데이트는 보안과 안정성을 확보하는 필수 과정이며,
기본 유틸리티 설치는 서버 운영의 효율성을 크게 향상시킨다.

 

이 단계까지 완료하면 Ubuntu 서버는 최소한의 운영 도구와 최신 시스템 상태를 갖추게 되며,
다음 단계에서는 사용자 계정과 권한 설정을 통해 보안 구조를 정비하게 된다.


4. 사용자 계정과 권한 구성

사용자 계정과 권한 구성은 Ubuntu 서버 보안의 핵심 요소이다.
초기 설치 직후의 서버는 root 계정을 중심으로 운영되지만, 실제 운영 환경에서는 보안 사고를 예방하기 위해 일반 사용자 계정과 관리자 권한을 분리하는 구조를 사용해야 한다.


(1) 운영용 일반 사용자 계정 생성

Ubuntu 서버에서는 root 계정으로 모든 작업을 수행할 수 있으나,
root 계정의 직접 사용은 오작업이나 보안 침해 시 피해 범위를 크게 만든다.
따라서 서버 운영을 위한 전용 일반 사용자 계정을 생성하는 것이 기본 원칙이다.

다음 명령어를 사용하여 새로운 사용자 계정을 생성한다.

 
sudo adduser serveruser

명령 실행 후에는 다음 정보를 순차적으로 입력하게 된다.

  • 사용자 비밀번호
  • 사용자 정보(이름, 연락처 등, 선택 사항)

계정 생성이 완료되면 /home/serveruser 디렉터리가 자동으로 생성되며,
해당 계정 전용 작업 공간이 마련된다.

이 계정은 서버 관리와 서비스 운영의 기본 계정으로 사용된다.


(2) sudo 권한 부여와 관리자 권한 분리

일반 사용자 계정으로 서버를 운영하되,
시스템 설정 변경이나 패키지 설치와 같은 관리자 작업이 필요한 경우를 대비해
sudo 권한을 부여해야 한다.

다음 명령어를 사용하여 해당 사용자를 sudo 그룹에 추가한다.

sudo usermod -aG
sudo serveruser
 

이 설정을 통해 해당 사용자는 root 계정으로 직접 전환하지 않고도
필요한 관리자 작업을 수행할 수 있다.

설정 적용을 위해 로그아웃 후 다시 로그인하거나,
다음 명령어로 사용자 전환을 수행한다.

su - serveruser
 

sudo 권한이 정상적으로 부여되었는지 확인하려면 다음 명령어를 실행한다.


sudo whoami
 

출력 결과가 root로 표시되면 sudo 권한이 정상적으로 동작하는 상태이다.

이 구조를 통해 다음과 같은 효과를 얻을 수 있다.

  • root 계정 오용 및 사고 위험 감소
  • 사용자 작업 기록 추적 용이
  • 서버 보안 수준 향상

 

정리

운영용 일반 사용자 계정 생성과 sudo 권한 분리는 Ubuntu 서버 운영의 기본 보안 구조이다.
이 단계를 통해 서버는 root 중심 구조에서 사용자 중심 구조로 전환되며,
안전하고 체계적인 관리가 가능해진다.

 

다음 단계에서는 SSH 접속 환경과 보안 설정을 통해 외부 접속에 대한 통제를 강화한다.


5. SSH 접속 환경과 보안 설정

SSH(Secure Shell)는 Ubuntu 서버에 원격으로 접속해 관리 작업을 수행하는 핵심 수단이다.
외부 네트워크를 통해 서버에 접근하는 구조인 만큼, SSH 설정은 반드시 보안 관점에서 점검·구성해야 한다.


(1) SSH 서비스 구조 이해

Ubuntu 서버에서 SSH 접속은 sshd 데몬을 통해 제공된다.
서버 부팅 시 SSH 서비스가 자동으로 실행되며, 기본적으로 TCP 22번 포트를 사용한다.

SSH 서비스 상태는 다음 명령어로 확인한다.

sudo systemctl status ssh
 

정상 상태라면 active (running)으로 표시된다.
서비스가 비활성화된 경우에는 다음 명령어로 실행한다.

sudo systemctl start ssh
sudo systemctl enable ssh

 

SSH는 다음과 같은 구조로 동작한다.

  • 클라이언트(로컬 PC)에서 SSH 접속 요청
  • 서버의 sshd 데몬이 요청 수신
  • 인증 절차(비밀번호 또는 키 인증) 수행
  • 인증 성공 시 원격 쉘 제공

이 구조를 이해하면 이후 보안 설정의 의미를 명확히 파악할 수 있다.


(2) root 로그인 차단 설정

Ubuntu 서버 보안 설정에서 가장 먼저 수행해야 할 조치는
root 계정의 SSH 직접 로그인 차단이다.

root 계정은 서버 전체 권한을 가지므로,
외부에서 직접 로그인 가능하게 두는 것은 보안상 매우 위험하다.

SSH 설정 파일을 편집한다.

sudo vim /etc/ssh/sshd_config
 

다음 항목을 찾아 설정 값을 수정한다.

PermitRootLogin no
 

이 설정은 SSH를 통한 root 직접 로그인을 차단하고,
일반 사용자 계정으로 로그인한 후 sudo를 통해 관리자 작업을 수행하도록 유도한다.

설정 변경 후 SSH 서비스를 재시작한다.

sudo systemctl restart ssh
 

이후 root 계정으로 SSH 접속을 시도하면 차단되는 것이 정상이다.


(3) 기본 인증 방식 점검

SSH 인증 방식은 크게 두 가지로 나뉜다.

  • 비밀번호 인증
  • 공개키 기반 인증

초기 설정 단계에서는 비밀번호 인증이 기본값으로 활성화되어 있는 경우가 많다.
현재 인증 방식 설정은 sshd_config 파일에서 확인한다.

PasswordAuthentication yes
 

비밀번호 인증은 설정과 사용이 간단하지만,
장기 운영 환경에서는 보안 강화를 위해 공개키 인증 방식으로 전환하는 것이 권장된다.

초기 단계에서는 다음 기준을 적용한다.

  • 학습·실습 환경: 비밀번호 인증 유지 가능
  • 외부 공개 서버·운영 서버: 키 기반 인증 전환 권장

키 기반 인증 설정은 이후 단계에서 별도로 구성하는 것이 적절하다.


정리

SSH 접속 환경과 보안 설정은 Ubuntu 서버 외부 접근의 안전성을 결정하는 핵심 요소이다.
SSH 서비스 구조를 이해하고, root 로그인 차단과 인증 방식 점검을 완료하면
서버는 기본적인 원격 접속 보안 체계를 갖추게 된다.

 

다음 단계에서는 방화벽(UFW) 설정을 통해 네트워크 접근 자체를 제어하는 과정을 다룬다.

 

6. 방화벽(UFW) 설정과 접근 제어

방화벽 설정은 Ubuntu 서버 보안 구성의 마지막 핵심 단계이다.
방화벽은 외부 네트워크로부터의 접근을 제어하여, 허용된 서비스만 서버에 접속할 수 있도록 제한하는 역할을 한다.
Ubuntu에서는 **UFW(Uncomplicated Firewall)**를 기본 방화벽 도구로 제공한다.


(1) UFW 기본 개념과 동작 방식

UFW는 복잡한 방화벽 규칙을 간단한 명령어로 관리할 수 있도록 설계된 도구이다.
내부적으로는 iptables를 기반으로 동작하지만, 사용자는 포트와 서비스 단위로 접근 제어를 설정할 수 있다.

UFW의 기본 동작 원칙은 다음과 같다.

  • 명시적으로 허용한 트래픽만 통과
  • 허용되지 않은 모든 외부 접근은 차단
  • 규칙은 순차적으로 적용

현재 UFW 활성화 여부와 기본 상태는 다음 명령어로 확인한다.

 
sudo ufw status

초기 상태에서는 inactive로 표시되는 경우가 많다.
이 상태에서는 방화벽이 적용되지 않아 모든 포트가 외부에 노출된 상태이다.


(2) 필수 포트 허용 설정

방화벽을 활성화하기 전에, 원격 접속에 필요한 포트를 반드시 먼저 허용해야 한다.
SSH 포트를 허용하지 않은 상태에서 방화벽을 활성화하면 서버 접속이 차단될 수 있다.

SSH 포트 허용

 
sudo ufw allow ssh

또는 포트 번호로 직접 지정할 수도 있다.

 
sudo ufw allow 22

웹 서버 운영을 예정하고 있다면 다음 포트도 함께 허용한다.

 
sudo ufw allow 80 sudo ufw allow 443
  • 80 : HTTP
  • 443 : HTTPS

필요한 포트만 최소한으로 개방하는 것이 방화벽 설정의 기본 원칙이다.

모든 규칙 설정이 완료된 후 방화벽을 활성화한다.

 
sudo ufw enable

활성화 시 경고 메시지가 표시되지만, SSH 포트가 허용된 상태라면 정상적으로 진행해도 무방하다.


(3) 방화벽 상태 점검

방화벽 활성화 후에는 현재 적용된 규칙과 상태를 점검해야 한다.

 
sudo ufw status verbose

출력 결과에서는 다음 항목을 확인한다.

  • 방화벽 상태: Status: active
  • 기본 정책(Default): incoming 차단 여부
  • 허용된 포트 및 서비스 목록

설정이 올바르게 적용되었다면,
허용한 포트만 ALLOW 상태로 표시되고 나머지는 차단된다.

방화벽 설정 변경이 필요한 경우에는 규칙을 추가·삭제한 후 자동으로 적용된다.
별도의 서비스 재시작은 필요하지 않다.


정리

UFW 방화벽 설정을 통해 Ubuntu 서버는 외부 접근을 통제할 수 있는 기본 보안 장치를 갖추게 된다.
SSH, 웹 서비스 등 필요한 포트만 허용하고 나머지를 차단함으로써,
서버는 불필요한 공격 노출을 크게 줄일 수 있다.

 

이 단계까지 완료하면 Ubuntu 서버의 기본 환경 설정과 보안 준비가 마무리되며,
다음 단계에서는 운영 전 최종 점검을 수행하게 된다.

 


나오며

Ubuntu 서버의 기본 환경 설정과 운영 준비 과정을 모두 완료하면, 서버는 단순한 설치 상태를 넘어 실제 사용이 가능한 운영 환경으로 전환된다.
운영체제 정보 확인부터 시간대·로케일 설정, 시스템 업데이트, 사용자 계정과 권한 분리, SSH 보안 설정, 방화벽 구성까지의 절차는 서버 안정성과 보안을 위한 최소한의 기반을 형성한다.

이러한 초기 설정을 생략하거나 임의로 처리할 경우,
로그 시간 불일치, 보안 취약점 노출, 원격 접속 오류, 서비스 장애와 같은 문제가 발생할 가능성이 높아진다.
반대로 본문에서 다룬 기본 설정을 순서대로 적용하면, 이후 웹 서버나 애플리케이션을 설치하는 과정이 훨씬 안정적으로 진행된다.

이 장에서 구성한 Ubuntu 서버 환경은 학습용 서버뿐만 아니라 소규모 서비스 운영, 테스트 서버, 개인 프로젝트용 서버에도 그대로 활용할 수 있다.
다음 장에서는 이러한 기본 환경을 바탕으로 웹 서버를 설치하고, 외부에서 접속 가능한 서비스 환경을 구성하는 과정을 다룬다.

댓글

🌿 WowDaebak 와우대박 - 영상/디자인/IT 전문 블로그
💌 댓글로 인사해 주세요. 구독 & 하트 💗 +1 감사드려요!