ufw (방화벽)
imRAD system은 방화벽 기능으로 "ufw"[1]를 사용합니다. ufw는 호스트 기반 방화벽에 적합하며 iptable을 사용합니다. 관리자는 특정 네트워크 트래픽(예, SSH or web server traffic)에 대한 흐름을 허용하거나 차단 할 수 있습니다.
configuration mode에서 ufw enable
또는 ufw disable
명령어를 사용해 ufw를 사용 혹은 중지 시킬 수 있습니다.
ufw의 초기상태는 미사용(disable) 상태이며 필요시 사용 상태로 변경하세요.
본 문서는 기본 적인 syntax와 예시를 설명하며 자세한 사용법은 https://help.ubuntu.com/community/UFW 또는 http://manpages.ubuntu.com/manpages/bionic/man8/ufw.8.html 페이지를 참고하세요.
ufw 확인
urw가 미사용 상태일때 아래 예시와 같이 표시됩니다.
LYSH@MyHostName# show ufw Status: inactive // ufw is in disable
아래 예시는 몇몇 규칙과 함께 ufw가 사용 상태일때의 일반적은 설정 형태입니다. 기본(default) incoming 규칙은 deny 인데 이는 허용된 규칙을 제외한 모든 트래픽은 차단됨을 의미합니다.
LYSH@MyHostName# show ufw Status: active // ufw is in enable Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- [ 1] 22 ALLOW IN 192.168.0.10 [ 2] 22 ALLOW IN 192.168.0.11 [ 3] 22 ALLOW IN 192.168.0.12 ...
show ufw added
명령어를 사용하면 등록된 규칙을 모두 출력합니다.(미사용 상태에서도 표시합니다.)
LYSH@MyHostName# show ufw added ufw allow from 192.168.0.10 to any port 22 ufw allow from 192.168.0.11 to any port 22 ufw allow from 192.168.0.12 to any port 22
사용(enable) / 미사용(Disable)
configuration mode에서 ufw를 사용 혹은 미사용 상태로 전환할 수 있습니다.
기본 incoming 규칙을 "allow"로 변경 후 ufw를 "사용(enable)" 상태로 변경하세요. 그렇지 않으면 현재 연결이 끊기고 및 일부 서비스의 통신이 차단 될 수 있습니다.
LYSH@MyHostName# configure
LYSH@MyHostName(config)# ufw default allow
LYSH@MyHostName(config)# ufw enable
LYSH@MyHostName(config)# exit
LYSH@MyHostName# show ufw
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), disabled (routed)
New profiles: skip
미사용으로 변경하려면 ufw disable
명령을 실행하세요.
LYSH@MyHostName# configure LYSH@MyHostName(config)# ufw disable LYSH@MyHostName(config)# exit
기본 incoming 규칙을 "deny"로 설정하고 "allow" 규칙을 추가하는게 낫습니다. 만일 기본 규칙을 "allow"로 하면 수많은 "deny" 규칙을 추가해야 니다. 따라서 모든 "allow" 규칙을 추가 후 기본 incoming 규칙을 "deny"로 변경하세요.
ufw 사용 요약
mode | 명령 | 설명 |
---|---|---|
configuration | ufw default allow |
기본 incoming 규칙을 "allow"으로 변경 |
configuration | ufw enable |
ufw를 사용 상태로 변경 |
user | show ufw |
ufw 상태 확인 |
configuration | ufw allow {syntax} |
"allow" 규칙 추가. 아래 언급된 "필수 허용 규칙"은 모두 추가하세요. |
user | show ufw added |
ufw 상태 및 추가된 규칙 확인 |
configuration | ufw default deny |
기본 incoming 규칙을 "deny"로 변경 |
user | show ufw added |
ufw 상태 및 추가된 규칙 확인 |
규칙(rules)
configuration mode에서 규칙을 설정 할 수 있습니다.
Basic syntax
새로운 규칙은 "add"와 insert 명령어를 통해 추가 할 수 있는데 "add" 명령어를 사용하면 새로운 규칙이 기존 규칙 맨뒤에 추가되며 "insert" 명령어를 사용하면 새로운 규칙을 특정 규칙 이전에 추가할 수 있습니다.
먼저 일치되는 규칙이 먼저 적용되기 때문에 규칙의 순서는 매우 중요합니다. 따라서 규칙을 추가할때 일반적인 규칙보다 상세한 규칙을 먼저 선언하세요. 만일 이미 규칙이 포함되었다면 "insert" 명령어로 앞 순서에 규칙을 추가할 수 있습니다.[2].
규칙을 삭제하려면 ufw delete
명령어를 사용하세요.
하나의 규칙은 "allow", "deny", 또는 "reject" 중 하나로 설정될 수 있습니다. "deny" 규칙은 수신되는 패킷을 버린다는 의미이며 "reject" 규칙은 송신자에 오류 패킷을 전송한다는 의미입니다. [3]
LYSH@MyHostName# configure LYSH@MyHostName(config)# ufw allow 22 // To allow incoming tcp and udp packet on port 22. LYSH@MyHostName(config)# ufw allow 23/tcp // To allow incoming tcp packet on port 23. LYSH@MyHostName(config)# ufw deny 24/udp // To deny incoming udp packet on port 24. LYSH@MyHostName(config)# ufw allow ssh // To allow ssh by name. LYSH@MyHostName(config)# ufw allow from 192.168.0.1 // To allow packets from 192.168.0.1. LYSH@MyHostName(config)# ufw deny from 192.168.0.1/24 // To deny packets from 192.168.0.1/24.
192.168.0.4에서 포트 22에 대한 액세스를 허용
LYSH@MyHostName(config)# ufw allow from 192.168.0.4 to any port 22
TCP를 사용하여 192.168.0.4에서 포트 22에 대한 액세스를 허용
LYSH@MyHostName(config)# ufw allow from 192.168.0.4 to any port 22 proto tcp
TCP를 사용하여 192.168.0.x/24 서브넷에 포함된 모든 호스트의 포트 22에 대한 액세스를 허용
LYSH@MyHostName(config)# ufw allow from 192.168.0.4/24 to any port 22 proto tcp
규칙 추가
"add" 명령어를 사용해 "allow" 규칙을 추가하려면 ufw allow {syntax}
명령어를 사용하세요. 만일 기존 규칙 이전에 새로운 "allow" 규칙을 추가하려면 ufw insert {number} allow {syntax}
명령어를 이요하세요.
LYSH@MyHostName# configure LYSH@MyHostName(config)# ufw allow from 192.168.0.10 to any port 22 LYSH@MyHostName(config)# ufw allow from 192.168.0.20 to any port 22 LYSH@MyHostName(config)# exit
"add" 명열어로 규칙을 추가하면 맨 마지막에 새로운 규칙이 추가됩니다.
LYSH@MyHostName# show ufw Status: active Logging: on (low) Default: allow (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- [ 1] 22 ALLOW IN 192.168.0.10 [ 2] 22 ALLOW IN 192.168.0.20
특정 규칙 이전에 규칙을 추가하기 위해 "insert"를 사용하려면 기존 규칙의 번호(number)를 show ufw
명령어 결과에서 확인 후 순서를 확인 후 추가헤세요. 다음은 "allow from 192.168.0.20 to any port 22" 규칙 이전에 새로운 규칙을 추가하는 예시입니다.
LYSH@MyHostName# configure
LYSH@MyHostName(config)# ufw insert 2 allow from 192.168.0.15 to any port 22
LYSH@MyHostName(config)# exit
LYSH@MyHostName# show ufw Status: active Logging: on (low) Default: allow (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- [ 1] 22 ALLOW IN 192.168.0.10 [ 2] 22 ALLOW IN 192.168.0.15 [ 3] 22 ALLOW IN 192.168.0.20 // shift down
"deny" 규칙에 일치하는 패킷이 발생되어 트래픽이 거부되면 로그가 기록되지 않습니다. 만일 그러한 로그를 기록하게 하려면 아래 예시와 같이 "log" 구문을 이용하세요.
LYSH@MyHostName# configure LYSH@MyHostName(config)# ufw deny log from 192.168.0.100 to any port 22 proto tcp LYSH@MyHostName(config)# exit
기본 incoming 규칙이 "deny"인 경우에는 "allow" 규칙에 포함되지 않은 트래픽에 대해서는 로그가 기록되나 개별 "deny" 규칙에 대해서는 "log" 구문을 사용하지 않으면 로그가 생성되지 않습니다.
다음 예시는 "ufw deny log from 192.168.0.100 to any port 22 proto tcp" 규칙을 포함시켜면 기록되는 차단 로그를 보여줍니다.
LYSH@MyHostName# show log ufw 2021-04-26 14:55:27 4 0 MyHostName kernel: [7282110.099052] [UFW BLOCK] IN=eth0 OUT=MAC=00:15:5d:03:1e:57:00:04:96:34:b5:e9:08:00 SRC=192.168.0.100 DST=192.168.0.200...
필수 허용 규칙
기본 규칙을 "deny"로 설정하고 모든 imRAD 서비스가 올바르게 동작하려면 아래 필수 규칙을 반드시 포함시켜야 합니다.
You must specify these rules to have all imRAD services work properly. You'd better copy all the following rules and then paste them.
만일 사용하지 않는 서비스가 있다면 해당 서비스와 관련된 규칙은 제외해도 됩니다. 서비스에 대한 포트 및 프로토콜은 ImRAD 사용 포트(port)를 참고하세요.
LYSH@MyHostName# show ufw added ufw allow 80/tcp ufw allow 443/tcp ufw allow 6710/tcp ufw allow 1812/udp ufw allow 1813/udp ufw allow 1813/tcp ufw allow 1812/tcp ufw allow 18123/udp ufw allow 67/udp ufw allow 68/udp ufw allow 547/tcp ufw allow 546/udp ufw allow 6010/udp
SSH 접근을위해 사용하시는 호스트의 IP 주소를 지정하세요.
LYSH@MyHostName(config)# ufw allow from {your ip address} to any port 22 proto tcp
규칙 삭제
규칙을 삭제하려면 규칙의 번호를 이용하거나 추가된 규칙 구문을 이용하면 됩니다.
LYSH@MyHostName# show ufw
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 192.168.0.10
[ 2] 22 ALLOW IN 192.168.0.15
[ 3] 22 ALLOW IN 192.168.0.20 // shift down
LYSH@MyHostName# configure
LYSH@MyHostName(config)# ufw delete 2
LYSH@MyHostName(config)# exit
LYSH@MyHostName# show ufw
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 192.168.0.10
[ 2] 22 ALLOW IN 192.168.0.20
추가될때 사용한 구문을 이용해 규칙을 삭제하려면 아래 명령어로 구문을 확인 후 삭제하면 됩니다.
LYSH@MyHostName# show ufw added ufw allow from 192.168.0.10 to any port 22 ufw allow from 192.168.0.20 to any port 22 LYSH@MyHostName# configure LYSH@MyHostName(config)# ufw delete allow from 192.168.0.20 to any port 22 LYSH@MyHostName(config)# exit LYSH@MyHostName# show ufw Status: active Logging: on (low) Default: allow (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- [ 1] 22 ALLOW IN 192.168.0.10
기본 규칙을 "deny"로 전환
필수 규칙을 포함해 모든 "allow" 규칙을 생성하였다면 기본 규칙을 "deny"로 변경 하세요. 사용하는 호스트의 IP 주소가 SSH 접속이 허용되었는지도 반드시 확인하세요.
LYSH@MyHostName# configure LYSH@MyHostName(config)# ufw default deny LYSH@MyHostName(config)# exit
LYSH@MyHostName# show ufw
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 192.168.0.10
[ 2] 22 ALLOW IN 192.168.0.20
만일 기본 규칙을 "deny"로 설정 후 SSH 연결이 차단되면 콘솔을 이용해 접근해야 합니다.
reset
reset 명령어를 실행하면 모든 규칙이 삭제됩니다. 또한, 기본 incoming 규칙이 "allow"로 바뀌며 ufw 상태도 "미사용"으로 변경됩니다.
LYSH@MyHostName# configure LYSH@MyHostName(config)# ufw reset LYSH@MyHostName(config)# exit LYSH@MyHostName# show ufw Status: inactive LYSH@MyHostName# show ufw added (None)
log
ufw에 의해 차단된 트래픽 로그는 show log ufw
를 통해 확인 할 수 있습니다.