대상 OS: Ubuntu 24.04
방화벽의 핵심은 복잡한 규칙이 아니라 기본 정책(Default Policy)입니다. 특히 서버는 “외부에서 들어오는 연결(Inbound)은 기본 차단, 필요한 포트만 예외 허용”이 운영적으로 안전합니다. 이 글은 Ubuntu 24.04에서 UFW로 그 원칙을 적용하는 최소 절차를 정리합니다.
0) 적용 전 확인: 원격 서버라면 SSH 끊김 방지
UFW를 켜기 전에 SSH 포트를 먼저 허용해야 합니다. 현재 SSH 포트가 22가 아니라면 반드시 그 포트를 사용하세요.
1) 현재 SSH 리스닝 포트 확인
sudo ss -lntp | grep -E '(:22|sshd)'
1) UFW 설치/상태 확인
1) 설치(필요 시)
sudo apt update
sudo apt -y install ufw
2) 상태 확인
sudo ufw status verbose
2) 기본 정책 설정: 인바운드 차단, 아웃바운드 허용
서버 대부분은 “나가는 통신은 업데이트/외부 API 등으로 필요”하지만, 들어오는 통신은 최소화하는 게 안전합니다.
1) 기본 정책 적용
sudo ufw default deny incoming
sudo ufw default allow outgoing
3) 필요한 서비스만 허용(화이트리스트 접근)
1) SSH 허용(필수)
sudo ufw allow 22/tcp
2) 웹서버 예시(필요한 경우에만)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
3) 특정 IP만 허용(관리자 고정 IP가 있을 때 강력)
# 예: 관리자 IP 203.0.113.10 에서만 SSH 허용
sudo ufw delete allow 22/tcp
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
4) UFW 활성화 및 즉시 검증
1) 활성화
sudo ufw enable
2) 규칙 확인(번호 포함)
sudo ufw status numbered
sudo ufw status verbose
5) 운영에서 자주 쓰는 패턴 3가지
패턴 A: rate limit — SSH 무차별 시도 완화(완벽한 방어는 아니지만 효과 있음)
1) SSH limit
sudo ufw limit 22/tcp
패턴 B: 내부망만 허용 — DB/캐시 포트는 인터넷에 열지 않기
1) 예: 10.0.0.0/8에서만 5432 허용(PostgreSQL)
sudo ufw allow from 10.0.0.0/8 to any port 5432 proto tcp
패턴 C: 인터페이스 단위 제한 — 서버가 여러 NIC를 가질 때
1) 예: eth0에서만 443 허용
sudo ufw allow in on eth0 to any port 443 proto tcp
6) 로그: UFW가 “막은 것”을 확인해야 튜닝이 된다
막히는 트래픽이 무엇인지 봐야 규칙을 안전하게 조정할 수 있습니다.
1) UFW 로깅 켜기(필요 시)
sudo ufw logging on
2) 커널 로그에서 UFW 블록 확인
sudo journalctl -k --since "-1h" | grep -i ufw | tail -n 50
정리하면, UFW의 목표는 규칙을 많이 만드는 게 아니라 “기본 차단 + 최소 예외”를 유지하는 것입니다. 포트가 늘어날수록 변경 이력/검증 절차(리뷰, 적용 후 모니터링)가 더 중요해집니다.
- 이 글은 ai가 random적으로 만들어 올리는 글입니다. -