IT/Tips

리눅스마스터 - 네트워크 보안 관리

Jany 2016. 7. 26. 16:31
반응형

DoS(Denial of Service, 서비스 거부) 공격

DoS공격의 기능

파괴 공격: 디스크, 데이터, 시스템 파괴

시스템 자원 고갈 공격: CPU, 메모리, 디스크 부하 가중으로 인한 고갈

네트워크 자원 고갈 공격: 불필요한 패킷 유발을 통한 네트워크 대역폭 고갈

 

DoS공격의 종류

Ping of Death: ping을 이용해 ICMP 패킷을 아주 크게 만들어 보내는 공격 방법

UDP Flooding: UDP 패킷을 대량 발생시켜 시스템 서비스를 방해하는 공격

TCP SYN Flooding: 다량의 SYN 패킷을 보내 접속 가능한 공간을 소진함으로 다른 사용자의 접속을 막는 방법

Teardrop Attack: 시퀀스 넘버를 조작하거나 중첩시키는 방법

Land Attack: IP주소를 서버의 IP주소로 위장하고 패킷이 자신에게 오도록 하는 방법

Smurf Attack: IP주소를 서버의 IP주소로 위장하고 icmp 패킷을 broadcast통해 다수의 시스템에 전송한다. 브로드 캐스트는 서버로 전송하게 되면서 부하가 발생시킨다.

Mail Bomb: 대량의 메일을 발송해 메일서버의 디스크 공간을 가득 채움

시스템 자원 고갈 공격: vi 로 파일 생성 후 gcc로 실행파일을 만들어 실행

 

DDoS(Distributed Denial of Service) 공격

여러대의 공격자를 분산 배치하여 동시에 DoS공격을 함

Trinoo: 다수의 호스트로부터 통합된 UDP Flooding 공격을 실행

TFN: UDP Flooding, TCP SYN Flooding, ICMP broadcast 공격 가능 평문으로 전송되어 공격자가 노출되기 쉽다.

TFN 2K: TFN의 발전된 형태 통신에 특정 포트를 사용하지 않고 암호화를 사용한다.

Stacheldraht: Trinoo, TFN을 참고하여 만들어짐. 통신할 때 암호화 기능, 접속한 시도가 사용자가 올바른 공격인지 판단하기 위해 패스워드 입력 요구, 마스터와 에이전트가 자동으로 갱신

 

기타 공격

SSH 무작위 대입(SSH Brute force) 공격: 레드햇 계열인 경우 root접속이 허가가 되어 있어서 패스워드를 사전파일에 있는 단어들을 대입하는 형태의 공격

 

DoS DDoS 공격에 대한 대응책

방화벽을 이용하여 패킷 및 포트 필터링을 통한 진입 차단

침입 탐지 시스템(IDS)를 이용한 공격 탐지

침입 방지 시스템(IPS)를 이용한 대처

취약점 및 버그를 이용한 악성코드 및 침입 방지를 위한 시스템 패치

안정적인 네트워크 설계

다양한 보안 툴을 활용하여 Dos 공격 탐색과 제거

로드 밸런싱을 통한 대용량 트레픽 분산 처리 및 네트워크 성능 강화

서비스별 대역폭 제한, 불필요한 서비스 제거

 

방화벽(Firewall, 침입 차단 시스템)

방화벽의 기능

접근 제어: 접근을 거부, 허용할 대상을 정함(패킷 필터링 방식과 프록시 방식으로 나뉜다)

로깅과 감사 추적: 접근 허가 및 거부된 내용을 기록하고 추적한다.

인증: 메시지 인증, 사용자 인증, 클라이언트 인증을 통해 허가된 접근을 인증

데이터 암호화: 가상 사설망을 이용해 방화벽에서 다른 방화벽까지 전송되는 데이터암호화

 

방화벽의 종류

배스천 호스트: 방화벽 시스템에서 접근 제어, 응용 시스템 게이트로서 가상 서버의 설치, 인증, 로그 등을 담당(최소한의 서비스만 가능한 상태로 구성)

스크린 라우터: 방화벽 역할을 수행하는 라우터(낮은 수준의 접근 제어를 지원)

단일 홈 게이트웨이: 스크린 라우터 보다 발전된 형태의 방화벽. 접근 제어, 프록시, 인증, 로깅 등을 수행 리눅스, 유닉스, 윈도 등과 같은 운영체제에 설치되어 운용(배스천 호스트)

이중 홈 게이트웨이: 2개 이상의 NIC을 이용해 구성하는 방화벽.

스크린 호스트 게이트웨이: 스크린 라우터와 단일 홈 게이트웨이를 조합한 형태 총 2차례에 걸쳐서 방어를 수행 서로 거치지 않는 접속을 모두 거부 한다.

스크린 서브넷 게이트웨이: 내부 네트워크와 외부 네트워크 사이에 완충지대를 두는 방식

완충 지대에 보통 DMZ가 위치하고 방화벽도 이 위치에 설치

 

침입 탐지 시스템(Intrusion Detection System, IDS)

서버나 네트워크에 대한 공격을 실시간으로 탐지하는 시스템

테이터 수집, 데이터 필터링과 축약, 침입 탐지, 책임 추적성과 대응 기능을 수행

호스트 기반과 네트워크 기반으로 나누어짐

침입탐지 기법에는 오용 탐지(이미 발견된 패턴 입력)와 이상 탐지(급격한 변화, 확률이 낮은 일이 발생)로 나누어짐

 

침입 방지 시스템(Intrusion Prevention System, IPS)

네트워크에서 공격 서명을 찾아내 자동으로 모종의 조치를 취함으로써 비전상 적인 트레픽 중단 시키는 시스템

경고 이전에 공격을 중단 시키는 데 초점을 둔 시스템(침입 유도 +자동 대처)

 

리눅스 기반 IDS IPS 시스템

Snort: 탐지룰을 기반으로 네트워크 트레픽을 감시하고 분석하여 침입 여부를 알려준다.

 

Snort 의 기능 분류

Packet Sniffer: 네크워크의 패킷을 읽어 보여주는 기능

Packet Logger: 모니터링한 패킷을 저장(로그 기록 및 트레픽 디버깅에 유용)

Network IDS: 네트워크 트레픽 분석, 공격 탐지 기능

Snort Inline: 패킷 분석 및 공격 차단 기능

 

Suricata: Snort와 유사 멀티코어, 멀티 쓰레딩, GPU 하드웨어 가속 지원 등

 

iptables

커널 1.0 ipfw ->2.0 ipfwadm -> 2.2 ipchains ->2.4 iptables

패킷 필터링 도구로서 방화벽 구성이나 NAT에 사용

iptables가 패킷을 필터링 하는 것이 아니라 netfilter라는 커널에 탑제 된 기능으로 패킷을 필터링하며 iptables netfilter에게 룰을 세워주는 것이다.

 

iptables의 테이블

filter: 패킷 필터링 담당

nat: ip주소를 변환 시키는 역할

mangle: 패킷 데이터를 변경하는 특수 규칙을 적용하는 테이블

raw: 넷필터의 연결추적 하위 시스템과 독립적으로 동작해야 하는 규칙을 설정

 

iptables의 사슬

INPUT: 접근 통제를 담당하는 역할 수행

OUTPUT: 다른 시스템으로의 접근을 차단할 때 사용하는 사슬

FORWORD: 통과하는 패킷을 관리하는 사슬

PREROUTING, POSTROUTING: 커널 내부에서 IP라우팅 계산을 수행하기 전과 후에 패킷 헤더를 수정하기 위해 사용

 

 

사슬(Chain)

테이블(Table)

filter

nat

mangle

raw

INPUT

 

 

FORWORD

 

 

OUTPUT

 

 

iptables [-t table] action chain match [-j target]

주요 action

-N 새로운 정의 사슬을 만든다(--new-chain)

-X 비어있는 사슬을 제거한다(--delete-chain)

-P 사슬의 기본 정책을 설정한다.(--policy)

-L 현재 사슬 규칙을 나열한다(--list)

-F 사슬로부터 규칙을 제거한다(--flush)

-Z 사슬내의 모든 규칙들의 패킷과 바이트의 카운트를 0으로 만든다(--zero)

-A 사슬에 새로운 규칙을 추가한다. 해당 사슬의 맨 마지막 규칙으로 등록(--append)

-L 사슬에 규칙을 맨 첫 부분에 삽입, 룰 넘버를 줘서 특정 부분에 삽입 가능(--insert)

-R 사슬의 규칙을 교환(--replace)

-D 사슬의 규칙을 제거(--delete)

 

주요 match

-s 출발지 IP주소나 네트워크와 매칭, IP 주소, 넷마스크 값을 이용하여 표기(--source, --src)

-d 목적지 IP주소나 네트워크와 매칭, IP 주소, 넷마스크 값을 이용하여 표기(--destination, --dst)

-p 특정 프로토콜과 매치 TCP, UDP, ICMP와 같은 이름 사용 이옵션을 사용하지 않으면 모든 프로토콜이 대상이됨(--protocol)

-i 입력 인터페이스와 매칭(--in-interface)

-o 출력 인터페이스와 매칭(--out-interface)

! NOT 의 의미로 사용(특정 매칭 제외 할 때 사용)

-m 좀더 세밀하게 제어할 때 사용(--match)

--state 연결 상태와 매칭

--string 특정한 패턴과 매칭

 

-p 뒤에 붙는 옵션

--sport 발신지에서 하나의 포트 또는 포트 범위를 지정(--source-port)

--dport 도착지의 포트를 지정(--destination-port)

--tcp-flags TCP flag를 지정하는 옵션 SYN, ACK, FIN, RST 등을 지정할 수 있음

--syn tcp-flags SYN, RST, ACK, FIN SYN 과 같다.

 

기타 옵션

-n 다른 옵션과 같이 사용되며 출력 정보를 숫자값 으로 표현(--numeric)

-v 다른 옵션과 같이 사용되며 자세히 출력(--verbose)

--line-number 청책 앞에 번호를 붙여 출력(삭제나 삽입 시 유용)

 

-j옵션

DROP, ACCEPT, LOG, SNAT, DNAT, REDIRECT(투명 프록시)

 

iptables 설정 규칙 저장

iptables-save: iptables로 설정된 정책을 파일로 저장

iptables-save > 파일명

-v 현재 설정된 정책을 화면에 출력

 

iptables-restore: iptables-save로 저장된 파일을 불러들여서 정책 설정에 반영한다.

iptables-restore < 파일명

 

iptables 스크립트 사용

/etc/rc.d/init.d/iptables 인자값 or service iptables 인자값

save 저장, start 적용, stop 초기화, restart 초기화 후 재시작

 

쉘 스크립트 사용

iptables의 로그기록

iptables l INPUT 3 j LOG: 3번째 이후 관련 로그들만 /var/log/message에 기록

 

iptables를 이용한 NAT 구현

/proc/sys/net/ipv4/ip_forword = 1로 설정

하나의 공인 IP주소를 공유하여 다수의 PC에서 인터넷 사용(SNAT)

하나의 공인 IP주소를 이용하여 다수의 서버를 연결(DNAT)

투명 프록시

 

SNAT(Source NAT): 라우팅 경로가 결정된 이후에 설정(POSTROUTING)

DNAT(Destination NAT): 라우팅 이전 단계에서 적용(PREROUTING)

 

iptables를 이용한 공격 대비(584~585P)

 

기타도구

fail2ban: ssh뿐만 아니라 다양한 서비스에 대한 공격을 차단할 수 있는 도구

sshguard: 방화벽 프로그램을 이용해 ssh brute force 차단

DenyHosts: /var/log/secure을 검사해 /etc/hosts.deny에 추가하여 차단

반응형