리눅스 서버 초기 세팅 체크리스트 (새 서버 받으면 할 일 10가지)
새 리눅스 서버를 받으면 무엇부터 해야 할까. 접속만 되면 바로 서비스를 올리고 싶지만, 처음 30분 동안 기본 설정을 해 두느냐에 따라 이후 보안 사고와 장애가 크게 갈린다. 이 글은 리눅스 서버 초기 세팅 순서를 10단계 체크리스트로 정리하고, 단계마다 자세한 방법을 다룬 글로 연결해 둔 모음 글이다. Ubuntu와 Rocky Linux 같은 RHEL 계열을 기준으로 한다.

리눅스 서버 초기 세팅 체크리스트 한눈에 보기
| 순서 | 할 일 | 핵심 명령 |
|---|---|---|
| 1 | 패키지 업데이트 | apt update && apt upgrade |
| 2 | 작업용 사용자 만들기 | adduser, usermod -aG sudo |
| 3 | SSH 키 인증 설정 | ssh-keygen, ssh-copy-id |
| 4 | SSH 보안 강화 | PasswordAuthentication no |
| 5 | 방화벽 설정 | ufw allow, ufw enable |
| 6 | fail2ban 설치 | fail2ban-client status |
| 7 | 시간대와 시간 동기화 | timedatectl set-timezone |
| 8 | 스왑 설정 | fallocate, swapon |
| 9 | 로그 관리 | journalctl, logrotate |
| 10 | 자동 백업 | crontab, mysqldump, rsync |
1~2단계: 업데이트와 사용자 만들기
가장 먼저 패키지를 최신으로 올려 알려진 보안 취약점을 막는다. 패키지 관리자 사용법은 리눅스 패키지 관리(apt, yum, dnf)에 정리했다.
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y
# Rocky / RHEL 계열
sudo dnf upgrade -y그다음 root로 바로 작업하지 말고 sudo 권한을 가진 작업용 계정을 만든다. 사용자 관리 명령은 리눅스 사용자 관리에 있다.
sudo adduser deploy
# Ubuntu
sudo usermod -aG sudo deploy
# Rocky / RHEL
sudo usermod -aG wheel deploy3~4단계: SSH 접속 보안
비밀번호 대신 키로 접속하도록 바꾸는 것이 서버 보안의 출발점이다. 방법은 SSH 키 인증 설정 방법에 단계별로 정리했다. 키 접속이 확인되면 비밀번호 로그인과 root 직접 로그인을 끄고, 필요하면 SSH 포트 변경도 한다.
# /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin no
sudo sshd -t && sudo systemctl restart ssh설정을 바꾼 뒤에는 지금 세션을 닫지 말고, 새 터미널에서 접속이 되는지 먼저 확인하자. 문제가 생기면 SSH 접속 안될 때 확인할 것을 보면 된다.
5~6단계: 방화벽과 fail2ban
필요한 포트만 열고 나머지는 막는다. SSH 포트를 먼저 허용한 뒤 방화벽을 켜야 접속이 끊기지 않는다. 자세한 내용은 리눅스 방화벽 설정 방법에 있다.
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status verbose열어 둔 SSH 포트로 들어오는 무차별 대입 공격은 fail2ban이 자동으로 막아 준다. 설정은 fail2ban 설정 방법을 참고하자.
7~8단계: 시간대와 스왑
클라우드 서버는 보통 UTC로 설정되어 있어 로그와 crontab 시간이 한국 시간과 9시간 어긋난다. 리눅스 시간대와 시간 동기화 설정으로 맞춰 두자. 메모리가 2GB 이하라면 스왑 메모리 설정도 해 두는 것이 안전하다.
sudo timedatectl set-timezone Asia/Seoul
timedatectl
free -h9단계: 로그 확인과 관리
문제가 생겼을 때 가장 먼저 보는 곳이 로그다. 로그가 어디에 쌓이는지는 리눅스 로그 파일 위치, 보는 방법은 journalctl 사용법, 로그가 디스크를 가득 채우지 않게 하는 방법은 logrotate 사용법에 정리했다. 디스크와 메모리 상태는 df, du로 디스크 확인과 메모리 확인 방법으로 수시로 점검한다.
로그가 디스크를 가득 채우는 일을 막으려면 journald 용량 제한도 걸어 두자. 이미 가득 찼다면 리눅스 디스크 용량 부족 해결을 보면 된다.
10단계: 자동 백업
마지막은 백업이다. 백업은 문제가 생긴 뒤에 만들 수 없다. crontab으로 매일 mysqldump DB 백업을 만들고, rsync로 다른 서버에 한 벌 더 보관하면 기본 백업 체계가 완성된다. 백업 스크립트는 쉘 스크립트 기초 글의 예제를 그대로 응용하면 된다.
리눅스 서버 초기 세팅 이후 할 일
- 웹 서비스를 올린다면 Nginx 리버스 프록시와 무료 SSL을 설정한다.
- 앱을 컨테이너로 운영한다면 Docker 설치와 기본 명령어를 참고한다.
- 배포 스크립트와 설정 파일은 Git으로 관리하면 변경 이력을 추적할 수 있다.
서버에서 계속 돌아야 하는 애플리케이션은 systemd 서비스로 등록해 두면 재부팅이나 비정상 종료 뒤에도 자동으로 다시 시작된다.
리눅스 서버 초기 세팅 정리
리눅스 서버 초기 세팅은 한 번에 완벽하게 할 필요는 없지만, 순서는 지키는 것이 좋다. 업데이트와 사용자, SSH 보안, 방화벽까지는 서버를 받자마자 끝내고, 나머지는 서비스를 올리기 전에 마무리하자. 이 체크리스트를 즐겨찾기 해 두고 새 서버를 받을 때마다 한 줄씩 지워 나가면 된다. 각 배포판의 공식 보안 안내는 Ubuntu Server 공식 문서에서도 볼 수 있다.
첫 댓글을 남겨보세요