우분투 UFW 방화벽 설정 방법

리눅스

우분투의 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 파일을 에디터로 열어 위 구문 앞에 #을 붙여 주석처리합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
유효한 이메일 주소를 입력해주세요.

Linux 크론탭 Crontab 사용법
Linux 크론탭(Crontab) 사용법
크론탭(Crontab)은 리눅스에서 정해진 시간에 스크립트나 데몬 등을 실행하는 스케줄러(Scheduler) 기능입니다. 특정 시간, 요일에 특정한 작업을 실행해야 하거나 반복 작업을 할…
우분투 컴퓨터 이름 Hostname 변경하는 방법
우분투 컴퓨터 이름 hostname 변경하는 방법
우분투에서 터미널을 열거나 네트워크 공유를 사용해야할 때 표시되는 컴퓨터 이름은 hostname이라고 불리며 hostname을 변경하면 우분투에 표시되는 컴퓨터 이름을 지정할 수…