새로운 리눅스 우분투(Ubuntu) 서버를 할당받거나 설치한 직후, 가장 먼저 진행해야 하는 작업이 바로 기초 초기 설정과 보안 세팅입니다. Initial Server Setup 과정 없이 기본 상태(root 계정 및 기본 포트)로 서버를 외부에 노출할 경우, 불과 몇 시간 이내에 무차별 대입 공격(Brute Force Attack)이나 악성 스크립트의 표적이 될 수 있습니다.
이번 글에서는 우분투 서버를 개설한 후 안정적이고 안전한 시스템 운영을 위해 반드시 적용해야 하는 필수 초기 설정 6단계를 아주 쉽게 정리해 드리겠습니다.
1. 시스템 패키지 최신 업데이

트
서버에 처음 접속하면 가장 먼저 서버 내의 모든 패키지를 최신 버전으로 업그레이드해야 합니다. 알려진 보안 취약점을 해결하는 가장 기본적인 단계입니다.
# 최신 패키지 목록 업데이트 및 설치된 패키지 업그레이드
sudo apt update && sudo apt upgrade -y
- apt update: 패키지 목록을 최신 상태로 갱신합니다.
- apt upgrade: 실제로 설치된 프로그램들을 최신 버전으로 설치합니다.
2. 일반 사용자 계정 생성 및 sudo 권한 부여
최고 관리자 계정인 root로 계속 작업하는 것은 매우 위험합니다. 명령어 하나를 잘못 입력하면 시스템 전체가 날아갈 수 있기 때문에, 일반 작업용 사용자 계정을 따로 만들고 필요할 때만 관리자 권한(sudo)을 사용하는 것이 표준입니다.
# 1. 새로운 사용자 생성 (예: myuser)
sudo adduser myuser
# 2. 새로 생성한 사용자에게 sudo (관리자) 그룹 권한 부여
sudo usermod -aG sudo myuser
계정 생성이 완료되면 su - myuser 명령어로 새로 만든 계정에 로그인하여 작업이 정상적으로 진행되는지 확인합니다.
3. SSH 기본 포트 변경 및 root 로그인 차단
해커들이 가장 흔하게 공격하는 통로는 SSH 서비스의 기본 포트인 22번 포트와 root 계정입니다. 이 두 가지를 변경/차단하는 것만으로도 대부분의 자동화된 공격을 막을 수 있습니다.
# SSH 설정 파일 편집기 열기
sudo nano /etc/ssh/sshd_config
설정 파일 안에서 다음 내용들을 찾아 변경해 줍니다.
# 1. 기본 포트 변경 (22번 대신 10000~65535 사이의 안 쓰는 포트로 지정 예: 2222)
Port 2222
# 2. root 계정 직접 로그인 금지 설정
PermitRootLogin no
수정이 완료되면 저장(Ctrl + O 후 Enter)하고 나간 뒤(Ctrl + X), SSH 서비스를 재시작합니다.
sudo systemctl restart ssh
⚠️ 주의: SSH 재시작 후 기존 접속 창을 닫지 않은 상태에서, 새 창을 열어 새로 변경한 포트 및 일반 계정으로 접속이 잘 되는지 반드시 먼저 테스트해야 합니다!
4. UFW 방화벽(Firewall) 활성화 및 포트 개방
우분투에는 UFW(Uncomplicated Firewall)라는 직관적인 방화벽 도구가 기본 탑재되어 있습니다. 필요한 포트만 열고 나머지 외부 접근을 차단하도록 설정합니다.
# 1. 새로 변경한 SSH 포트 허용 (예: 2222번)
sudo ufw allow 2222/tcp
# 2. 웹서버 기본 포트 허용 (HTTP 80, HTTPS 443)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 3. 방화벽 활성화
sudo ufw enable
# 4. 방화벽 상태 및 규칙 확인
sudo ufw status verbose
- 방화벽을 켤 때 접속 중인 SSH 포트(예: 2222)를 미리 허용하지 않으면 서버 접속이 차단되므로 주의해야 합니다.
5. Fail2ban 설치를 통한 무차별 대입 공격 차단
Fail2ban은 SSH 접속 시도 중 일정 횟수 이상 비밀번호를 틀리면, 해당 공격자의 IP를 자동으로 일정 시간 동안 방화벽에서 차단(Ban)해 주는 유용한 보안 도구입니다.
# Fail2ban 패키지 설치
sudo apt install fail2ban -y
# 기본 설정 파일 복사하여 커스텀 설정 준비
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Fail2ban 서비스 상태 및 활성화 확인
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
기본 설정만으로도 5회 이상 로그인 실패 시 해당 IP를 10분간 차단해 주므로, 무차별 로그인 공격을 효과적으로 방어할 수 있습니다.
6. 서버 시간대(Timezone) 설정
서버의 로그 관리나 예약 작업(Cron), 데이터베이스 시간 저장을 정확히 처리하기 위해 한국 시간(KST)으로 시간대를 변경해 두는 것이 좋습니다.
# 1. 현재 시간대 확인
timedatectl
# 2. 서울(KST) 시간대로 변경
sudo timedatectl set-timezone Asia/Seoul
💡 우분투 서버 초기 보안 세팅 요약 표
| 단계 | 설정 항목 | 추천 설정/명령어 | 세팅 목적 |
| 1단계 | 패키지 업데이트 | sudo apt update && sudo apt upgrade | 보안 패치 및 최신 상태 유지 |
| 2단계 | 계정 관리 | adduser 및 usermod -aG sudo | root 직접 사용 자제, 안전성 확보 |
| 3단계 | SSH 보안 강화 | Port 2222, PermitRootLogin no | 무차별 자동화 접속 공격 회피 |
| 4단계 | 방화벽(UFW) | ufw allow [포트], ufw enable | 불필요한 포트 접근 통제 |
| 5단계 | Fail2ban | apt install fail2ban | 비밀번호 반복 오류 IP 자동 차단 |
| 6단계 | 타임존 | timedatectl set-timezone Asia/Seoul | 정확한 로그 분석 및 시간 맞춤 |
💡 요약 및 결론
새로운 리눅스 우분투 서버를 개설했다면 아무런 서비스나 웹서버를 올리기 전에 패키지 업데이트 ➔ sudo 계정 생성 ➔ SSH 보안 변경 ➔ UFW 방화벽 세팅 ➔ Fail2ban 설치 ➔ 타임존 설정의 6가지 표준 보안 절차를 반드시 거치시기 바랍니다.
이 기초 세팅만 완벽히 마쳐도 서버 운영 중 발생할 수 있는 보안 문제의 90% 이상을 예방할 수 있으며, 더욱 안전하고 안정적인 웹 서비스 환경을 유지할 수 있습니다.