iptables 고수님께 질문드립니다.
글쓴이: h2cl / 작성시간: 수, 2008/09/03 - 1:37오후
iptables 설정중에서
SYN 값이 1인 ip가 계속 접속을 하는것을 차단할수 있을까요?
룰을 어떻게 적용시켜야되는지 부탁드리겠습니다.
예를 들면 syn=1 값으로 들어오는 패킷을 차단하려면
iptables -A INPUT -p tcp -dport -m recent -update-seconds 1 -hitcount 1 -j DROP
이렇게 하였는데
syn=1 인 패킷중에 같은 아이피로 들어오면 제한하는 룰을 어떻게 써야될까요?
Forums:
syn 값이 1이라는게
syn 값이 1이라는게 무슨 뜻인지 모르겠군요... @..@
보아하니.... syn flooding 을 차단하시려고 하는 거 같은데... 글쎄요 조금 힘들지 않나 생각됩니다.
유사한 효과를 얻어 보실려면 hashlimit 관련 옵션을 찾아보시기 바랍니다.
syn=1은
syn 값이 있는것을 말합니다.
TCP통신시에
SYN ---> ACK ---> SYN,ACK
뭐 이렇게 3핸드쉐이크를 하는데
그중 첫번째가 SYN 1값이죠..
아래 말씀하신것처럼 SYN flooding 맞습니다...
그런데 시스템이 죽다니요? recent가 그렇게 무겁나요??
무겁다고 한다면
무겁다고 한다면 무거울 수 있습니다. 해당 세션에 대한 table 을 모두 들고 있어야 하니까요.
정상적인 처리일 경우 한 세션이 끝나면 비워버리면 되는데, recent 의 경우 counting 을 해야 하기 때문에 계속 들고 있어야 해서 발생하는 문제입니다. 그렇기 때문에 syn flooding attack 이 Spoofing 형식으로 들어온다면 recent module 이 overflow 또는 memory 고갈을 유발 시켜 시스템을 죽여버릴 수도 있는 겁니다.
recent 는 무겁다기
recent 는 무겁다기 보다는 무섭습니다. ㅡ.ㅡ;
정상적인 트래픽이라면 크게 문제가 없지만, 공격시에는 무지막지하게 메모리를 갉아먹습니다. ;;;;
그 이유는 아래 김정균님께서 잘 설명해 주셨구요.
SYN FLOODING 공격을 막기 위함이라면 어렵게 머리 싸매지 마시고 proxy 서버로 트래픽을 우회시키는 것도 하나의 방편이 될 수 있습니다. ^^
그렇다면 이렇게 재구성하면 어떨까요?
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -m limit --limit 5/seconds -limit-burst 10 -j DROP
이런식으로 limit을 사용하면 어떨까요??
그런데 INPUT에서 드롭시키는것과 FORWARD에서 드롭시키는것과 어떤 차이점이 있을까요?
브릿지 서버에서 적용시킨다고 했을경우..
흠 recent module 을
흠 recent module 을 그렇게 사용하시면.. 아마 시스템이 죽을 확률이 좀 있을 겁니다. 저도 ftp 에 burte force attack 막아 보자고 걸어 놓았다가 1시간 만에 시스템이 죽은 경험이 있어서..
댓글 달기