강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

방화벽 룰 설정을 위한 커널 파라미터 수정

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

방화벽 룰 설정을 위한 커널 파라미터 수정




 

방화벽의 룰을 설정하기에 앞서 커널 파라미터를 수정해서 별도의 커널 보안 기능을 사용하도록 하는 것이 좋다.

 

 

 

 

아래에서 설명하는 설정은 굳이 방화벽을 사용하지 않더라도 기본적으로 권장하는 사항이니 일반 서버에서도 적용하기 바란다.

 

 

 

 

여기에서 1on, 0off의 의미이며 커널 파라미터는 echo를 이용해도 되고 sysctl을 이용해도 된다.

 

브로드캐스트에 응답거부하기

 

브로드캐스트나 멀티캐스트 주소로 향하는 icmp echo request 패킷은 서비스거부(DoS)로 악용될 수 있으므로 거부(무시)한다.

 

 

 

 

 

 

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

 

 

소스라우팅(source routing) 패킷거부하기

 

라우터에서도 "no ip source-route"를 실행하여 소스 라우팅된 패킷을 허용하지 않도록 하는 것이 좋은데, 만약 소스 라우팅을 허용할 경우 공격자가 임의로 라우팅 경로를 미리 지정하거나 수정할 수 있으므로 보안적인 위협이 될 수 있다.

 

 

 

 

아래에서는 for문을 이용하여 모든 인터페이스에 소스 라우팅을 거부하는 적용을 하고 있다.

for interface in /proc/sys/net/ipv4/conf/*/accept_source_route; do

echo "0" > $interface

 

tcp syncookies 기능설정하기

 

tcp syncookiestcp 기반의 대표적인 서비스거부공격인 syn flooding 공격에 유연하게 대응하도록 한다.

 

 

 

 

이를 위해 syncookies를 설정하는 것이 좋으며 아래의 예와 같이 커널에서 지원되도록 설정해야 한다.

 

 

 

 

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

ICMP redirect 거부하기

 

icmp redirect는 라우터가 호스트에게 더 짧은 즉 더 좋은 경로가 있다고 알려줄 때 사용된다.

 

 

 

 

공격자는 이 기능을 이용하여 특정 시스템의 라우팅 테이블을 수정할 수 있으므로 이 역시 공격자에게 악용될 수 있는 소지가 있다.

 

 

 

 

라우터에서도 “no ip redirects”로 이 기능을 허용하지 않도록 하고 있다.

 

 

 

 

따라서 일반적인 상황에서는 이 기능을 허용하지 않는 것이 좋으며 아래에서는 역시 for문을 이용하여 모든 인터페이스에 거부하도록 적용하고 있다.

 

for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do

echo "0" > $interface

 

스푸핑(spoofing) 방지설정하기

 

설정은 자신의 네트워크가 스푸핑 된 공격지의 소스로 사용되는 것을 차단한다.

 

 

 

 

모든 인터페이스에서 들어오는 패킷에 대해 reply를 하였을 때 들어오는 인터페이스로 나가지 못하는 패킷을 거부한다.

 

 

 

 

라우터의 unicast RPF와 비슷하다고 생각하면 된다.

 

 

 

 

참고로 rp_filter에서 rpreverse patch의 의미이며 policy routing이나 advanced routing을 사용할 경우에는 이 값을 0으로 꺼두어야 한다.

 

 

 

 

이를테면 여러 개의 인터페이스가 연결되어 있는 라우터를 운영할 경우, A 인터페이스로 들어온 패킷이 B 인터페이스로 나갈 수 있는데, 만약 rp_filter1일 경우 이러한 패킷은 차단될 수 있기 때문이다.

 

 

 

 

만약 보안보다 성능(performance)을 우선시한다면 이 값은 0으로 두는 것이 좋다.

 

 

 

 

 

for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do

echo "1" > $interface

 

비정상적인 패킷 로그 남기도록 설정하기

 

스푸핑 된 패킷이나 소스 라우팅, Redirect 패킷은 로그 파일에 정보를 남기도록 할 수 있다.

 

 

 

 

log_martians는 단지 비정상적인 패킷에 대한 로그만 남길 뿐 차단등은 하지 않는다.

 

for interface in /proc/sys/net/ipv4/conf/*/log_martians; do

echo "1" > $interface

 

아래는 이 설정을 통해 생성된 로그의 예인데, 공격등의 징후일 수도 있지만 대부분 네트워크 설정을 잘못 해서 발생하는 경우가 많다.

 

 

 

 

 

Mar 22 11:00:07 server kernel: martian source 10.1.12.151 from 10.1.12.87, on dev eth1

Mar 22 11:00:07 server kernel: ll header: 00:e0:4c:71:05:91:00:d0:03:6a:f7:fd:08:00

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  92 명