우분투 UFW 방화벽 설정 방법

수정 :
by PG
Photo of author

우분투의 UFW는 방화벽을 쉽게 설정할 수 있게 하는 도구로 포트 및 IP, 어플리케이션에 대한 방화벽 설정을 할 수 있습니다.

UFW 상태 확인과 활성화, 비활성화 설정

# ufw status

기본적으로 우분투의 방화벽은 비활성화 상태이며 위 명령어로 ufw의 실행 상태 및 설정 룰을 확인할 수 있습니다.

# ufw enable
# ufw disable

위 명령어로 방화벽을 켜고 끌 수 있으며 중요한 점은 기본적으로 방화벽 룰이 모든 포트를 접근 금지(deny) 하기 때문에 서비스 포트를 접근 할 수 있게 먼저 룰을 설정한 다음 활성화 해야 ssh로 접속해 컨트롤 하는 경우 방화벽에 막히는 실수를 방지할 수 있습니다.

UFW 초기화

# ufw reset

방화벽을 이리저리 설정하다가 초기화 하고 싶은 경우에는 위 명령어로 간단하게 초기화 할 수 있습니다. 초기화시 UFW는 비활성화 상태로 되돌아갑니다.

UFW 기본 룰(rules)

# ufw show raw

기본적으로 UFW의 기본 룰은 들어오는(incoming) 모든 패킷은 거부, 나가는(outgoing) 모든 패킷은 허가 상태입니다. 기본 룰은 다음 명령어를 통해 확인할 수 있습니다.

# ufw default allow

만일 기본 룰을 모두 허용으로 변경한 다음 거부할 포트나 IP를 하나씩 막고 싶다면 위 명령어를 통해 모든 접근을 허용으로 변경할 수 있습니다. 하지만 효율적이지 못한 구성이므로 권장하지 않습니다.

# ufw default deny

만일 기본 룰을 모두 허용에서 다시 기본값인 모두 거부 상태로 변경 후 룰을 세팅하고 싶다면 위 명령어로 되돌릴 수 있습니다.

UFW 방화벽 설정

포트 기준

ufw allow <port>/<optional: protocol>
# ufw allow 22
# ufw allow 22/tcp
# ufw allow 53/udp

22번 포트에 대한 접근을 허용하고 싶은 경우 위와 같은 문법으로 설정합니다. 만일 tcp와 udp 프로토콜을 나눠 설정하고 싶다면 2-3번째 줄과 같이 뒤에 프로코톨까지 입력하면 되겠습니다.

# ufw allow 1000:2000
# ufw allow 1000:2000/tcp

포트 대역을 지정하고 싶다면 위와 같은 요령으로 설정합니다.

ufw deny <port>/<optional: protocol>

반대로 거부를 하고 싶은 경우 deny를 이용해 같은 요령으로 설정합니다.

IP 기준

ufw allow from <ip address> to <protocol> port <port number> proto <protocol name>
# ufw allow from 192.168.0.44

192.168.0.44에서 접근을 허용하겠다는 설정이며 해당 IP에 대한 모든 포트 접근이 개방됩니다.

# ufw allow from 192.168.0.33 to any port 80 proto tcp

해당 IP 접근에 대한 포트 및 프로토콜을 좀더 상세하게 지정하고 싶다면 위와 같은 요령으로 설정합니다.

# ufw deny from 192.168.0.33 to any port 80 proto tcp

만일 IP를 접근 거부하고 싶다면 위와 같이 설정합니다.

ufw allow to <ip address> from <protocol> port <port number> proto <protocol name>
# ufw deny to 192.168.0.33 from any port 53 proto udp

접근(incoming)이 아닌 나가는(outgoing) 데이터에 대한 룰을 설정하고 싶은 경우에는 들어올때와 반대로 위와 같은 문법으로 설정합니다.

서비스 기준

# cat /etc/services

서비스나 프로토콜의 이름을 기준으로 설정하기 위해서 위 명령어를 통해 이름을 확인합니다.

ufw allow <service name>
# ufw allow ssh

위와 같은 요령으로 서비스에 대한 방화벽 설정을 할 수 있습니다.

방화벽 순서 확인

# ufw status numbered

UFW를 포함한 모든 방화벽은 순차적으로 처리되기 때문에 설정된 순서가 중요합니다. 위 명령어로 방화벽이 설정된 순서를 확인할 수 있으며 방화벽을 추가할 때 원하는 순서에 추가할 수 있습니다.

# ufw insert 1 allow 22/tcp

위처럼 첫번째 룰로 추가할 수 있으며 기존의 첫번째 룰은 두번째로 밀려나게 됩니다.

룰 삭제

# ufw delete allow 22/tcp

추가했던 문법 앞에 delete 를 붙여넣어 룰을 삭제할 수 있습니다.

# ufw delete 1

좀더 쉽게 방화벽 룰을 삭제하기 위해서 앞서 확인했던 방화벽 순서를 활용해 위와 같이 삭제할 수 있습니다.

설정 저장 파일

사용자가 설정한 UFW 룰은 /etc/ufw/user.rules(ipv4)와 /etc/ufw/user6.rules(ipv6)에 저장됩니다.

ICMP(ping) 거부 설정

기본적으로 UFW는 핑에 대한 응답이 허용(Allow) 설정이 되어 있으며 원천적인 DDoS 공격으로 이용되는 만큼 응답하지 않게 거부 설정을 하는 것이 좋습니다.

# ok icmp codes for INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

/etc/ufw/before.rules 파일을 에디터로 열어 위 구문 앞에 #을 붙여 주석처리합니다.

Leave a Comment