우분투 UFW 방화벽 기본 설정은 새 서버를 받으면 가장 먼저 해야 하는 작업 중 하나입니다. 신규 우분투 서버는 방화벽이 비활성화 상태로 납품됩니다. 저도 한 번은 서버 세팅에 집중하느라 방화벽 설정을 미루고 있었는데, Nginx 로그에 온갖 포트로 스캔 시도 기록이 쌓이는 것을 발견했습니다. 그 이후로는 서버를 받으면 소프트웨어 설치보다 방화벽 설정을 먼저 합니다.
방화벽 설정 시 가장 중요한 것은 SSH 포트를 먼저 허용한 다음 활성화하는 것입니다. 순서가 바뀌면 서버에서 잠길 수 있습니다.
# 현재 UFW 상태 확인
sudo ufw status
# 기본 정책 설정 (들어오는 것 전부 차단, 나가는 것 전부 허용)
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH 허용 (먼저!)
sudo ufw allow 22/tcp
# SSH 포트를 변경했다면
sudo ufw allow 22222/tcp
# 웹 서버 허용
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# UFW 활성화
sudo ufw enable
ufw enable 실행 후 “Command may disrupt existing ssh connections” 경고가 나옵니다. SSH를 허용한 상태에서 활성화하면 문제없습니다.
웹 서버용 병원 사이트 서버에서 필요한 포트만 열어두는 설정입니다.
# 허용 목록
sudo ufw allow ssh # 22번 포트 (또는 변경한 포트)
sudo ufw allow http # 80번
sudo ufw allow https # 443번
sudo ufw allow from <관리자_IP> to any port 3306 # MySQL: 관리자 IP만 허용
# 상태 확인
sudo ufw status verbose
MySQL(3306), Redis(6379) 같은 DB 포트는 외부에서 절대 열면 안 됩니다. 관리가 필요하다면 SSH 터널을 통해서만 접근하세요.
방화벽이 차단한 내역을 로그에서 확인할 수 있습니다.
# UFW 로그 활성화
sudo ufw logging on
# 로그 확인
sudo tail -50 /var/log/ufw.log
[UFW BLOCK] 로 시작하는 줄이 차단된 접근 시도입니다. 특정 IP에서 반복적으로 차단됩니다면 그 IP를 명시적으로 차단하는 규칙을 추가하세요.
sudo ufw deny from 악성IP
UFW는 설정이 간단하지만 효과는 강력합니다. 서버 납품받은 날 바로 설정하는 루틴을 만들어두면 나중에 후회할 일이 없습니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)