uncomplicated firewall의 약자다(?)
명령어 기반으로 Arch Linux / Debian / Ubuntu에서 방화벽을 관리하는데 사용되는 명령어이다.
이름에서 보면 알겠지만 방화벽을 최대한 간단하게 구성할 수 있도록 하기 위해 만들어졌으며, iptables
이라는 방화벽 도구의 프런트엔드 역할을 한다.
모든 관련 명령어는 root 권한이 있어야만 실행이 가능하다.
ufw [--dry-run] [options] [rule syntax]
먼저 --dry-run
이란, 현재 command가 실제로 방화벽 구성을 바꾸는 대신, 방화벽 구성을 바꿨을 때 최종적으로 나오는 방화벽을 출력하도록 하고 싶을 때 사용한다. 원하는 결과가 나오는지 확인하는데 사용될 수 있다.
rule syntax는 simple과 full, 이렇게 2가지가 나뉘는데
enable
, 실행을 멈출거면 disable
을 쓰자.$ sudo ufw enable
$ sudo ufw disable
22
port에서 온 traffic을 허용하고 싶으면 밑과 같이 하면 된다.$ sudo ufw allow 22
$ sudo ufw deny 22
$ sudo ufw allow 22/tcp
$ sudo ufw deny 22/tcp
/etc/services
에 있는 정보를 기반으로 service 이름만 넣어도 알아서 처리가 가능하다.sudo ufw allow ssh/tcp
$ sudo ufw deny from 1.2.3.4
$ sudo ufw deny from 203.0.113.0/24
$ sudo ufw deny in on eth0 from 1.2.3.4
$ sudo ufw allow from 1.2.3.4
$ sudo ufw allow in on eth0 from 1.2.3.4
delete
를 사용한다. 규칙 자체를 명시하면 된다.$ sudo ufw delete allow from 1.2.3.4
from
은 어디서 왔는지에 대한 조건이다. 그리고 어디가 destination인지에 대한 조건으로 to
도 있다. 그래서 이를 조합해 다음과 같은 복잡한 rule도 설정이 가능하다. 1.2.3.4의 port 22에서 와가지고 1.1.1.1의 port 22에 하려는 연결에 대해서는 거부하라는 rule이다. $sudo ufw deny from 1.2.3.4 port 22 to 1.1.1.1 port 22
status
를 쓰면 된다. 동작하지 않으면 inactive라고 나온다.$ sudo ufw status
status
를 사용하면 현재 적용중인 Rule이 무엇인지 간단하게 나온다. To Action From
-- ------ ----
Anywhere on eth0 ALLOW 192.168.0.0/16
10.0.0.0/8 ALLOW OUT Anywhere on eth1
10.0.0.0/8 on eth1 ALLOW FWD 192.168.0.0/16 on eth0
delete
를 활용하는 법을 배웠는데, 규칙을 다 쓰기 귀찮은 경우가 분명 있을 것이다. numbered
라는 option을 사용하면 규칙의 번호를 확인하는게 가능하다.$ sudo ufw status numbered
Output
Status: active
To Action From
-- ------ ----
[ 1] Anywhere DENY IN 1.2.3.4
[ 2] Anywhere on eth0 ALLOW IN 1.2.3.5
delete
까지 활용해서 제거하는 것이 가능하다. 이 때 해당 번호에 실제로 대응되는 rule이 나오면서 그걸 지우고 싶은게 맞냐고 물어보기까지 하니 안심하도록 하자.$ sudo ufw delete 1
show
를 사용하면 된다. 이 때 무엇에 대해 show
를 할지 정하는 parameter인 REPORTS
를 사용해야 한다. 대표적으로 added
이라고, ufw
를 통해 추가한 rule들을 표기하는 것이 있다.$ sudo ufw show added
Added user rules (see 'ufw status' for running firewall):
ufw allow 22
$ sudo ufw app list
OpenSSH
라는 application이 있다면, 여기서의 연결을 허용하는 것을 설정하고 싶다면 밑에처럼 하자.$ sudo ufw allow "OpenSSH"
reject
: deny
랑 같지만, 송신자에게 거부되었음을 알린다.
limit
: 기본적으로는 허용하나, 동일 주소에서 30초 이내에 6개의 별도 연결 시도를 할 경우 deny
를 한다.
reset
: 방화벽 초기화
reload
: 실행중인 방화벽의 재시작