우분투 방화벽 설정

우분투 방화벽 설정


우분투에서는 기본적으로 방화벽이 ufw 이다.
이는 iptables를 좀 더 쉽게 설정할 수 있도록 한 것인데 간단한 방화벽 구성에는 문제가 없지만 수준높은 방화벽구성에는 iptables 룰을 직접 사용해야 한다.
참고 : 우분투 UFW help 가이드
ufw 는 기본설정법에 대하여 알아보자
ufw는 기본 비활성화 상태이기에 이를 활성화 한다.

1
$ sudo ufw enable

ufw 비활성화

1
2
$ sudo ufw disable
$ sudo ufw status verbose

ufw에 설정되어 있는 기본 룰은 아래와 같다.
들어오는 패킷에 대해서는 전부 거부(deny)
나가는 패킷에 대해서는 전부 허가(allow)

  • 기본 룰 확인

    1
    $ sudo ufw show raw
  • 기본 룰 변경

    1
    $ sudo ufw default deny

( 기본 정책 차단 )

1
$ sudo ufw default allow

( 기본 정책 허용 )

  • ufw 허용
    1
    2
    $ sudo ufw allow<port>/<optional: protocal>예) ssh 포트 22번 허용
    $ sudo ufw allow 22

( tcp/udp 22번 포트를 모두 허용 )

1
$ sudo ufw allow 22/tcp

( tcp 22번 포트만을 허용 - ssh는 tcp 22번 포트만 허용하는게 정답 )

1
$ sudo ufw allow 22/udp

( udp 22번 포트만을 허용 )

  • ufw 거부
    1
    2
    $ sudo ufw deny<port>/<optional: protocol>예) ssh 포트 22번 거부
    $ sudo ufw deny 22

( tcp/udp 22번 포트를 모두 거부 )

1
$ sudo ufw deny 22/tcp

( tcp 22번 포트만을 거부 )

1
$ sudo ufw deny 22/udp

( udp 22번 포트만을 거부 )

ufw deny 22/tcp 설정이 되어있다고 가정

1
$ sudo ufw delete deny 22/tcp

/etc/services 에 지정되어 있는 서비스명과 포트를 이용해 ufw를 설정할 수 있다.

  • 서비스명 보기

    1
    $ less /etc/services
  • 서비스명으로 허용

    1
    2
    3
    4
    5
    $ sudo ufw allow<service name>예) ssh 서비스
    $ sudo ufw allow ssh
    $ sudo ufw deny ssh
    $ sudo ufw logging on
    $ sudo ufw logging off

문법을 확장하여 목적지 주소와 포트, 프로토콜등을 지정할 수 있다.
특정한 IP주소 허용

1
2
$ sudo ufw allow from<ip address>예) 192.168.0.100 주소 허용
$ sudo ufw allow from 192.168.0.100

( IP 주소192.168.0.100 에서만 접속이 가능해진다. )

1
$ sudo ufw allow from 192.168.0.0/24

( 네트워크 단위로 지정하여 같은 네트워크 상에 있는 컴퓨터들은 접속가능해진다. )

특정 IP 주소와 일치하는 포트 허용

1
2
$ sudo ufw allow from<ip address>to<protocol>port<port number>예) 192.168.0.100 주소와 포트, 프로토콜 허용
$ sudo ufw allow from 192.168.0.100 to any port 22

( 192.168.0.100 IP주소의 포트 22번 any - 모든 프로토콜 허용 )

특정 IP 주소와 프로토콜, 포트 허용

1
2
$ sudo ufw allow from<ip address>to<protocol>port<port number>proto<protocol name>예) 192.168.0.100 주소와 tcp 프로토콜 22번 포트 허용
$ sudo ufw allow from 192.168.0.100 to any port 22 proto tcp

위의 예제들에서 allow 대신 deny를 입력하면 거부가 된다.
ufw 기본설정은 ping 요청을 허용하도록 되어있다.

1
2
3
4
5
6
7
$ sudo vi /etc/ufw/before.rules
# ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

위 코드들의 ACCEPT 부분을 모두 DROP으로 변경하거나 삭제하면 ping 요청을 거부하게 된다.
ufw 룰들에 숫자를 붙여서 볼 수 있다. 이를 이용해 룰에 수정이나 삭제, 추가를 할 수 있다.

1
2
3
$ sudo ufw status numbered
$ sudo ufw delete 1
$ sudo ufw insert 1 allow from<ip address>

Share