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 : 실행중인 방화벽의 재시작