[Ubuntu] UFW 방화벽 사용하기

[Ubunto] UFW 방화벽 사용하기

설치

$ sudo apt-get install ufw

기본 정책 설정 (들어오는 패킷은 차단, 나가는 패킷은 허용)

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

ssh, http, https 허용 (ssh 포트를 변경해서 사용한다면 반드시 직접 포트를 입력하자)

$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https

포트를 변경해 사용하거나 특정 포트를 허용

$ sudo ufw allow 8080

방화벽 ON!

$ sudo ufw enable

위의 명령을 실행하면 “현재 ssh 연결에 문제가 생길 수 있습니다. 적용하시겠습니까?” 뭐 이런 질문이 나온다. ssh 포트는 허용으로 변경했으니 “y” 를 입력해 진행할 수 있다.

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)               ALLOW IN    Anywhere (v6)

확인

ufw 가 실행되고 있지 않다면 아래와 같은 결과가 리턴된다.

$ sudo ufw status verbose
Status: inactive

방화벽을 끌 때는 아래와 같은 명령어를 입력한다

$ sudo ufw disable

등록된 규칙을 삭제할 때는 2가지 방법이 있다.
첫번째는 등록 시 사용한 규칙을 그대로 입력하는 방법

$ sudo ufw delete allow ssh
$ sudo ufw delete allow 8080

두번째는 각 규칙의 번호를 확인하고 번호로 지우는 방법

$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
[ 4] 22 (v6)                    ALLOW IN    Anywhere (v6)
[ 5] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 443/tcp (v6)               ALLOW IN    Anywhere (v6)

등록된 규칙의 번호는 줄 맨앞에 있는 [숫자]

2번 규칙 80/tcp 를 지우려면

$ sudo ufw delete 2

새로운 규칙의 추가는 동일한 방식으로 가능하다

$ sudo ufw allow 21

포트 뒤에 tcp 나 udp 를 지정할 수 있고 지정하지 않는다면 모두 적용된다

$ sudo ufw allow 21/tcp

새로운 설정을 적용하려면 disable > enable 해도 좋고 아래와 같이 reload 가 가능하다

$ sudo ufw reload

특정 IP만 허용할 경우

$ sudo ufw allow from 192.168.0.101

특정 IP만 거부할 경우

$ sudo ufw deny from 192.168.0.101

특정 IP에게 특정 포트만 허용할 경우

$ sudo ufw allow from 192.168.0.101 to any port 8080

특정 IP에게 특정 포트만  거부할 경우

$ sudo ufw deny from 192.168.0.101 to any port 8080

포트의 범위를 규칙으로 사용할 경우

$ sudo ufw allow 9200:9300/tcp

특정 아이피에만 일정 범위의 포트를 tcp 패킷만 허용할 경우

$ sudo ufw allow from 192.168.0.101 to any port 9200:9300 proto tcp

서브넷을 특정 포트에 허용할 경우

$ sudo ufw allow from 192.168.0.0/24 to any port 8080

서브넷을 기반으로 거부 할경우

$ sudo ufw deny from 192.168.0.0/23