2008.06.25 00:16
커널 변수를 제어하는 방법이다.
sysctl -a 는 모든 커널 파라미터의 값을 출력한다.
우선 /etc/sysctl.conf 의 내용을 보자.
[root@linuxian root]# cat /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
[root@linuxian root]#
위 net.ipv4.ip_forward 의 값을 1 로 변경하고 시스템을 재시작 하거나
sysctl -w 명령을 사용하면 변경된 파라미터 값이 시스템에 적용된다.
echo 1 > /proc/sys/net/ipv4/ip_forward 라고 해도 된다.
그러나 시스템을 재시작 했을 경우 sysctl.conf 파일을 읽어들이기 때문에 값은 다시 0 으로 초기화 된다.
SYN flooding 공격에 대비하려면 /etc/sysctl.conf 에 아래의 값들을 입력하고 sysclt -w 을 실행하거나
시스템을 재시작한다.
net.ipv4.tcp_syncookies=1
net/ipv4/tcp_max_syn_backlog=1024
아래는 위 파라미터에 대한 간단한 설명이다.
net.ipv4.tcp_syncookies
--> SYN패킷의 도착빈도가 일정한 횟수보다 많을 때 해당 요청을 허용하지 않을 때 사용한다.
net/ipv4/tcp_max_syn_backlog
--> TCP프로토콜에서 한 소켓이 동시에 SYN요청을 처리하기에기는 한계가 있는데
이 한계가 백로그(backlog)이다. 백로그는 연결 요청이 아직 완전히 처리되지
아니한 대기상태에 있는 큐의 길이이다. 이 백로그 큐가 꽉차게 되면 이후 들어오는
SYN요청은 무시되며 이러한 공격이 위에서 말한 SYN Flooding공격이다.
값을 1024이상으로 설정하려면 커널소스를 수정하고 다시 컴파일 해야 한다.