UFW 방화벽 실전 규칙: SSH 잠그고, 웹만 열고, 포트스캔 막기
운영 서버의 최소 보안은 기본 차단(deny) 후 필요한 포트만 허용하는 것입니다. 이 글에서는 UFW로 SSH를 안전하게 열고(필요 시 접속지 제한/속도 제한), 웹(80/443)만 개방하며, 간단한 포트스캔 무의미화를 위한 before.rules 강화까지 다룹니다.
1) 기본 정책
sudo apt -y install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
2) SSH 안전 개방
- 기본 포트(22) 유지 시
limit규칙으로 과도 접속 차단 - 가능하면 접속지 IP를 지정(사무실/점프호스트)하여 표면 축소
# 2-1) SSH rate limit (폭주 방지)
sudo ufw limit 22/tcp comment 'ssh-limit'
# 2-2) 접속지 IP 화이트리스트 (예: 203.0.113.10)
# sudo ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'ssh-office'
# 2-3) 커스텀 포트를 쓴다면(예: 2222), sshd_config 수정 후 해당 포트 허용
# sudo ufw limit 2222/tcp comment 'ssh-2222'
3) 웹 포트(80/443)만 허용
sudo ufw allow 80/tcp comment 'http'
sudo ufw allow 443/tcp comment 'https'
4) IPv6 동시 활성화 여부
/etc/ufw/ufw.conf에서 IPV6=yes 설정을 확인하고, 서버가 IPv6를 사용 중이면 동일 규칙이 v6에도 적용됩니다.
5) 활성화 및 상태
sudo ufw enable
sudo ufw status verbose
6) 포트스캔 무의미화(간단 필터)
UFW는 내부적으로 iptables를 사용합니다. /etc/ufw/before.rules에 NULL/XMAS 스캔 패턴 드랍을 추가할 수 있습니다. (변경 전 백업 필수)
--- /etc/ufw/before.rules
+++ /etc/ufw/before.rules
@@
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
# 추가: 간단 스캔 드랍 체인
:ufw-scan-drop - [0:0]
# 스캔 드랍 규칙
-A ufw-before-input -j ufw-scan-drop
-A ufw-scan-drop -p tcp --tcp-flags ALL NONE -j DROP # NULL
-A ufw-scan-drop -p tcp --tcp-flags ALL ALL -j DROP # XMAS
-A ufw-scan-drop -m state --state INVALID -j DROP # INVALID
COMMIT
sudo ufw disable && sudo ufw enable # 규칙 재적용
sudo ufw status verbose
7) 로그와 점검
sudo ufw logging on
sudo tail -f /var/log/ufw.log
8) 운영 팁
- 새 규칙 적용 전, 현재 접속 세션이 끊기지 않도록 콘솔/서브 채널 확보
- 클라우드 보안그룹(EC2 등)과 UFW 중복 차단 규칙으로 인해 예상치 못한 차단이 생길 수 있음
- 자동화 도구(Ansible 등)로 정책을 코드화하여 서버 간 규칙 차이를 방지
👉 1편: Ubuntu 24.04에서 Nginx로 무료 SSL(HTTPS) 적용
👉 5편: Gradle 빌드 최적화로 빌드 50% 줄이기
👉 6편: Spring Security 6 JWT 로그인/리프레시 토큰
👉 7편: JPA N+1 완전 정복: 자동 감지부터 fetch join·EntityGraph·batch_size 실전 해결 전략
👉 8편: Docker로 PostgreSQL 운영(백업/복구/업그레이드)
'서버 인프라 실무' 카테고리의 다른 글
| JPA N+1 완전 정복: 자동 감지부터 fetch join·EntityGraph·batch_size 실전 해결 전략 (0) | 2025.10.09 |
|---|---|
| Gradle 빌드 캐시/병렬/Configuration Cache로 빌드 50% 줄이기 (0) | 2025.10.08 |
| Tomcat 10 운영자 튜닝 가이드(커넥터·스레드풀·압축·헤더 최적화) (0) | 2025.10.07 |
| systemd 서비스로 스프링부트 배포: 로그 분리·자동 재시작까지 (0) | 2025.10.07 |
| Ubuntu 24.04에서 Nginx로 무료 SSL(HTTPS) 적용(이중 인증서 자동갱신) (0) | 2025.10.06 |