우분투의 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 22 # ufw allow 22/tcp # ufw allow 53/udp
22번 포트에 대한 접근을 허용하고 싶은 경우 위와 같은 문법으로 설정합니다. 만일 tcp와 udp 프로토콜을 나눠 설정하고 싶다면 2-3번째 줄과 같이 뒤에 프로코톨까지 입력하면 되겠습니다.
# ufw allow 1000:2000 # ufw allow 1000:2000/tcp
포트 대역을 지정하고 싶다면 위와 같은 요령으로 설정합니다.
반대로 거부를 하고 싶은 경우 deny를 이용해 같은 요령으로 설정합니다.
IP 기준
# 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 deny to 192.168.0.33 from any port 53 proto udp
접근(incoming)이 아닌 나가는(outgoing) 데이터에 대한 룰을 설정하고 싶은 경우에는 들어올때와 반대로 위와 같은 문법으로 설정합니다.
서비스 기준
# cat /etc/services
서비스나 프로토콜의 이름을 기준으로 설정하기 위해서 위 명령어를 통해 이름을 확인합니다.
# 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
파일을 에디터로 열어 위 구문 앞에 #을 붙여 주석처리합니다.