RRC서버가 깔린 리눅스에 워낙 CLOSE_WAIT가 많이 걸리고,

해제되지 않아 여기 저기 찾다가 발견한 사이트

 

http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=76

 

sysctl 명령어를 이용하란다~~

혹시, 링크가 깨질까봐, 원문을 copy해둔다.

 

## 질문
xxx 작성:

안녕하세요.전번에 netlog에 대한 답변들은 고마웠습니다.
요즘 SYN attack에 대한 생각을 정리중인데,도움을 좀 청할까 해서요..
리눅스나 원도우에서 SYN이 들어오면은최대 접속 SYN 갯수가 있을 것이고,
3상태 연결이 안되었을때, 연결이 취소될때까지의 시간이 있을건데,
이것은 리눅스 상에서 설정을 어디를 보면 되는지.좀 아시는 분 가르켜 주세
요.
그리고, window NT나 유닉스는 기본적인 값이 얼마인지궁금합니다.
아시는 뿐들은 꼭 좀 답변 올려주세요.


## 답변
Linux에서 IP Stack을 관리하는 명령어는 sysctl입니다.
사용법은 간단합니다.
usage:  sysctl -w variable=value ...  ; 설정
            sysctl -a                          ; 조회

timeout관련 정보는 grep으로 찾아보시기를 바랍니다.

그리고, Tuning과 관련하여 몇가지 정보를 추가하면(kernel 2.2기준)

- SYN attack 관련
  sysctl -w net.ipv4.tcp_max_syn_backlog=1280 ; socket queue 증가
  sysctl -w net.ipv4.tcp_syn_cookies=1             ; enable

- Routing table 변경
  sysctl -w net.ipv4.conf.all.send_redirects=0      ; disable
  sysctl -w net.ipv4.conf.all.accept_redirects=0

- Source Routing 관련
  sysctl -w net.ipv4.conf.all.accept_source_route=0  ; source route 패킷
드롭
  sysctl -w net.ipv4.conf.all.forwarding=0                 ; forwarding
disable
  sysctl -w net.ipv4.conf.all.mc_forwarding=0

- Timewait 값 조절 (DDOS 관련)
  sysctl -w net.ipv4.vs.timeout_timewait=60       ; 60초 이하로 설정 권


- Broadcast ECHO Response (smurf Attack 관련)
  sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1    ; 응답안함

등이 있습니다. 이외에 추가적으로 확인해 보시기 바랍니다.

자료참조: Rob Thomas, 이강석 "Unix IP Stack Tunig Guide"-센터내부자료 참
조.

.FIN.
 

## 추가답변
안녕하십니까?

저는 xxxxx의 홍석범입니다.


아래 메일로 말씀하신 부분에 조금만 추가를 하면....


1. 최대 접속 SYN 갯수에 대해

시스템에서 수용할 수 있는 최대 접속  SYN 패킷의 개수는 backlog queue 와
관련이 있습니다. 즉 backlog_queue 를 크게 늘렸을 경우에는 그만큼 많은
SYN 패킷을 수용할 수 있는 것이지요...

리눅스뿐만이 아니라 대부분의 시스템에는 이 값(kb 단위) 이 매우 낮게 설정
되어 있는데,
적절히 재설정하실 필요가 있습니다.
(현재 설정치는 sysctl -A|grep backlog로 확인해 보세요..)
일반적으로는 RAM 이 128M 이상일 경우 1024를 설정하면 되고
이하일 경우에는 128 을 설정하는데, 리누스의 부하가 많이 걸릴 경우에는
이 값을 적절히 늘려주면 됩니다.
그런데, 이 값을 무한정 늘릴 수 있는 것은 아니고 값이 1024 이상일 경우에

include/net/tcp.h 를 수정하여야 한다고 알고 있습니다..
그리고 경험적으로 이 값을 너무 크게 설정하였을 경우에는 syncookie 가
잘 적용되지 않는 것으로 알고 있습니다.
(그러니 syncookie 설정을 하였을 경우에는 backlog queue 를 그리 크게
하실 필요는 없습니다.)
아울러 말씀하신 자료에는

sysctl -w net.ipv4.tcp_syn_cookies=1  로 되어 있는데
sysctl -w net.ipv4.tcp_syncookies=1 이 맞습니다..
 


2. 연결이 취소될때까지의 시간에 대해

이 설정은  
sysctl -w net.ipv4.vs.timeout_synrecv=10    와
관련이 있는것 같습니다.
(syn 패킷을 받은후 half open 상태 대기는 10초정도가 적당합니다.)
이 설정을 하시려면 바로 이용하실 수는 없고 커널 패치를 하셔야 합니다.
vs 라는 것은 Virtual Server 의 뜻으로 말 그대로 clustering 등을
구성할 때 필요한 커널 패치입니다.
이는 http://linuxvirtualserver.org/ 에서 패치하시면
됩니다.
그런데, 제가 테스트해보기로는 이 설정이 그대로 잘 적용은 되지 않더군
요,..,.
(이외 vs 커널 패치를 하면 drop_entry, drop_packet 등 다른 몇가지 정책을
추가로
   설정할 수 있습니다.)




3. NT 등 Windows 계열의 SYN_Attack 에 대해

NT에서는 Registry값을 수정함으로써 튜닝이 가능합니다.
이 값에 대한 튜닝은 microsoft 의 technical page 나
http://packetstorm.securify.com/groups/rhino9/synflood.doc
참고하시기 바랍니다.



4. 그러나, 가장 확실한 방법은.....
제가 보기에는 서버 level 에서의 튜닝은 단지 공격을 감소시킬 수 있을뿐
근본적인 대책은 아닙니다.
이를 위해 라우터 level 에서 차단하는 것이 권장할만한 방법인데,
제가 테스트해 보기로는 몇가지 방법이 있더군요....
이 방법은 시간이 되는대로 정리를 해 보도록 하겠습니다.
 
 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스
<< PREV : [1] : ... [7] : [8] : [9] : [10] : [11] : [12] : [13] : [14] : [15] : ... [160] : NEXT >>

BLOG main image

공지사항

카테고리

분류 전체보기 (160)
MAMP LAMP (1)
Open Project (4)
Knowhow (57)
JEE Technologies (3)
Rational Products (94)
Etc (0)