클라우드 환경(AWS, GCP, 가비아 등)에서 우분투(Ubuntu) 리눅스 서버를 처음 생성하고 마주하는 검은 터미널 창, 가슴이 두근거리시나요? 하지만 기쁨도 잠시, 전 세계의 해킹 봇(Bot)들은 당신의 서버가 생성된 직후부터 취약점을 찾아내기 위해 쉴 새 없이 스캐닝을 시작합니다.
아무런 보안 설정 없이 기본 상태로 서버를 방치하는 것은, 현관문을 활짝 열어두고 외출하는 것과 같습니다. 구글 애드센스 승인은 물론, 안정적인 웹 서비스 운영을 위해 서버 구축 직후 **최우선으로 적용해야 할 ‘우분투 기본 보안 설정 5가지’**를 초보자도 따라 할 수 있게 상세히 안내해 드립니다.
1. 최고 관리자(Root) 계정 원격 접속 차단 및 새로운 Sudo 유저 생성
리눅스의 최고 관리자 계정 이름은 전 세계 공통으로 root입니다. 해커들은 아이디를 이미 알고 있기 때문에 비밀번호만 알아내면 서버를 완전히 장악할 수 있습니다. 따라서 root 계정의 직접 로그인을 막고, 나만의 관리자 계정을 새로 만들어야 합니다.
[적용 방법]
- 새로운 사용자 계정(예:
myadmin)을 생성합니다.Bashadduser myadmin - 생성한 계정에 최고 관리자 권한(
sudo)을 부여합니다.Bashusermod -aG sudo myadmin - 새 계정으로 접속이 잘 되는지 확인한 후, SSH 설정 파일(
/etc/ssh/sshd_config)을 열어PermitRootLogin항목을no로 변경합니다. - SSH 서비스를 재시작하여 설정을 적용합니다. (
sudo systemctl restart sshd)
2. 기본 SSH 접속 포트(22번) 변경하기
SSH(Secure Shell)는 원격으로 서버에 접속하기 위한 프로토콜이며, 기본적으로 22번 포트를 사용합니다. 해커들의 자동화 프로그램은 무조건 22번 포트가 열려있는지부터 찔러봅니다. 이 포트 번호만 임의의 숫자(예: 2222, 50022 등)로 바꿔도 자동화된 공격의 90% 이상을 피할 수 있습니다.
[적용 방법]
- SSH 설정 파일을 엽니다.Bash
sudo nano /etc/ssh/sshd_config #Port 22라고 적혀있는 부분의 주석(#)을 지우고, 원하는 포트 번호로 수정합니다. (예:Port 55222)- 주의: 포트 번호는 1024~65535 사이의 남들이 잘 안 쓰는 숫자를 권장합니다.
- 파일을 저장하고 SSH 데몬을 재시작합니다.
- 매우 중요: 포트를 변경하기 전에 반드시 아래 4번 단계의 방화벽(UFW)에서 해당 포트를 먼저 열어주거나, 클라우드 제공자(AWS 등)의 보안 그룹에서 해당 포트를 인바운드 허용해야 접속이 끊기지 않습니다.
3. 비밀번호 로그인 금지 및 SSH 키 페어(Key Pair) 인증 적용
비밀번호는 아무리 길고 복잡하게 만들어도 무차별 대입 공격(Brute Force)에 뚫릴 위험이 있습니다. 가장 안전한 방법은 암호화된 ‘공개키/개인키’ 쌍을 만들어, 개인키(Private Key) 파일을 가진 PC에서만 접속할 수 있도록 설정하는 것입니다.
[적용 방법]
- AWS EC2 등을 사용한다면 생성 시 발급받은
.pem키를 사용하면 됩니다. 일반 호스팅이라면 로컬 PC에서ssh-keygen명령어로 키를 생성하여 서버의~/.ssh/authorized_keys에 등록합니다. - 키 접속이 완벽히 작동하는 것을 확인했다면, 다시 SSH 설정 파일(
/etc/ssh/sshd_config)을 엽니다. PasswordAuthentication yes를PasswordAuthentication no로 변경합니다.- 이제 비밀번호만으로는 절대 서버에 접속할 수 없는 강력한 보안 환경이 완성됩니다.
4. UFW(Uncomplicated Firewall) 방화벽으로 불필요한 문 닫기
우분투에는 초보자도 쉽게 다룰 수 있는 UFW라는 강력한 방화벽이 내장되어 있습니다. 서버 보안의 기본 원칙은 **’모든 문을 닫고, 내가 필요한 문(포트)만 열어두는 것’**입니다.
[적용 방법]
- 외부에서 들어오는 모든 접속을 기본적으로 차단합니다.Bash
sudo ufw default deny incoming - 내가 사용하는 포트만 예외적으로 허용합니다. (예: 변경한 SSH 포트가 55222이고, 웹 서버용 80, 443 포트를 쓰는 경우)Bash
sudo ufw allow 55222/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp - 방화벽을 활성화합니다.Bash
sudo ufw enable sudo ufw status명령어로 현재 허용된 포트 목록을 확인하여 제대로 세팅되었는지 점검합니다.
5. Fail2ban 설치로 무차별 대입 공격(Brute Force) 원천 차단
포트를 바꾸고 방화벽을 쳐도, 포트 스캐닝을 통해 바뀐 주소를 찾아내 악착같이 로그인을 시도하는 해커들이 있습니다. Fail2ban은 누군가 비밀번호나 키 인증을 연속으로 틀릴 경우, 아예 해당 IP를 방화벽 단위에서 영구적(또는 일시적)으로 차단해 버리는 훌륭한 백신 프로그램입니다.
[적용 방법]
- Fail2ban 패키지를 설치합니다.Bash
sudo apt update sudo apt install fail2ban - 기본 설정 파일을 복사하여 안전하게 커스텀 설정을 준비합니다.Bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local jail.local파일을 열어bantime(차단 시간),findtime(검색 시간),maxretry(최대 허용 실패 횟수)를 설정합니다. 보통 5번 틀리면 24시간 차단하는 식으로 세팅합니다.- 서비스를 재시작(
sudo systemctl restart fail2ban)하면 즉시 실시간 감시가 시작됩니다.
결론: 보안은 선택이 아닌 서버 생존의 필수 조건
위에서 설명해 드린 5가지 단계는 우분투 리눅스 서버를 구축했다면 선택이 아닌 **’무조건 거쳐야 하는 필수 과정’**입니다. 이 기초적인 방어막만 잘 쳐두어도 일반적인 랜섬웨어 감염이나 좀비 PC(DDoS 봇넷)로 전락하는 불상사를 99% 막아낼 수 있습니다.
서버 세팅이 끝났다고 안심하지 마시고, 주기적인 패키지 업데이트(sudo apt update && sudo apt upgrade -y)를 통해 최신 보안 패치를 유지하는 습관을 들이시길 바랍니다. 탄탄한 서버 환경 위에서 애드센스 고수익의 기반이 되는 안정적인 웹사이트를 멋지게 운영해 나가시기를 응원합니다!