Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

IIS HTTPERR - Timer_MinBytesPerSecond, Timer_ConnectionIdle 로그

이상하군요, IIS의 "C:\Windows\System32\LogFiles\HTTPERR" 오류 로그에 다음과 같이 Timer_MinBytesPerSecond 오류가 남고 있습니다.

#Software: Microsoft HTTP API 2.0
#Version: 1.0
#Date: 2020-09-02 12:52:59
#Fields: date time c-ip c-port s-ip s-port cs-version cs-method cs-uri streamid sc-status s-siteid s-reason s-queuename
2020-09-02 12:52:59 192.168.100.80 40738 192.168.100.55 8020 - - - - - - Timer_MinBytesPerSecond -
2020-09-02 12:53:56 192.168.100.80 40782 192.168.100.55 8020 - - - - - - Timer_MinBytesPerSecond -
2020-09-02 12:55:03 192.168.100.80 40826 192.168.100.55 8020 - - - - - - Timer_MinBytesPerSecond -
...[생략]...

Timer_MinBytesPerSecond를 검색해 보면 자세한 설명을 담은 글이 나오는데,

What is MinBytesPerSecond?
; https://techcommunity.microsoft.com/t5/iis-support-blog/timer-minbytespersecond-in-http-sys-logs/ba-p/1574047

그러니까, IIS는 초당 최소 240바이트의 속도로 응답받을 수 없는 클라이언트에 대해서는 연결을 끊어버리는 기본 설정을 가지고 있는 것입니다. DoS(Denial of Service) 공격을 막기 위해서라고 하는데... (240 * 8 = 1920bits) 약 2Kbits/sec도 안 되는 네트워크에서 접속했다는 가정이므로 현실적인 상황에서 보면 (공격을 목표로 하지 않는다면) 거의 없을 것이므로 나쁘지 않은 기능으로 보입니다.

문제는, 저 오류가 내부 네트워크인 192.168.100.80으로부터 접속한 클라이언트에 대해 발생한다는 것인데 저런 네트워크 속도가 6~7초마다 발생해 로그에 찍힌다는 것이 다소 이해가 되지 않습니다.

참고로, DoS 공격이 아닌 정상적인 요청에서 저런 오류가 발생한다면 이 문제를 없애기 위해 "system.applicationHost/webLimits"의 "minBytesPerSecond" 값을 0으로 설정하면 된다고 합니다.




그나저나, 저 옵션이 DoS 공격을 딱히 막을 수 있을만한 효과가 있는지 의문입니다. 왜냐하면, 그냥 연결만 해놓거나,

static void Main(string[] args)
{
    TcpClient clnt = new TcpClient(AddressFamily.InterNetwork);
    clnt.Connect(IPAddress.Parse("192.168.100.55"), 8020);

    Console.ReadLine();
}

연결 후 GET 요청을 한 다음 Response를 읽지 않으면,

static void Main(string[] args)
{
    TcpClient clnt = new TcpClient(AddressFamily.InterNetwork);
    clnt.Connect(IPAddress.Parse("192.168.100.55"), 8020);

    NetworkStream ns = clnt.GetStream();

    string txt = "GET / HTTP/1.1\nHost: 192.168.100.55\n\n";
    byte[] buffer = Encoding.UTF8.GetBytes(txt);
    ns.Write(buffer, 0, buffer.Length);

    Console.ReadLine();
}

각각 IIS에 의해 TCP 연결을 끊기까지 제법 시간을 소요(제 테스트 환경에서는 2분 2초 == 122초 정도) 하기 때문입니다. 그리고 바로 이럴 때 남겨지는 IIS의 오류 로그가 "Timer_ConnectionIdle"입니다.

2020-09-07 07:56:07 192.168.0.19 4547 192.168.100.55 8020 - - - - - - Timer_ConnectionIdle -




따라서, 정말 DoS 공격이라고 판단되면 IP 주소를 막거나 하는 식의 대응을 해야 합니다. 이를 위해 네트워크 장비나 윈도우 운영체제의 Defender가 제공하는 Firewall로도 가능하겠지만, IIS 자체적으로도 "IP 주소 및 도메인 제한" 기능을 켜면,

(Windows 10의 경우) IP Security
ip_sec_on_iis_1.png

(Windows Server의 경우) IP and Domain Restrictions (IP 주소 및 도메인 제한)
ip_sec_on_iis_2.png

IP 주소 및 범위에 대해 허용/거부를 Web Application 별로 세밀하게 제어할 수 있는 장점이 있습니다.

HOW TO BLOCK AN IP ADDRESS FROM VISITING MY WEBSITES THROUGH IIS?
; https://manage.accuwebhosting.com/knowledgebase/2325/How-to-Block-an-IP-address-From-Visiting-My-Websites-Through-IIS.html




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 9/7/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 91  92  [93]  94  95  96  97  98  99  100  101  102  103  104  105  ...
NoWriterDateCnt.TitleFile(s)
11608정성태7/15/201824885Graphics: 3. Unity로 실습하는 Shader (1) - 컬러 반전 및 상하/좌우 뒤집기
11607정성태7/14/201825223Graphics: 2. Unity로 실습하는 Shader [1]
11606정성태7/13/201825879사물인터넷: 19. PC에 연결해 동작하는 자신만의 USB 장치 만들어 보기파일 다운로드1
11605정성태7/13/201821666사물인터넷: 18. New NodeMCU v3 아두이노 호환 보드의 내장 LED 및 입력 핀 사용법 [1]파일 다운로드1
11604정성태7/12/201820726Math: 47. GeoGebra 기하 (24) - 정다각형파일 다운로드1
11603정성태7/12/201816855Math: 46. GeoGebra 기하 (23) - sqrt(n) 제곱근파일 다운로드1
11602정성태7/11/201817001Math: 45. GeoGebra 기하 (22) - 반전기하학의 원에 관한 반사변환파일 다운로드1
11601정성태7/11/201819812Math: 44. GeoGebra 기하 (21) - 반전기하학의 직선 및 원에 관한 반사변환파일 다운로드1
11600정성태7/10/201818228Math: 43. GeoGebra 기하 (20) - 세 점을 지나는 원파일 다운로드1
11599정성태7/10/201817537Math: 42. GeoGebra 기하 (19) - 두 원의 안과 밖으로 접하는 직선파일 다운로드1
11598정성태7/10/201819395Windows: 147. 시스템 복구 디스크를 USB 디스크에 만드는 방법
11597정성태7/10/201821511사물인터넷: 17. Thinary Electronic - ATmega328PB 아두이노 호환 보드의 개발 환경 구성
11596정성태7/10/201819460기타: 72. 과거의 용어 설명 - OWIN
11595정성태7/10/201825180사물인터넷: 16. New NodeMCU v3 아두이노 호환 보드의 기본 개발 환경 구성
11594정성태7/8/201819599Math: 41. GeoGebra 기하 (18) - 원의 중심 및 접선파일 다운로드1
11593정성태7/8/201818561Math: 40. GeoGebra 기하 (17) - 각의 복사파일 다운로드1
11591정성태7/7/201817999Math: 39. GeoGebra 기하 (16) - 삼각형의 방심과 방접원파일 다운로드1
11590정성태7/7/201817545Math: 38. GeoGebra 기하 (15) - 삼각형의 수심파일 다운로드1
11589정성태7/7/201817781.NET Framework: 787. object로 형변환된 인스턴스를 원래의 타입 인자로 제네릭 메서드를 호출하는 방법 [2]파일 다운로드1
11588정성태7/7/201819262디버깅 기술: 116. windbg 분석 사례 - ASP.NET 웹 응용 프로그램의 CPU 100% 현상 (3)
11587정성태7/5/201818851.NET Framework: 786. ASP.NET - HttpCookieCollection을 다중 스레드에서 사용할 경우 무한 루프 현상
11586정성태7/5/201818054Math: 37. GeoGebra 기하 (14) - 삼각형의 무게 중심파일 다운로드1
11585정성태7/5/201818219Math: 36. GeoGebra 기하 (13) - 삼각형의 외심과 외접하는 원파일 다운로드1
11584정성태7/5/201818207Math: 35. GeoGebra 기하 (12) - 삼각형의 내심과 내접하는 원파일 다운로드1
11583정성태7/5/201817982.NET Framework: 785. public으로 노출되지 않은 다른 어셈블리의 delegate 인스턴스를 Reflection으로 생성하는 방법파일 다운로드1
11582정성태7/5/201824619.NET Framework: 784. C# - 제네릭 인자를 가진 타입을 생성하는 방법 [1]파일 다운로드1
... 91  92  [93]  94  95  96  97  98  99  100  101  102  103  104  105  ...