Skip to Content

UFW 방화벽

UFW(Uncomplicated Firewall)는 Ubuntu의 기본 방화벽 관리 도구입니다. 방화벽 구성을 간단하고 직관적으로 만드는 iptables/nftables용 단순화된 프런트엔드입니다.

기본 작업

활성화 및 비활성화

# Enable firewall sudo ufw enable # Disable firewall sudo ufw disable # Check status sudo ufw status # Check detailed status sudo ufw status verbose # Check rules with numbers sudo ufw status numbered
Warning

SSH를 통해 원격으로 서버를 관리하는 경우 방화벽을 활성화하기 전에 SSH 포트를 먼저 허용(sudo ufw allow ssh)해야 합니다. 그렇지 않으면 방화벽이 활성화된 후 즉시 원격 액세스가 중단됩니다.

기본 정책

# Set default to deny incoming connections sudo ufw default deny incoming # Set default to allow outgoing connections sudo ufw default allow outgoing # Recommended initial configuration sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw enable

규칙 관리

허용 규칙

# Allow a specific port sudo ufw allow 22 # SSH sudo ufw allow 80 # HTTP sudo ufw allow 443 # HTTPS # Specify protocol sudo ufw allow 22/tcp sudo ufw allow 53/udp # Allow a port range sudo ufw allow 6000:6007/tcp # Allow a specific IP address sudo ufw allow from 192.168.1.100 # Allow a specific subnet sudo ufw allow from 192.168.1.0/24 # Allow a specific IP to access a specific port sudo ufw allow from 192.168.1.100 to any port 22 # Allow a specific subnet to access a specific port sudo ufw allow from 10.0.0.0/8 to any port 3306 proto tcp

거부 규칙

# Deny a specific port sudo ufw deny 23 # Telnet # Deny a specific IP sudo ufw deny from 203.0.113.50 # Deny a specific IP from accessing a specific port sudo ufw deny from 203.0.113.50 to any port 22

거부 규칙

거부와 달리 거부는 요청자에게 거부 메시지를 다시 보냅니다.

sudo ufw reject 23 sudo ufw reject from 203.0.113.50

규칙 삭제

# Delete by number sudo ufw status numbered sudo ufw delete 3 # Delete by rule content sudo ufw delete allow 80 sudo ufw delete deny from 203.0.113.50 # Reset all rules sudo ufw reset

규칙 삽입

규칙은 순서대로 일치됩니다. 특정 위치에 규칙을 삽입할 수 있습니다.

# Insert a rule at position 1 sudo ufw insert 1 deny from 203.0.113.50

애플리케이션 프로필

UFW는 공통 서비스에 대한 방화벽 구성을 단순화하기 위해 응용 프로그램 프로필을 지원합니다.

애플리케이션 프로필 보기 및 사용

# List available application profiles sudo ufw app list # View application profile details sudo ufw app info 'Nginx Full' # Output: # Profile: Nginx Full # Title: Web Server (Nginx, HTTP + HTTPS) # Description: Small, but very powerful and efficient web server # Ports: # 80,443/tcp # Use an application profile sudo ufw allow 'Nginx Full' sudo ufw allow 'OpenSSH' sudo ufw allow 'Samba'

사용자 정의 애플리케이션 프로필 생성

sudo nano /etc/ufw/applications.d/myapp
[MyApp] title=My Custom Application description=Custom application on port 8080 ports=8080/tcp [MyApp Full] title=My Custom Application (Full) description=Custom application on ports 8080 and 8443 ports=8080,8443/tcp
# Update application list sudo ufw app update MyApp # Use the new profile sudo ufw allow 'MyApp'

일반적인 구성 시나리오

웹 서버

sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 'OpenSSH' sudo ufw allow 'Nginx Full' # Or sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable

데이터베이스 서버

sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 'OpenSSH' # Only allow the application server to access the database sudo ufw allow from 10.0.1.10 to any port 3306 proto tcp # MySQL sudo ufw allow from 10.0.1.10 to any port 5432 proto tcp # PostgreSQL sudo ufw enable

메일 서버

sudo ufw allow 'OpenSSH' sudo ufw allow 25/tcp # SMTP sudo ufw allow 587/tcp # SMTP (submission) sudo ufw allow 993/tcp # IMAPS sudo ufw allow 995/tcp # POP3S sudo ufw enable

도커 환경

Docker는 기본적으로 UFW 규칙을 우회합니다. 이 문제를 해결하려면:

# Edit Docker daemon configuration sudo nano /etc/docker/daemon.json
{ "iptables": false }
# Restart Docker sudo systemctl restart docker # Or use UFW DOCKER rules sudo nano /etc/ufw/after.rules

파일 끝에 추가하십시오.

# BEGIN UFW AND DOCKER *filter :ufw-user-forward - [ACCEPT] :DOCKER-USER - [ACCEPT] -A DOCKER-USER -j RETURN -s 10.0.0.0/8 -A DOCKER-USER -j RETURN -s 172.16.0.0/12 -A DOCKER-USER -j RETURN -s 192.168.0.0/16 -A DOCKER-USER -p udp -m udp --sport 53 -j RETURN -A DOCKER-USER -p tcp -m tcp --sport 80 -j RETURN -A DOCKER-USER -p tcp -m tcp --sport 443 -j RETURN -A DOCKER-USER -j ufw-user-forward COMMIT # END UFW AND DOCKER
sudo ufw reload

고급 구성

속도 제한

UFW는 무차별 대입 공격을 방어하는 데 유용한 연결 속도 제한을 지원합니다.

# Limit SSH connection rate (max 6 connections within 30 seconds) sudo ufw limit 22/tcp # Limit a specific port's rate sudo ufw limit 8080/tcp

로깅 구성

# Enable logging sudo ufw logging on # Set log level sudo ufw logging low # Low (default) sudo ufw logging medium # Medium sudo ufw logging high # High sudo ufw logging full # Full # Disable logging sudo ufw logging off # View firewall logs sudo tail -f /var/log/ufw.log journalctl -k | grep UFW

IPv6 지원

# Ensure IPv6 is enabled sudo nano /etc/default/ufw # Confirm: IPV6=yes # IPv6 rules sudo ufw allow from 2001:db8::/32 to any port 22

규칙 파일 직접 편집

UFW 규칙 파일은 /etc/ufw/에 있습니다:

# User rules sudo nano /etc/ufw/user.rules # IPv4 sudo nano /etc/ufw/user6.rules # IPv6 # Rules executed before UFW rules sudo nano /etc/ufw/before.rules # Rules executed after UFW rules sudo nano /etc/ufw/after.rules

전달 규칙

서버가 게이트웨이 또는 라우터 역할을 하는 경우:

# Enable forwarding sudo nano /etc/ufw/sysctl.conf # Uncomment: net/ipv4/ip_forward=1 # Add NAT rules sudo nano /etc/ufw/before.rules

*filter 앞에 추가:

# NAT *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE COMMIT
# Allow forwarding sudo ufw route allow in on eth1 out on eth0 sudo ufw reload

그래픽 관리

GUFW

# Install GUFW (graphical frontend for UFW) sudo apt install gufw # Launch gufw

GUFW는 다음을 지원하는 직관적인 그래픽 인터페이스를 제공합니다.

  • 방화벽 켜기/끄기 전환
  • 사전 설정된 보안 수준 선택
  • 규칙 추가 및 관리
  • 활동 로그 보기

보안센터

Ubuntu 26.04의 보안 센터는 주로 보안 상태 가시성과 권한 프롬프트 제어를 위한 것입니다. ufw 명령줄 또는 GUFW를 사용하여 방화벽 규칙을 계속 관리합니다.

문제 해결

# Check if UFW is running sudo ufw status # Check actual iptables/nftables rules sudo iptables -L -n -v sudo nft list ruleset # Temporarily disable firewall to troubleshoot network issues sudo ufw disable # Re-enable after troubleshooting sudo ufw enable # View blocked connections sudo tail -f /var/log/ufw.log # Full reset sudo ufw reset