[정보보안] 네트워크 공격 대응 방안 총정리
Sniffing 공격은 네트워크 인터페이스 카드(NIC)의 동작 모드를 무차별 모드로 전환(ifconfig eth0 promisc)하여 같은 네트워크 내에 자신의 MAC 주소와 무관한 모든 트래픽을 도청하는 방식
- 네트워크 스니핑을 통해 통신내용을 알 수 없도록 암호화 프로토콜 또는 암호화 프로그램을 사용하여 통신에 사용되는 모든 데이터를 암호화한다.
- 허브 장비(더미 허브)에 비해 상대적으로 네트워크 스니핑 공격에 안전한 스위치 장비(스위칭 허브)를 이용한다
- 스니핑 탐지 도구(AntiSniffer 등)를 이용하여 악의적인 목적의 스니핑이 발생하는지 지속해서 점검한다
ARP Redirect 공격은 공격자가 자신이 라우터(기본 게이트웨이)인 것처럼 MAC주소를 위조한 ARP 응답 메시지를 해당 네트워크에 브로드캐스트하면 해당 네트워크에 연결된 모든 호스트의 ARP cache table에 라우터의 MAC주소가 공격자의 MAC주소로 변조되고, 이를 통해서 희생자로부터 외부 네트워크로 나가는 패킷을 공격자가 스니핑하는 공격 기법
- 중요 호스트에 대해서는 ARP 캐시을 정적으로 설정하여 동적으로 캐시 정보를 조작하지 못하도록 함
arp -s 호스트IP 호스트MAC
- 네트워크 상의 ARP 트래픽을 실시간으로 모니터링하는 도구(ARPWatch 등)을 이용하여 ARP 조작 트래픽을 탐지
ICMP Redirect 공격은 공격자가 특정 IP 또는 네트워크 대역으로 나가는 패킷의 라우팅 경로를 자기 주소로 위조한 ICMP 리다이렉트 메시지를 생성하여 희생자에게 전송함으로써 희생자의 라우팅 테이블에 공격자로 향하는 경로를 생성하고, 이를 통해서 특정 IP 또는 네트워크 대역으로 나가는 패킷을 공격자가 스니핑하는 공격 기법
- ICMP Redirect 메시지 수신 시 이를 무시하고, ICMP Redirect 메시지를 전송하지 않도록 시스템 커널 환경변수 설정
sysctl -w net.ipv4.conf.all.accept_redirects=0 sysctl -w net.ipv4.conf.default.send_redirects=0
DNS spoofing 공격은 공격자가 DNS 서버 또는 클라이언트와의 통신을 가로채서, 원래의 DNS 응답을 변경하거나 위조된 응답을 보내는 행위로, 이를 통해 사용자를 신뢰할 수 있는 웹사이트로 위장한 악성 웹사이트로 유도하여 민감한 정보를 수집하거나 악성 코드를 감염시키는 파밍(Pharming) 공격을 수행
- DNS보다 우선순위은 hosts 파일에 주요 접속 서버의 도메인명에 대한 IP주소 저장
DNS Cache Poisoning 공격은 공격자가 DNS 캐시 서버의 캐시에 잘못된 DNS 레코드를 삽입하여, 이후의 요청에 대해 잘못된 응답을 제공하도록 만드는 공격
- DNSSEC 기술을 도입하여 DNS응답에 디지털 서명을 추가함으로써 DNS 데이터의 데이터 원천 인증과 데이터 무결성 보장
LAND 공격은 출발지 IP와 목적지 IP가 같은 패킷을 만들어 보냄으로써 수신자(공격 대상)가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법
- 출발지 IP와 목적지 IP가 동일한 패킷을 허용하지 않도록 라우터 설정
TCP SYN flooding 공격은 TCP 연결설정 과정(3-way handshaking)에서 클라이언트의 유효성을 검증하지 않는 취약점(half-open)을 이용한 공격입니다. 출발지 IP주소를 위조한 다수의 SYN 패킷(결 요청 패킷)을 공격 대상 호스트로 전송하여 공격 대상 호스의 연결 자원(Backlog queue)을 모두 소진시켜 서비스 거부 상태를 유발시킵니다. TCP SYN flooding 공격 대응 방안은 아래와 같이 4가지로 정리할 수 있습니다.
- 커널 환경변수: Backlog Queue(연결요청 대기 큐)의 크기 증대
sysctl -w net.ipv4.tcp_max_syn_backlog=1024
- 커널 환경변수: TCP SYNCookies 적용
연결요청 클라이언트의 유효성이 확인될 때까지 서버 측의 Backlog Queue에 연결요청 정보를 저장하지 않는 특성sysctl -w net.ipv4.tcp_syncookies=1
- 보안장비(방화벽, DoS 대응 장비 등)을 이용한 동시연결 제한 또는 임계치 기반의 차단 수행
## 80/tcp 포트로 1초당 50회까지 유입되는 SYN 패킷만 허용하고 나머지는 차단 iptables -A INPUT -p tcp --dport 80 --syn -m limit --limit 50/s -j ACCEPT iptables -A INPUT -p tcp --dport 80 --syn -j DROP ## 80/tcp 포트에 2초 동안 동일 출발지 IP에서 10번 이상의 SYN 패킷이 들어오면 이를 차단 iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -m recent --name SYN_FLOODING --set iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -m recent --name SYN_FLOODING --update --seconds 2 --hitcount 10 -j DROP
- First SYN Drop 기능을 이용
- 클라이언트의 첫 번째 SYN 패킷을 폐기한 후 재요청이 오면 이를 허용하는 방식
- 정상적인 TCP 클라이언트는 TCP 오류제어 메카니즘에 의해 재요청을 하지만, 악성봇을 통한 공격은 정상적인 TCP 클라이언트가 아니기 때문에 재요청을 하지 않는 특성을 이용한 방어 기법
Slow HTTP Header/POST DoS 공격은 클라이언트와 웹서버와의 연결을 장기간 지속시켜 웹서버의 연결자원을 모두 소진시켜 서비스 거부 상태를 유발시킵니다. Slow HTTP Header/POST DoS 공격 대응 방안은 아래와 같이 3가지로 정리할 수 있습니다.
- 방화벽(iptables 등)을 이용하여 동시 연결에 대한 임계치 설정을 통해 동일한 출발지 IP에서 동시에 연결할 수 있는 연결개수를 제한
## 80/tcp 포트에 대하여 동일 출발지 IP의 동시 연결 개수를 3개 초과 시 차단 iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 3 -j DROP
- 클라이언트와 웹서버 간 세션에 대한 연결 타임아웃(Timeout 지시자)을 적절히 설정하여 천천히 지속해서 발생하는 요청에 대응
- 읽기 타임아웃(RequestReadTimeout 지시자)를 적절히 설정하여 지정한 시간 이내에 요청 데이터를 모두 수신하지 못하면 타임아웃을 발생시켜 천천히 지속해서 발생하는 요청에 대응
Smurf 공격은 공격자가 발신자 IP주소를 공격 대상 IP주소로 변조하여 대량의 ICMP Echo Request 메시지를 브로드캐스트 주소로 전송하여 네트워크 상의 여러 호스트로 향하게 합니다. 브로드캐스트 주소로 전송된 ICMP Echo Request에 대한 응답으로 여러 호스트들이 응답하게 되므로, 공격 대상 IP주소로 향하는 트래픽을 증폭시키는 공격입니다.
- 증폭 네트워크로 사용되는 것을 막기 위해 다른 네트워크로부터 자신의 네트워크로 들어오는 Directed Broadcast 패킷을 허용하지 않도록 라우터 설정
(config-if)# no ip directed-broadcast ## 신뢰할 수 있는 네트워크 대역에서 출발하는 Directed Broadcast 패킷을 허용하고자 할 때 라우터 설정 (config)# access-list 100 permit udp 192.168.56.0 0.0.0.255 any (config)# interface FastEthernet 0/0 (config-if)# ip directed-broadcast 100
- Directed Broadcast 목적지 주소로 전송된 ICMP Echo Request 패킷에 대해 응답하지 않도록 시스템 설정
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
DNS 증폭 DRDoS 공격은 공격자가 출발지 IP를 공격 대상의 IP로 위조하는 IP 스푸팅을 수행한 후, ANY 타입의 DNS 쿼리를 정상적인 대수의 Open DNS서버에 요청하면 다양한 타입의 레코드들이 공격 대상으로 응답하게됨에 따라 증폭된 트래픽의 폭주로 인해 공격 대상 네트워크 인프라가 압도(overwhelming)되어 서비스 거부가 발생하게 됩니다. 공격자는 ①IP주소가 위조되고 반사 서버를 통해 공격이 수행되므로 공격의 출처를 파악하기 어렵고, ②DNS는 별도의 인증절차가 없으므로 공격 수행이 용이하고, ③요청 대비 응답이 크기 때문에 공격 트래픽 효율성이 높아 이 기법을 주로 사용합니다. 또한 ④좀비PC 등 봇넷을 구축할 필요없이 정상적인 DNS서버를 통해 대량의 공격 패킷을 피해자에게 전송할 수 있어 노력 대비 효율이 좋습니다.
- 공개용이 아닌 내부 사용자용 resolving(cache) DNS 서버가 증폭 공격의 반사서버가 되지 않도록 서버 설정을 통해 내부 사용자 주소만 Recursive Query(재귀 쿼리)만 가능하도록 제한(
allow-recursion
지시자) - 서버 방화벽 또는 네트워크 보안장비를 통해서 특정 byte 이상의 DNS 응답을 차단하거나 동일 출발지 IP에 대해 단위 시간당(/초) 요청개수의 임계치를 설정
iptables -A OUTPUT -p udp --sport 53 -m length --length 1000: -j DROP iptables -A OUTPUT -p tcp --sport 53 -m length --length 1000: -j DROP iptables -A INPUT -p udp --dport 53 -m recent --name DNS_DRDOS --set iptables -A INPUT -p udp --dport 53 -m recent --name DNS_DRDOS --update --seconds 1 --hitcount 10 -j DROP
“주요 프로토콜의 취약점 대응 방안 총정리” 글을 함께 참고하시면 좋습니다.