[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