Kernel Parameter 조회하기

# cat /proc/sys/시스템정보명/세부정보명/설정파라미터명

 

Kernel Parameter 사용하기

* 커널 파라미터 설정파일 : /etc/sysctl.conf


* 커널 파라미터 설정 명령어

# sysctl [옵션] '변수 = 값'

(옵션)

a : 설정 확인

p : 파라미터 설정파일(/etc/sysctl.conf) 재적용

n : 변수 질의

w : 값 설정

 

 

명령어로 설정하는 예제)

# vi /etc/sysctl.conf 파일내 "net.ipv4.tcp_syscookies=1" 설정 후 # sysctl -p
또는
# sysctl -w net.ipv4.tcp_syscookies=1

※ echo 명령이나 vi 명령을 이용하여 '/etc/sysctl.conf' 파일에 적용하는 것을 권장한다.

  -> 추후 변경이 용이하며 내용증적이 남기때문에...

 


[ 권장 Parameter 설정 ] - 'echo" 를 이용한 방법을 권장

* ping 신호 차단
  - 모든 ping(icmp) 신호에 대한 응답 거부, [기본값 : 0]

# echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.icmp_echo_ignore_all=1

 

* broadcast로 보내는 ping 신호 차단
  - Broadcast 주소를 대상으로 한 ping 신호를 거부 (스머프 공격 방지) 

     # echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" >> /etc/sysctl.conf
     또는
     # sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

 

* TCP SYN Flooding 공격 차단
  - dos공격 방지를 위한 커널 값에서 차단

# echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tcp_syncookies=1

 

* IP Spoofing 악용 차단
  - dos 공격의 소스 IP로 사용될 가능성을 차단 

# echo "net.ipv4.conf.default.rp_filter = 1" >> /etc/sysctl.conf    [기본값 : 0]

# echo "net.ipv4.conf.conf.rp_filter = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.rp_filter = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.eth0.rp_filter = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.conf.default.rp_filter=1    [기본값 : 0]

# sysctl -w net.ipv4.conf.conf.rp_filter=1

# sysctl -w net.ipv4.conf.lo.rp_filter=1

# sysctl -w net.ipv4.conf.eth0.rp_filter=1

 

* 세션 종료시간 지정
  - 접속종료 후 세션 정보를 유지하는 시간(단위:초), [기본값 : 60] 

# echo "net.ipv4.tcp_fin_timeout = 10" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tcp_fin_timeout=10

 

* TCP Keep Alive 시간조절
  - 접속 후 유후 대기 시간에 따른 세션 유지 가능 시간(단위:초), [기본값 : 7200] 

# echo "net.ipv4.tcp_keepalive_time = 1800" >> /etc/sysctl.conf
또는
# sysctl net.ipv4.tcp_keepalive_time=1800

 

* 서버 날짜/시간 정보 유출방지
  - 서버내 TimeServer 정보에 대한 유출 방지, [기본값 : 1] 

# echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tcp_timestamps=0


* IP source routing 차단
  - 라우팅 패킷을 허가 불가. 신뢰 호스트로 위장되는 것을 방지 (spoofing 공격 대비) 

# echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.default.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.eth0.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.default.accept_source_route = 0" >> /etc/sysctl.conf
또는

# sysctl -w net.ipv4.conf.all.accept_source_route=0

# sysctl -w net.ipv4.default.accept_source_route=0

# sysctl -w net.ipv4.conf.eth0.accept_source_route=0

# sysctl -w net.ipv4.conf.lo.accept_source_route=0

# sysctl -w net.ipv4.conf.default.accept_source_route=0

 

* ICMP Redirect 차단(수신 패킷 차단)
  - 서버의 라우팅 경로를 확인하는 icmp redirect를 허용하지 않음

    (임의로 라우팅 테이블을 테이블을 변경할 수 없도록한다.) 

# echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf   [기본값 : 1]

# echo "net.ipv4.conf.eth0.accept_redirects = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.accept_redirects = 0" >> /etc/sysctl.conf

또는
# sysctl -w net.ipv4.conf.all.accept_redirects=0   [기본값 : 1]

# sysctl -w net.ipv4.conf.eth0.accept_redirects=0

# sysctl -w net.ipv4.conf.lo.accept_redirects=0


* ICMP Redirect 차단(발송 패킷 차단)
  - 서버에서 내보내는 icmp redirect 패킷을 허용하지 않음 

# echo "net.ipv4.conf.default.send_redirects = 0" >> /etc/sysctl.conf   [기본값 : 1]

# echo "net.ipv4.conf.eth0.send_redirects = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.send_redirects = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.conf.default.send_redirects=0   [기본값 : 1]

# sysctl -w net.ipv4.conf.eth0.send_redirects=0

# sysctl -w net.ipv4.conf.lo.send_redirects=0

# sysctl -w net.ipv4.conf.all.send_redirects=0

 

* IP 패킷 로그 파일로 저장
  - 스푸핑, 소스 라우팅, 리다이렉트된 패킷에 대한 로그 기록 

# echo "net.ipv4.conf.all.log_martians = 1" >> /etc/sysctl.conf   [기본값 : 0]

# echo "net.ipv4.conf.eth0.log_martians = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.log_martians = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.all.log_martians = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.conf.all.log_martians=1   [기본값 : 0]

# sysctl -w net.ipv4.conf.eth0.log_martians=1

# sysctl -w net.ipv4.conf.lo.log_martians=1

# sysctl -w net.ipv4.conf.all.log_martians=1

 

 

[ 기타 Parameter 설정 ]

* SYN flooding 공격 대응
  - 정상적인 ACK 패킷이 아닌 경우 backlog queue 에 저장하지 않거나 Queue 사이즈를 늘임 

# echo "net.ipv4.tvp_max_syn_backlog = 1024" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tvp_max_syn_backlog=1024


* Port 범위 설정
  - Well-know port 를 제외하고 local port로 사용가능한 범위를 지정 

# echo "net.ipv4.ip_local_port_range = 32768 61000" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.ip_local_port_range=32768 61000


* IP forwarding 방지
  - 현재 서버를 통한 포워딩을 허용불가 

# echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf

또는
# sysctl -w net.ipv4.ip_forward=0


 

AND