^(코딩캣)^ = @"코딩"하는 고양이;

Debian / Ubuntu에서 방화벽 설정 방법

Operating System/Unix × Debian
2020. 9. 15. 10:15

Debian 계열의 방화벽 다루는 방법

본 명령어는 ubuntu에도 유효하다.

방화벽 서비스 자체의 켜기/끄기 및 기본 조작 방법


방화벽이 켜져 있는지 꺼져 있는지 확인하는 방법은...

$ sudo ufw status

방화벽을 켜는 방법은...

$ sudo ufw enable

방화벽을 끄는 방법은...

$ sudo ufw disable

설정 파일인 /etc/default/ufw을 다시 로드하여 방화벽을 적용하는 방법은...

$ sudo ufw reload

방화벽 설정을 초기 설정으로 되돌리는 방법은...

$ sudo ufw reset

방화벽의 기본 설정 사항을 확인하는 방법은...

$ sudo ufw show raw

 

기본 설정 허용/차단


기본 설정을 "차단" 상태로 만들려면...

$ sudo ufw default deny

밖으로 나가는 패킷에 대해 기본적으로 "차단" 상태로 만들려면...

$ sudo ufw default deny outgoing

밖에서 들어오는 패킷에 대해 기본적으로 "차단" 상태로 만들려면...

$ sudo ufw default deny incoming

기본 설정으로 "허용" 상태로 만들려면...

$ sudo ufw default allow

밖으로 나가는 패킷에 대해 기본적으로 "허용" 상태로 만들려면...

$ sudo ufw default allow outgoing

밖에서 들어오는 패킷에 대해 기본적으로 "허용" 상태로 만들려면...

$ sudo ufw default allow incoming

 

특정 포트의 개방/차단


포트를 여는 방법은...

$ sudo ufw allow <TODO: 포트번호>

특정 프로토콜에 의한 통신에 대해 포트를 여는 방법은...

$ sudo ufw allow <TODO: 포트번호>/<TODO: 프로토콜>

예를 들어 65535번 포트를 TCP 프로토콜로 접속하는 것을 허용하고자 할 때...

$ sudo ufw allow 65535/tcp

 

광범위하게 포트를 여는 방법은...

$ sudo ufw allow <TODO: 시작포트번호>:<TODO: 최종포트번호>

특정 프로토콜에 의한 통신에 대해 광범위하게 포트를 여는 방법은...

$ sudo ufw allow <TODO: 시작포트번호>:<TODO: 최종포트번호>/<TODO: 프로토콜>

예를 들어 60000 ~ 65535번의 포트를 모두 개방하고자 할 때...

$ sudo ufw allow 60000:65535/tcp

 

포트를 닫는 방법은...

$ sudo ufw deny <TODO: 포트번호>

특정 프로토콜에 의한 통신에 대해 포트를 닫는 방법은...

$ sudo ufw deny <TODO: 포트번호>/<TODO: 프로토콜>

예를 들어 65535번 포트를 UDP 프로토콜로 접속하는 것을 차단하고자 할 때...

$ sudo ufw deny 65535/udp

 

광범위하게 포트를 닫는 방법은...

$ sudo ufw deny <TODO: 시작포트번호>:<TODO: 최종포트번호>

특정 프로토콜에 의한 통신에 대해 광범위하게 포트를 닫는 방법은...

$ sudo ufw deny <TODO: 시작포트번호>:<TODO: 최종포트번호>/<TODO: 프로토콜>

예를 들어 60000 ~ 65535번의 포트를 모두 차단하고자 할 때...

$ sudo ufw deny 60000:65535/tcp

 

특정 아이피의 허용/거부


특정 아이피의 접속을 허용하는 방법은...

$ sudo ufw allow from <TODO: 아이피주소>

특정 아이피의 접속을 차단하는 방법은...

$ sudo ufw deny from <TODO: 아이피주소>

 

넓은 범위의 아이피 주소를 차단하는 방법은 다음과 같다.

$ sudo ufw deny from <TODO: 시작아이피주소>/<TODO: 마스크비트수>

예를 들어 192.168.211.0부터 192.168.211.1까지 2개의 아이피를 지정하고자 할 때...

  • 192.168.211.0 = 11000000 10101000 11010011 00000000
  • 192.168.211.1 = 11000000 10101000 11010011 00000001

이므로 이 범위를 추출할 수 있는 마스크는 11111111 11111111 11111111 11111110으로서 1이 31개 있다.

따라서 해당 범위를 식별할 수 있는 아이피 주소 패턴은 192.168.211.0/31이다. 즉 시작아이피주소/마스크비트수이다.

좀 더 살펴본다. 192.168.211.0부터 192.168.211.128까지 129개의 아이피를 지정하고자 할 때...

  • 192.168.211.0 = 11000000 10101000 11010011 00000000
  • 192.168.211.128 = 11000000 10101000 11010011 10000000
  • Mask = 11111111 11111111 11111111 00000000 (1이 24개)

이므로 아이피 주소 패턴은 192.168.211.0/24이다.

이 규칙을 적용하여 192.168.0.0부터 192.168.0.15까지 총 15개의 아이피 주소를 차단하고자 하면...

  • 192.168.0.0 = 11000000 10101000 11010011 00000000
  • 192.168.0.15 = 11000000 10101000 11010011 00001111
  • Mask = 11111111 11111111 11111111 11110000 (1이 28개)
$ sudo ufw deny from 192.168.0.0/28

반대로 허용하고자 할 때는...

$ sudo ufw allow from 192.168.0.0/28

 

아이피, 포트, 프로토콜 동시 지정


접속할 수 있는(또는 접속할 수 없는) 아이피, 포트, 프로토콜을 동시에 지정하는 방법은...

$ sudo ufw allow from <TODO: 아이피주소> port <TODO: 포트번호> proto <TODO: 프로토콜>
$ sudo ufw deny from <TODO: 아이피주소> port <TODO: 포트번호> proto <TODO: 프로토콜>

 

서비스의 허용/거부


특정 서비스를 허용할 때는...

$ sudo ufw allow <TODO: 서비스이름>

특정 서비스를 거부할 때는...

$ sudo ufw deny <TODO: 서비스이름>

사용 가능한 서비스 목록은 /etc/services 파일에 있다. vi, cat, less 등으로 확인할 수 있다. 이 파일을 참고하여 예를 들어 ftp서비스를 거부하고자 할 때는...

$ sudo ufw deny ftp

반대로 허용 할 때는...

$ sudo ufw allow ftp

 

로그 활성화/비활성화


로그를 남기기 위해서는...

$ sudo ufw logging on

로그를 끄기 위해서는...

$ sudo ufw logging off