우분투 실전 명령어 | ufw 방화벽 기본 운영(열기/닫기/로그 확인)
UFW는 우분투 서버에서 방화벽을 빠르게 관리할 때 가장 먼저 잡는 도구다. SSH만 열어두고 나머지를 정리하거나, 서비스 포트를 단계적으로 열 때 특히 유용하다.
언제 쓰는가
- 서버를 처음 배포하고 기본 네트워크 접근 정책을 정리할 때
- SSH(22), 웹(80/443)처럼 꼭 필요한 포트만 허용하고 싶을 때
- 운영 중 특정 포트 접근을 임시로 차단/해제해야 할 때
바로 쓰는 명령어
# 1) 현재 규칙/상태 확인
sudo ufw status verbose
# 2) 기본 정책 설정
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 3) SSH 먼저 허용
sudo ufw allow OpenSSH
# 4) UFW 활성화
sudo ufw enable
# 5) 웹 서비스 포트 허용
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 6) 규칙 번호 포함 목록 보기
sudo ufw status numbered
# 7) 특정 규칙 삭제
sudo ufw delete 3
# 자주 쓰는 패턴
# 특정 IP만 22번 포트 허용
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
# 특정 대역 차단
sudo ufw deny from 198.51.100.0/24
# 로그 켜기
sudo ufw logging medium
자주 하는 실수
- SSH 허용 전에 ufw enable 실행: 원격 접속이 끊길 수 있다. 원격 서버라면
allow OpenSSH를 먼저 적용하고 활성화한다. - allow만 쌓고 정리 안 함: 임시 오픈 포트가 남아서 보안 구멍이 된다. 작업 끝나면
status numbered로 확인 후 삭제한다. - 프로토콜 미지정으로 의도와 다르게 열림: 필요하면
80/tcp처럼 명시해서 열어두는 게 안전하다.
검증 방법
# 방화벽 상태/기본 정책/규칙 확인
sudo ufw status verbose
# 실제 리슨 중인 포트 확인
sudo ss -tulpen
# UFW 로그 확인
sudo tail -n 50 /var/log/ufw.log
Status: active인지 확인Default: deny (incoming), allow (outgoing)형태인지 확인- 열어둔 포트와 실제 서비스 리슨 포트가 일치하는지 교차 확인
실행 결과 예시
$ sudo ufw status verbose
Status: active
Logging: on (medium)
Default: deny (incoming), allow (outgoing), disabled (routed)
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
$ sudo ufw status numbered
[ 1] 22/tcp (OpenSSH) ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
출처
- Ubuntu Community Documentation
- man ufw
- DigitalOcean Community