[Born2beRoot] 방화벽 (Firewall)과 UFW (Uncomplicated Firewall)

bolee·2022년 4월 1일
0

42seoul

목록 보기
7/27

방화벽 (Firewall)

방화벽(Firewall)은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템*이다.
일반적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크(예: 인터넷) 간의 장벽을 구성한다.
외부로 부터 내부망을 보호하기 위한 네트워크 구성요소의 하나로 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치이다.

방화벽은 아래 도입의 필요성에 의해 도입되었다.

  • 네트워크를 필터링하여 서브넷상에 있는 호스트의 위험감소
  • 외부의 불법 침입이나 불법 정보 유입 차단
  • 네트워크 엑세스 제어정책 구현을 제공하여 사용자의 서비스 엑세스 제어

방화벽 주요 기능

  1. 접근제어
    • 외부에서 내부 네트워크에 접속하는 팻킷 필터링 이용 통제
  2. 사용자 인증
    • 트래픽에 대한 사용자의 신분을 증명
  3. 감사 및 로그
    • 트래픽에 대한 접속 정보 기록, 네트워크 사용에 대한 통계 제공
  4. Proxy 기능
    • Client 요청을 받아 보안 정책에 따라 서비스를 수행하는 서버 서비스 요청을 전달하고 실행 결과를 수신하여 사용자에게 전달
  5. 주소 변환 (NAT)
    • 발신자 호스트의 IP 주소나 목적지 호스트의 IP 주소를 전송단계에서 변경하여 전달

방화벽의 한계 및 대응 방안

한계

  1. 백도어
    • Convert Channel을 통한 백도어 생성 및 침입 방어 문제
  2. 바이러스 검사 한계
    • 패킷 내용 검사 불가로 e-mail 등 바이러스 대처 불가
  3. 내부 사용자 침해에 무방비
  4. 다이얼 모뎀 방어 불가

대응 방안

  1. TCP Wrapper 설치
    • Host 별 접근 제어
  2. 보안 감시/점검 리스트 활용
  3. 주기적 백업과 최신 Patch 적용
  4. IDS, IPS 기술과 접목 등 개선된 침입 방어 기술 적용

방화벽 적용 시 고려사항

  • 시스템 환경에 적합한 방화벽 구성, 확장성, 신뢰성, 가용성을 고려한 도입
  • 최근 해킹 방식의 지능화, 복잡화에 대응하기 위해 다기능, 지능화 방화벽 도입 고려
  • 성능 저하를 막기 위한 캐시 개념을 적용한 Stateful Inspection(상태기반 검사, 동적 패킷 필터링) 알고리즘 활용

UFW (Uncomplicated Firewall)

UFW(Uncomplicated Firewall)은 데비안 계열 및 다양한 리눅스 환경에서 작동되어 사용하기 쉽게 설계된 넷필터 방화벽을 관리하는 프로그램이다.

UFW 사용법

UFW 설치

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install ufw

UFW 활성화 / 비활성화

UFW는 설치 후 기본적으로 비활성화 상태이다. 따라서 이를 활성화 시켜줘야 한다.

UFW 활성화

$ sudo ufw enable

UFW 비활성화

$ sudo ufw disable

UFW 상태 확인

$ sudo ufw status verbose

UFW 기본 룰 확인 및 차단, 허용

UFW에서 기본적으로 설정할 수 있는 룰은 다음과 같다.

  • deny: 들어오는 패킷에 대해 전부 거부 (접속 불가능)
  • allow: 나가는 패킷에 대해 전후 허가 (접속 가능)

기본 룰 확인

$ sudo ufw show raw

기본 룰 차단 (deny)

$ sudo ufw default deny

기본 룰 허용 (allow)

$ sudo ufw default allow

UFW 허용 및 차단 설정

어떤 포트를 열어주고 어떤 IP를 차단하고 허용할지 설정해는 주는 과정이다.
만약 SSH의 기본 포트인 22번을 예시로 든다면,

SSH 포트(tcp/udp 모두)를 모든 사용자가 접속할 수 있도록 허용

$ sudo ufw allow 22

SSH 포트(tcp/udp 모두)를 아무도 접근할 수 없도록 설정

$ sudo ufw deny 22

SSH 포트를 IP 주소 123.456.789.0 사용자만 접속할 수 있도록 허용

$ sudo ufw allow from 123.456.789.0 to any port 22

만약 기본 정책이 allow라면 다른 IP에서는 22 포트에 접속이 가능하지만, 123.456.789.0 사용자는 22 포트에 접속 불가능

$ sudo ufw deny from 123.456.789.0 to any port 22

$ sudo ufw deny 22/tcp가 설정이 되어있다고 가정하였을 때, UFW 룰 삭제

$ sudo ufw delete deny 22/tcp

특정 IP 설정

특정 IP의 모든 포트 접근 자체를 거부할 수도 수락할 수도 있다.

특정 IP (1개)에 대해 모든 포트 허용

$ sudo ufw allow from 123.456.789.0

특정 IP 대역 ex) 123.456.789.0 ~ 123.456.789.255 까지 모두 다 포트 접근 허용

$ sudo ufw allow from 123.456.789.0/24

특정 프로토콜 설정

123.456.789.0dml 22번 포트 중 tcp 기능만 허용

$ sudo ufw allow from 123.456.789.0 to any port 22 proto tcp

service 명을 이용한 설정

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

서비스 명 보기

$ less /etc/services

서비스 명으로 허용

$ sudo ufw allow <service name>

ex) SSH 서비스 허용, 차단
$ sudo ufw allow ssh
$ sudo ufw deny ssh

UFW 로그 기록

$ sudo ufw logging on
$ sudo ufw logging off

UFW numbered rules

UFW 룰들에 숫자를 붙여 볼 수 도 있다. 이를 이용해 룰에 수정이나 삭제, 추가도 가능하다.

UFW number 보기

$ sudo ufw status numbered

UFW numbered 수정

$ sudo ufw delete 1
$ sudo ufw insert 1 allow from 123.456.789.0

참고
https://ko.wikipedia.org/wiki/%EB%B0%A9%ED%99%94%EB%B2%BD_(%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9)
https://m.blog.naver.com/scw0531/221479042618
https://help.ubuntu.com/community/UFW

0개의 댓글