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

리눅스보안강좌#5 : 커널 파라미터 조정으로 시스템 최적화 방법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

커널 파라미터 조정으로 시스템 최적화 방법


 

리눅스에서 제공하는 /proc 파일시스템은 마치 Windows의 레지스트리(registry)처럼 시스템을 재부팅하지 않고도 OS 커널의 상세한 부분을 수정, 변경할 수 있도록 유연한 기능을 제공하고 있다.

 

설정 값은 /proc/sys/ 디렉토리 이하의 디렉토리 및 파일에 대해 catecho를 이용하여 조회하거나 설정할 수 있는데, 사용방법은 다음과 같다.

 

* 현재 변수 값 조회

cat /proc/sys/디렉토리/변수값

 

* 현재 변수 값 설정

echo xx > /proc/sys/디렉토리/변수값

 

최근에는 전용 유틸리티인 sysctl을 이용하여 조회 또는 설정할 수 있는데, sysctl의 설정 파일은 /etc/sysctl.conf이다.

 

sysctl에서는 역시 /proc/sys 디렉토리 이하에 있는 변수를 변경할 수 있는데, 디렉토리(/)sysctl에서 마침표(.)로 변경된다.

 

.

현재의 모든 변수 설정은 sysctl -a로 확인할 수 있으며 특정한 변수를 질의하려면 sysctl -n을 쓰면 되고, 변수를 특정한 값으로 설정하려면 sysctl -w를 사용하면 된다.

 

. 아래의 예를 살펴보자.

 

# cat /proc/sys/net/ipv4/tcp_syncookies

0

 

위에서 tcp_syncookies 변수가 0이므로 off , 사용되지 않는다는 의미인데, 아래와 같이 echo로 값을 설정 후 다시 확인해 보면 on의 의미인 1로 변경된 것을 알 수 있다.

 

 

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

# cat /proc/sys/net/ipv4/tcp_syncookies

1

 

이를 sysctl로 사용할 경우 아래와 같이 사용하면 동일한 결과가 된다.

 

.

 

# sysctl -n net.ipv4.tcp_syncookies

0

# sysctl -w net.ipv4.tcp_syncookies=1

# sysctl -n net.ipv4.tcp_syncookies

1

 

이외 보안과 관련된 몇 가지 다른 커널 파라미터를 알아보도록 하자. 아래의 사항은 권장 사항이므로 라우터 등 특별한 시스템이 아니라면 어떠한 시스템이든 설정할 것을 권장한다.

 

echo "0" > /proc/sys/net/ipv4/tcp_timestamps

 

timestamps 기능은 불필요하므로 사용하지 않는다.

 

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

 

smurf 공격에 악용될 수 있으므로 broadcast 주소를 통한 icmp echo에 대해 응답하지 않도록 한다.

 

echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

 

스푸핑(spoofing)을 막기 위해 source route 패킷을 허용하지 않는다. 소스 라우팅을 허용할 경우 악의적인 공격자가 ip소스 라우팅을 사용해서 목적지의 경로를 지정할 수도 있고, 원래 위치로 돌아오는 경로도 지정할 수 있다.

 

이러한 소스 라우팅이 가능한 것을 이용해 공격자가 마치 신뢰받는 호스트나 클라이언트인 것처럼 위장할 수 있다.

 

 

echo "0" >/proc/sys/net/ipv4/ip_forward

 

해당 시스템을 통해 다른 시스템으로 패킷이 포워딩 되지 않도록 한다. 만약 시스템이 LVS나 라우터 등 게이트웨이 용도로 사용할 것이 아니라면 off로 하는 것이 좋다.

 

echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

 

icmp redirects를 허용하지 않는다. 만약 icmp redirects를 허용할 경우에는 공격자가 임의의 라우팅 테이블을 변경할 수 있게 되어 자신이 의도하지 않는 경로, 즉 공격자가 의도한 경로로 트래픽이 전달될 수 있는 위험이 있다.

 

 

echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

 

스푸핑된 패킷이나 소스라우팅, redirect 패킷에 대해 로그파일에 정보를 남긴다. 굳이 정보를 남기지 않기를 원한다면 이 값을 0으로 변경하면 된다.

 

.

 

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

 

syn flooding 공격에 대응하기 위해 syncookies 기능을 켠다. syn flooding 공격에

매우 효과적이며 커널에서 아래 기능이 활성화되어 있어야 한다.

[*] IP: TCP syncookie support (disabled per default)

echo -e "32768\t61000" > /proc/sys/net/ipv4/ip_local_port_range

 

시스템의 local port로 사용할 수 있는 포트의 범위를 지정한다. 매우 busy한 시스템이라면 이 값을 크게 늘려 줄 필요가 있다.

 

 

echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog

 

역시 syn flooding 공격과 관련된 설정인데, backlog queue의 사이즈를 늘려 공격에 대응하도록 한다. 또는 공격과는 관계없이 처리량이 많은 서버라면 이 값을 늘려주는 것이 좋다. 위의 모든 설정은 재부팅 후에 원래의 값으로 다시 초기화되는 soft level 커널 튜닝이므로 /etc/rc.d/rc.local에 설정하여 부팅시마다 자동으로 실행하도록 하여야 한다. 이외에도 더 많은 설정은 10네트워크 취약성과 그 대책에서 언급하였으므로 참고하기 바란다. 또한 아래 url을 참고하면 많은 커널 파라미터를 확인할 수 있다.

 

 

 

http://ipsysctl-tutorial.frozentux.net/chunkyhtml/index.html


 

강사 : 홍석범부매니저  소속: 라쿠텐 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  95 명