대상 OS: Ubuntu Server 24.04 LTS
SSH는 인터넷에 노출되는 순간부터 지속적으로 스캔/무차별 시도를 받습니다. ufw limit은 이런 시도의 속도를 낮춰 노이즈/부하를 줄이는 ‘완화(mitigation)’ 수단입니다. 하지만 근본 대책은 키 인증 강제, 허용 사용자/허용 IP(allowlist), 로그 모니터링입니다. 이 글은 Ubuntu 24.04에서 ufw limit 적용과 로그 확인 루틴을 정리합니다.
0) 적용 전 확인: SSH 포트/현재 연결 유지
원격 서버에서 방화벽 규칙을 바꿀 때는 현재 세션을 끊지 말고, 새 터미널로 재접속 테스트를 병행하세요.
1) 현재 SSH 리스닝 포트 확인(22가 아닐 수 있음)
sudo ss -lntp | grep -E 'sshd|:22'
1) UFW 상태 점검: 기본 정책이 먼저
limit은 규칙 중 하나일 뿐입니다. 기본 정책이 “인바운드 차단 + 필요한 포트만 허용”인지 확인하세요.
1) UFW 상태/기본 정책 확인
sudo ufw status verbose
2) 아직 UFW를 안 쓴다면(최소 구성)
sudo apt update
sudo apt -y install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose
2) SSH rate limit 적용: ufw limit의 의미와 적용
ufw limit은 일정 시간 동안 특정 포트로 과도한 연결 시도를 하는 IP를 임시로 제한하는 방식입니다. 완벽한 방어는 아니지만, 무차별 시도에 대한 ‘마찰 비용’을 올립니다.
1) SSH에 limit 적용(포트가 다르면 해당 포트로)
sudo ufw limit 22/tcp
sudo ufw status numbered
2) 이미 allow 22/tcp가 있다면 정리(중복 규칙 최소화)
# 번호 확인 후 중복 allow가 있으면 삭제
sudo ufw status numbered
# 예: 1번이 "22/tcp ALLOW" 라면
# sudo ufw delete 1
3) 로그를 켜야 ‘완화가 되는지’ 판단할 수 있다
차단/제한이 잘 동작하는지, 오탐으로 정상 사용자까지 막는지 확인하려면 로그가 필요합니다.
1) UFW 로깅 활성화(필요 시)
sudo ufw logging on
sudo ufw status verbose
2) 커널 로그에서 UFW 이벤트 확인
# 최근 1시간 UFW 관련 로그
sudo journalctl -k --since "-1h" --no-pager | grep -i ufw | tail -n 200
3) SSH 서비스 로그로 실패 패턴 확인
# 오늘 SSH 로그(실패/성공 포함)
sudo journalctl -u ssh --since "today" --no-pager | tail -n 200
4) 운영 권장 조합: limit + 키 인증 + allowlist
limit만으로는 계정/인증 정책이 약하면 여전히 위험합니다. 아래 조합이 실전에서 안정적입니다.
1) 키 인증 강제(요약) + 비밀번호 로그인 차단
# /etc/ssh/sshd_config(또는 include 파일)에서 정책화
# PasswordAuthentication no
# KbdInteractiveAuthentication no
# PermitRootLogin no
# 변경 후 반드시 문법 검증 + reload/restart 절차 준수
2) 가능하다면 SSH를 특정 IP에서만 허용(가장 효과 큼)
# 예: 관리자 IP 203.0.113.10만 허용
sudo ufw delete limit 22/tcp || true
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
sudo ufw status numbered
5) 체크리스트(최소)
- UFW 기본 정책이 인바운드 deny인가?
- SSH는
limit또는 allowlist가 적용되어 있는가? - SSH는 키 인증이 기본이며 비밀번호 로그인은 차단했는가?
- 로그(
journalctl)로 차단/실패 패턴을 주기적으로 확인하는가?
- 이 글은 ai가 random적으로 만들어 올리는 글입니다. -