none
C++로 작성된 서버프로그램에 java client로 TCP통신을 할경우 connection ? RRS feed

  • 질문

  • C++로 작성된 서버프로그램에 java로 client로 작성된 TCP통신을 할 경우 connecton을 임의적으로 client쪽에서 일으킬 경우

    소켓 풀을 사용할 경우 다 차버리면 서버가 다운됩니다.    악의적으로 누군가가 서버프로그램 IP를 알고 accept에 걸어서

    connection만 계속해서 걸기만 하면 서버가 다운되버리는데 이러한 경우 어떻게 대처해야 하나요 ?   MAX Connection을 초과...

    accept함수 후에 다른 조치를 취해야 하나요 ?

    소켓 옵션 timeout을 거는 것 이외에는 방법이 없나요 ?   서버쪽에서 필요없는 client접속을 강제적으로 끊는 방법은 없나요 ?

    SSL방식은 사용하지 않고 사용자가 정의한 방식으로요.    client는 java입니다.

    아시는 분 답변 주시면 감사하겠습니다.

    2015년 5월 25일 월요일 오전 12:55

답변

  • shutdown 과 closesocket 호출로 강제적으로 끊을 수 있습니다.

    하지만 이 방법과 별도로 공격을 방어하기 위한 목적이라면 별도의 방화벽 장비를 앞에 추가로 두는걸 추천합니다.
    2015년 5월 25일 월요일 오후 7:41
  • accept 시에 접속한 클라이언트 IP 체크가능하기 때문에 해당 IP에서 접속한 클라이언트 소켓 갯수를 제한하는 기능을 추가하시고, accept시에 시간기록해서 일정기간이상 사용하지 않으면 해당 소켓 제거(closesocket)하시면서 IP 기록해두고 반복회수 초과하면 Black IP로 등록해서 다음 accept 부터는 해당 IP를 일정기간 사용못하도록 하시는게 좋을듯합니다.
    2015년 6월 1일 월요일 오전 3:10
    중재자

모든 응답

  • shutdown 과 closesocket 호출로 강제적으로 끊을 수 있습니다.

    하지만 이 방법과 별도로 공격을 방어하기 위한 목적이라면 별도의 방화벽 장비를 앞에 추가로 두는걸 추천합니다.
    2015년 5월 25일 월요일 오후 7:41
  • accept 시에 접속한 클라이언트 IP 체크가능하기 때문에 해당 IP에서 접속한 클라이언트 소켓 갯수를 제한하는 기능을 추가하시고, accept시에 시간기록해서 일정기간이상 사용하지 않으면 해당 소켓 제거(closesocket)하시면서 IP 기록해두고 반복회수 초과하면 Black IP로 등록해서 다음 accept 부터는 해당 IP를 일정기간 사용못하도록 하시는게 좋을듯합니다.
    2015년 6월 1일 월요일 오전 3:10
    중재자