본문 바로가기
3학년 학사/네트워크 보안

[네트워크 보안] # 13. 파이어월

by whiteTommy 2024. 12. 9.
반응형
더보기

목차

  • 파이어월
  • 실습
  • 침입탐지
  • SNORT 실습

 

예상 문제

  • 제로 트러스트와 perimeter 보안의 차이점
  • ufw status verbose 상태 주고, 접속이 되는지 안되는지 (번호 낮은거 우선 적용)
  • 침입 탐지 유형 3가지
  • 내부자 위협 대응 방안
  • HIDS 와 NIDS 차이점 (침입탐지시스템 기능)
  • IDS 의 효과적인 설치 위치

 

파이어월

  • Premises Network (자체 네트워크) 과 인터넷 사이에 배치되어 경계(perimeter) 를 형성
    • On-premise : 클라우드 이용과 반대, 자체 전산실 서버에 직접 설치해 운용
      비즈니스 요구 온프레미스 퍼블릭 클라우드
      데이터 센터 단일 테넌트(컴플라이언스용) O X
      매우 안전한 데이터 암호화 O O
      맞춤형 하드웨어, 특수 목적의 시스템 O X
      용량을 손쉽게 확장 및 축소 가능 X O
      인프라에 대규모의 정기적인 투자 필요 O X
      종량제 결제, 사용량 기반 가격 책정 X O
      완전한 데이터 가시성 및 관리 권한 O X
      내장형의 자동화된 데이터 백업 및 도구 X O
      제로에 가까운 중단 시간 위험 X O
  • Perimeter 는 Internet-based attacks 를 방어하는 a single choke point (단일 제어 지점) 역할
  • a single computer 또는 a set of two or more systems
  • 기능
    • 접근 제어
      • 방화벽의 가장 기본적이고 중요한 기능
      • 관리자가 통과시킬 접근과 거부할 접근을 명시하면 방화벽이 그에 따라 수행
      • 구현 방법에 따라 패킷 필터링 방식, 프록시 방식으로 나뉨
      • 접근 제어를 수행하는 룰셋은 방화벽을 기준으로 보호하려는 네트워크의 외부와 내부에 존재하는 시스템의 IP 주소와 포트로 구성
        번호 외부(from) 내부(to) 동작
        IP 주소 포트 IP주소 포트
        1 Externel Any 192.168.100.100 80 allow
        2 Any Any Any Any deny
      • 올바른 룰셋 적용
        1. 허용할 서비스를 확인
        2. 제공하려는 서비스가 보안상 문제가 없는지, 허용하는 것이 타당한지 검토
        3. 서비스가 이루어지는 형태를 확인하고 어떤 룰을 적용할 지 구체적으로 결정
        4. 방화벽에 실제로 룰을 적용하고 적용된 룰을 검사
    • 로깅과 감사 추적
      • 방화벽은 룰셋 설정과 변경, 관리자 접근, 네트워크 트래픽의 허용 또는 차단과 관련한 사항을 로그로 남김
      • 사고 발생 시 출입자를 확인하여 추적을 하기 위함
    • 인증
      • 메시지 인증 : VPN 과 같은 신뢰할 수 있는 통신선으로 전송되는 메시지의 신뢰성 보장
      • 사용자 인증 : 패스워드를 이용한 단순한 인증부터, OTP, 토큰 기반 인증 등 높은 수준의 인증까지 가능
      • 클라이언트 인증 : 모바일 사용자처럼 특수한 경우에 접속을 요구하는 호스트 자체가 정당한지 확인
    • 데이터 암호화
      • 한 방화벽에서 다른 방화벽으로 데이터를 암호화해서 보내는 것
      • 일반적으로 VPN 의 기능을 이용
    • 방화벽의 한계
      • 바이러스는 파일 등을 통해 감염되므로 근본적으로 방화벽이 영향을 미치기 어려움
      • 일부 웜은 막을 수 있지만, 정상적인 서비스 포트에 대해 웜이 공격을 시도할 때는 막을 수 없음
  • 정책
    • IP Address and Protocol Values
      • 출발지 및 복적지 주소, 포트 번호
      • 트래픽의 방향(flow direction) 지정
    • Application (Protocol) : 특정 프로토콜에 따라 동작하는 서비스 보호 (허용하는 프로그램)
    • User Identity : IPSec 등의 인증 메커니즘과 결합하여 사용자 id 기반 접근 : 일반 접근 제어
    • Network Activity : 트래픽 시간 분석 등 (시간 대)
  • 종류
    •  

 

Bastion Host

  • Application-level 또는 Circuit-level proxy firewall
  • 특징
    • Secure OS 에서만 동작
    • 네트워크 관리자만 이용 가능
    • 각 Proxy 는 일부 기능만 수행
    • 각 Proxy 는 일부 서버만 담당
    • Audit (감사) 를 강화, 모든 Traffic 을 로깅하는 등

 

파이어월 구성 예

  • 기업 네트워크에서 외부 트래픽, 외부에 노출된 서비스(DMZ), 민감한 내부 자원을 분리해 공격 가능성을 최소화하는 강력한 보안 모델

 

제로 트러스트

  • Perimeter 보안과 반대
  • 모든 접근에 대해 (강화된) 인증과 접근 제어 + 플랫폼 보안

 

 

파이어월 실습

FTP

  • ftp login inbound
    • $sudo apt install vsftpd
    • $sudo systemctl start vsftpd
    • $sudo systemctl enable vsftpd
      • Test
        • ftp localhost
          Connected to loalhost.
          220 (vsFTPd 3.0.3)
          Name (localhost : whitetommy):
      • 윈도우 ftp guestIP
        • ftp 192.168.33.128
          192.168.33.128 에 연결되었습니다.
          220 (vsFTPd 3.0.3)
          200 Always in UTF8 mode.
          사용자 (192.168.33.128:(none)):
  • 상태
    • $ sudo su
    • # ufw status verbose
  • 시작
    • # ufw enable
      => 윈도우에서 ftp 접속 시도 : 실패
  • 정책 조회
    • # ufw show raw
  • 허용과 차단
    • # ufw allow 21
    • # ufw status verbose
      => 21 번 허용 후 ftp 접속 다시 시도 : 성공
  • default rule : # ufw default deny
  • 규칙
    • 조회 
      • # ufw show raw | grep 21
      • 또는 #ufw status verbose
    • 번호 조회
      • # ufw status numbered+
    • 규칙의 삭제
      • ufw delete 1
    • 전체 삭제 = inactive
      • ufw reset 
      • # sudo ufw enable  //  inactive ->active 
    • 서비스 명으로 허용
      • # ufw allow ftp        // (21/tcp)
    • 상충되는 규칙 : 덮어 씀
      • ufw deny 21/tcp
    • 범위가 다른 규칙 : 번호가 낮은 규칙이 우선 적용됨
  • From, To
    • 포트 번호 범위
      • # ufw allow 21:30/tcp   // tcp port 21~30
    • 특정 IP 만 허용
      • # ufw allow from <ip address> to <protocol> port <port number>
        • # ufw allow from 192.168.56.1 to any port 21
    • Rule 을 낮은 번호로 insert
      • # ufw insert 1 allow from 192.168.56.1 to any port 21
  • App
    • App list
      • # ufw app list
      • # ufw CUPS  // list  에 포함된 app
    • App 편집 : /etc/ufw/applications.d/app이름
      • [temp]
        title = temp
        description = temp
        ports =8000/tcp
    • 반영
      • # ufw reload
      • # ufw allow temp
    • app 단위 허용
      • # ufw allow temp

 

침입 탐지

  • 위협 (침입자) : 시스템에 접근하려는 외부 또는 내부의 부적절한 사용자를 지칭
    • 유형 
      1. Masquerader : 권한이 없는 사용자가 정당한 사용자 계정을 도용하여 접근제어를 통과
      2. Misfeasor: 정당한 사용자가 권한없는 데이터나 리소스에 접근
      3. Clandestine user: 슈퍼 유저 권한 획득으로 흔적(로그)까지 파괴
  • 침입 탐지 : 이러한 위협을 발견하고 예방하려는 활동

 

침입(해킹)의 예

  • 이메일 서버의 루트 권한 획득
  • 웹 서버의 컨텐츠 바꾸기 (defacing)
  • 패스워드 Guessing 또는 cracking (체계적 시도)
  • 접근 권한을 획득해서 신용카드 번호 DB table 복제
  • 권한 없이 민감한 데이터 조회
  • 패킷스니핑을 통한 id, pw 획득
  • 고위층을 사칭하여 고위층의 pw 변경
  • 런치타임 어택 : 로그인된 남의 컴퓨터 자리 비운 사이 이용

 

해커와 CERT

  • 해커는 스릴이나 명성을 위해 해킹
  • CERTs (Computer emergency response teams) : 침해 대응 조직
    • 예방
      • 취약성 정보 수집과 배포
      • 패치 배포
    • 대응
      • 침해 사건 조사(로그 등)
      • 피해 복구 지원
      • 공격자 식별, 역추적

 

사이버 범죄 조직과 사이버 군

  • 사이버 범죄 조직
    • 조직화된 해커
    • 경제적, 정치적 이익 목적으로 활동
    • 타겟에 대한 광범위한 공격
    • 침입 외의 악성코드 배포, 웜 공격, DDoS 등
  • 사이버 군
    • 국가 간 공격 및 방어를 수행
    • 공격 대상 :  상대편 군 + 민간

 

내부자 위협

  • 탐지와 예방이 어려움
  • 때로는 복수심과 존재감 때문에 범죄
  • 내부자 위협 대응 방안
    • Least Privilege 원칙 : 각자가 자신의 일을 하는데 필요한 권한 만 부여
    • 로그 (접근 대상, 행위) 철저
    • 문서 중앙 관리 : 각자의 PC 에 저장되는 문서 없음
    • 퇴직 시 컴퓨터와 네트워크 접근 해제
    • 강한 인증
    • DLP (data loss prevention) : 내외부자의 정보유출을 차단

 

침입탐지시스템

  • 정의
    • 네트워크를 통한 공격을 탐지하기 위한 장비
    • 내부의 해킹이나 악성 코드 활동을 탐지와 같이 방화벽이 하지 못하는 일을 수행
  • 종류
    • HIDS : 호스트 기반의 침입 탐지
    • NIDS : 네트워크 기반의 침입 탐지
  • 기능
    • 데이터 수집
      • HIDS 와 NIDS 는 각각 장단점이 있어 상호보완적으로 사용함
      • HIDS
        • 운영체제에 부가적으로 설치, 운용되거나 일반 클라이언트에 설치
        • 운영체제에 설정된 사용자 계정에 따라 어떤 사용자가 어떤 접근을 시도하고 어떤 작업을 했는지 기록을 남기고 추적 
        • 네트워크에 대한 침입 탐지 불가능, 자신이 공격 대상이 될 때만 침입 탐지 가능
        • 운영체제의 취약점이 HIDS 를 손상시킬 수 있으며, 다른 침입 탐지 시스템보다 비용이 많이 듬
      • NIDS
        • 네트워크에서 하나의 독립된 시스템으로 운용
        • 감사와 로깅을 할 때, 네트워크 자원이 손실되거나 데이터가 변조되지 않음
        • 네트워크 전반에 대한 감시 가능, 영역이 상대적으로 큼
        • IP 주소를 소유하지 않아 해커의 직접적인 공격을 거의 완벽하게 방어 가능, 존재도 숨길 수 있음
        • 공격에 대한 결과를 알 수 없으며, 암호화된 내용을 검사할 수 없음
        • 스위칭 환경에서 NIDS 를 설치하려면 다른 부가 장비 필요
        • 10Gbps 이상의 고속 네트워크에서는 네트워크 카드 등의 HW 한계로 네트워크의 모든 패킷을 검사하기 어려움
    • 데이터 필터링과 축약
      • HIDS 와 NIDS 에 의해 수집된 침입 관련 데이터를 한곳에 모아 관리하면 데이터를 상호 연관시켜 좀 더 효과적으로 분석함으로써 공격에 빠르게 대응할 수 있음
      • 보안이 강화된 시스템에 데이터를 보관하여 침입으로 인한 손실을 막음
      • 보안 감사에서는 세밀하고 자세한 데이터보다 빠르고 정확하게 파악할 수 있는 데이터가 더 유용하므로 데이터의 효과적인 필터링과 축약이 필수
      • 효과적인 필터링에는 데이터 수집 규칙을 설정하는 작업 필요
      • 클리핑 레벨을 설정하여 잘못된 패스워드로 일정 횟수 이상 접속하면 로그를 남기도록 하여 조정 가능
    • 책임 추적 및 대응
      • IDS 는 기본적으로 침입을 알려주는 시스템
      • 과거 : 침입에 대한 능동적인 기능이 별로 없고, 공격을 발견하면 관리자에게 알람 등의 방법으로 알림
      • 최근 : 공격을 역추적하여 침입자의 시스템이나 네트워크를 사용하지 못하게 하는 능동적인 기능이 많이 추가
      • 침입 방지 시스템 (IPS) : 능동적인 기능을 많이 탑재한 침입탐지 시스템
  • IDS 의 효과적인 설치 위치
    • 설치 우선 순위 : 3 -> 5 -> 4 -> 2 -> 1
      • 패킷이 라우터로 들어오기 전 (1)
        • 네트워크에 실행되는 모든 공격 탐지 가능, 너무 많은 공격에 대한 데이터를 수집하여 정작 치명적인 공격에는 대처가 어려움
      • 라우터 뒤 (2)
        • 1번보다 좀더 적은 수의 공격을 탐지하며, 좀더 강력한 의지가 있는 공격자 탐지 가능
      • 방화벽 뒤 (3)
        • 내부 공격자 어느 정도 탐지 가능. 만약 IDS 를 한대만 설치할 수 있다면 이곳에 설치해야 함
        • 요즘 방화벽은 DMZ 서버 네트워크와 라우터 사이 말고, 내부 네트워크와 라우터 사이에 둠
      • 내부 네트워크 (4)
        • 내부 클라이언트에 의한 내부 네트워크 해킹을 감시할 때 설치
      • DMZ (5)
        • 외부와 내부의 공격자에 의한 데이터 손실이나 서비스 중단을 막기 위해 설치

  • Intrusion Detection
    • 다양한 유형의 침해를 탐지
    • 탐지 원리나 전제
      • 침입자의 행위 패턴이 정상 사용자의 것과 차이가 있으며, 그 차이를 계량할 수 있다.
    • 요구사항
      • 피해를 입히기 전에 최대한 빨리 탐지하여, 차단
      • 침입 시도 단계에서 차단하는 예방 기능을 하면 더 좋음
      • 침입 탐지 과정에서 데이터를 축적하여, 추후 탐지력 강화
    • 방법
      • 통계적 이상(anomaly) 탐지
        • 설명
          • 일정 기간 정상 사용자 패턴 데이터 수집
          • 공격자 데이터가 있으면 2 class 로 학습
          • 정상 사용자의 통계 : 확률 분포
          • Threshold 기반 탐지 : 평균에서 벗어난 정도
          • 사용자 별 Profile 을 만들기도 : 각 사용자 별 패턴 수집에서 그 사용자가 anomaly를 하면, 도용되었다고 판단하는 식
        • 통계적 이상 탐지에 사용될 수 있는 특징
          방법 모델 탐지되는 침입 유형
          로그인과 세션 동작
          일별 시간별 로그인 빈도 수  평균과 표준 편차 침입자는 일과시간 이후에 침입을 시도할 것이다.
          장소별 로그인 빈도 수 평균과 표준 편차 침입자는 특정 사용자가 드물게 사용하거나 사용하지 않는 장소에서 침입을 시도할 것이다.
          마지막 로그인 이후 경과시간 운용 사용 정지된 (dead) 계좌에 침입
          세션 당 소요 시간 평균과 표준 편차 유의수준의 편차가 있다면 위장이 있음을 말해줄 것이다.
          장소별 출력 양 평균과 표준 편차 과다한 양의 데이터가 원격지로 전송되면 중요 정보가 누출되는 것을 나타낸다
          세션 자원 활용 평균과 표준 편차 프로세서나 I/O 가 비 정상적 레벨이면 침입자가 있음을 말해준다
          로그인 시 패스워드 실패 운용 패스워드 추측을 통한 침입 시도
          특정 터미널에서 로그인 실패 운용 침입 시도
          명령과 프로그램 실행 동작
          실행 빈도 수 평균과 표준 편차 다른 명령을 사용하는 침입자를 탐지할 수 있다. 실제의 권한 보다 더 큰 권한을 획득하는데 성공한 합법적 사용자를 탐지할 수 있다.
          프로그램 자원 활용 평균과 표준 편차 I/O 나 프로세서 활용에 부가적 영향을 끼치는 비정상적인 값은 바이러스나 트로이 목마의 침입을 나타낸다.
          실행 거부 운용 모델 더 큰 권한을 획득하려는 개별 사용자의 침입 시도를 탐지할 수 있다.
          파일 접근 동작
          읽기, 쓰기, 생성, 삭제의 빈도 수 평균과 표준 편차 개별 사용자에 대해 비정상적 읽기와 쓰기는 위장이나 관찰이 있음을 나타낸다.
          읽기 기록, 쓰기 기록 평균과 표준 편차 추론이나 축적을 통해 중요한 데이터를 취득하려는 시도가 있음을 나타낸다.
          읽기, 쓰기, 생성, 삭제 실패 회수 운용 권한이 없는 파일에 지속적으로 접근을 시도하는 사용자를 탐지해낼 수 있다.
      • 규칙 기반 탐지
        • 설명
          • 침입 패턴을 규정하는 규칙을 구성, 진화
          • 시그니처 탐지
          • 공격의 패턴과 특징을 찾아 규칙화 rule 을 세팅해서 가동시키면, 각 이벤트나 트랜잭션은 여러 규칙들과 대조됨
        • 종류
          • 규칙 기반 이상 탐지
            • 통계적 이상 탐지와 유사.
            • 기존 감사 기록을 통해 이상 행동의 규칙을 자동 생성하여 탐지.
            • 장점: 시스템의 보안 취약성 관련 지식 필요 없음
            • 과거에 관찰된 행동 패턴과의 일치성 판단
          • 규칙 기반 침입 탐지
            • 전문가가 과거 감사기록을 분석하여 특이한 패턴을 찾고 이를 규칙화
            • 알려진 침입 기록, 보고된 취약성 등을 중심으로
  • 감사기록(Audit Records)
    • 침입 탐지에서 활용되는 패턴의 기초 자료
    • Native Audit Records
      • 운영체제 수준에서 수집되는 기본 로그 데이터를 포함
      • 추가적 수집 sw 필요 없음
      • 단점:
        • 불필요한 데이터가 포함될 수 있어 분석 효율이 떨어질 수 있음.
        • 데이터 변환 및 가공이 필요.
    • 탐지용 audit records
      • IDS 가 필요한 정보를 수집하기 위한 별도 프로그램 필요
      • Native탐지용 프로그램 2개가 돌아가는 Overhead 


기본 비율 오류 (Base-Rate Fallacy)

  • 미탐과 오탐의 비율을 평가할 때 발생하는 통계적 오류
    • 미탐 : 침입을 탐지하지 못하는 것
      • Threadhold 를 너무 크게 잡으면, 미탐율이 올라감
    • 오탐 : 정상 행위를 침입으로 판단하는 것
      • Threadhold 를 너무 작게 잡으면, 오탐율이 올라감 
        • 하루에 수만 번 경고가 울린다면?
        • 혹은 정상 사용자가 차단 된다면?

 

 

SNORT 실습

  • snort 설치
    • $ sudo apt install snort
      • target network 지정 : ip addr / 32 (4byte 주소)
  • snort 실행
    • 버전 보기
      • # snort -V
  • 환경 설정
    • /etc/snort/snort.debian.conf
      • 설치 시 설정
      • network interface
  • Test
    • 로컬 룰 설정 : /etc/snort/rules/local.rules
      • icmp 탐지
    • Virtual Machine 네트워크 모드를 host only 로 변경
      • $ snort -A console -c /etc/snort/snort.conf 실행
    • PC 에서 poing Guest IP
    • 중지 ctrl + c 
      • 안되면 ctrl+z 후, kill -9 pid

 

Snort 구조

  • 구성

  • rule id
    번호 의미
    0~99 고유 목적을 위해 예약된 sid
    100~1,000,000 Snort.org 에서 공식 배포한 Rule 의 sid
    1,000,000~ 사용자에 의해 작성된 Rule 의 sid

Snort Rule 체계

  • snort.conf 에서 local.rules include
  • # ls /etc/snort/rules
  • 중복 제거 : /etc/snort/snort.conf 에서 comment out
  • 또는, local.rules 만 실행
    • # snort -c /etc/snort/rules/local.rules 

 

Snort Rule

Rule 헤더 Rule 옵션
처리 방법 프로토콜 송신사 IP 송신자 포트 패킷 방향 수신자 IP  수신자 포트
1 2 3 4 5 6 7 8
번호 의미
1 처리방법 alert, log, pass, activate, dynamic
2 프로토콜 TCP, UDP, ICMP, IP
3 송신자 IP any, 192.168.0.10, 172.16.0.0/16 등
4 송신자 포트 any, 22,25,80, 8080 등
5 패킷 방향 -> , <>
6 수신자 IP 3과 동일
7 수신자 포트 4와 동일
8 옵션 content, msg, sid 등

 

 

Rule 변경

  • 방향 : 들어오는 request 만 탐지
  • Action 유형 
    • reject : console 에서는 A 옵션으로 alert 만 함
    • IPS (intrusion prevention system) : IDS + firewall
명령어 내용
alert 경고 발생 및 로그 기록
log 로그 기록
pass 패킷 무시
drop 패킷 차단 및 로그 기록 (IPS 기능으로 사용됨, 단 인라인 구조가 되어야 한다.)
reject 패킷 차단 및 로그 기록 (TCP-TCP RST 응답, UDP-ICMP Unreachable 응답)
sdrop 패킷 차단 및 로그 기록 없음

 

  • http request outbound
    • alert tcp 10.21.1.43/32 any -> any 80 (msg : "http request"; sid: 1000002;)
      • 브라우저 띄워보기
        • 가상 머신 네트워크 NAT 설정 후
        • 브라우저에서 http request 보내면 됨
  • ftp login inbound
    • ftp 데몬 설치
      • $ sudo apt install vsftpd
      • $ sudo systemctl start vsftpd
      • $ sudo systemctl enable vsftpd
    • 룰 설정
      • alert tcp any any -> 192.168.121.128/32 21 (msg: "FTP"; content:"root"; sid:1000003;)
    • 윈도우에서 ftp 실행
      • ftp 192.168.121.128 
      • 사용자 : root 로 해야 패킷이 감지됨
      • 또는, content 필드를 아예 주지 않음

 

스캔

  • 스캔
    • 서비스를 제공하는 서버의 작동여부와 제공하고 있는 서비스를 확인
    • TCP 기반의 프로토콜 Request, Response 메커니즘
    • 열려 있는 포트, 제공하는 서비스, 동작중인 데몬의 버전, 운영체제의 버전, 취약점 등 다양한 정보 획득 가능
    • 일반적으로 nmap 사용
      ex) Ping & ICMP Scan
  • UDP 스캔
    • 과정:
      • 공격자가 UDP 패킷을 전송.
      • 응답에 따라 포트 상태 확인:
        • 포트가 열려 있을 경우: 응답 없음(UDP는 연결 지향적이 아님).
        • 포트가 닫혀 있을 경우: ICMP Unreachable 메시지 수신.

 

  •  TCP 스캔
    • 과정:
      • 포트 열림 여부 확인:
        • 공격자가 SYN 패킷을 보냄.
        • 대상 서버가 SYN+ACK로 응답하면 포트가 열려 있음.
        • ACK를 보내 연결을 완료.
      • 포트 닫힘 여부:
        • 대상 서버가 RST+ACK로 응답.

 

  • 포트 스캐닝 탐지
    • nmap 윈도우에 설치
    • /etc/snort/snort.conf  rule 확인
    • 결과
      • # snort -q -A console -b -c /etc/snort/snort.conf

 

 

 

 

반응형