<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>408 on</title><link>https://taetaetae.github.io/tags/408/</link><description>Recent content in 408 on</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 29 Apr 2018 17:39:36 +0000</lastBuildDate><atom:link href="https://taetaetae.github.io/tags/408/index.xml" rel="self" type="application/rss+xml"/><item><title>아파치 엑세스 로그에 408코드가?</title><link>https://taetaetae.github.io/2018/04/29/apache-408-response-code/</link><pubDate>Sun, 29 Apr 2018 17:39:36 +0000</pubDate><guid>https://taetaetae.github.io/2018/04/29/apache-408-response-code/</guid><description>&lt;p>예전에 아파치 로그를 엘라스틱 스택을 활용하여 &lt;a href="https://taetaetae.github.io/2018/04/10/apache-access-log-user-agent" target="_blank" rel="noopener noreffer ">내 서버에 누가 들어오는지를 확인할수 있도록 구성&lt;/a>을 해두고 몇일간 지켜보니 다음과 같은 엑세스 로그가 발생하고 있었다.&lt;!-- more -->&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:27:33 +0900] &amp;#34;GET /aaa/ HTTP/1.1&amp;#34; 200 6001 30788 &amp;#34;http://www.naver.com&amp;#34; &amp;#34;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:28:08 +0900] &amp;#34;-&amp;#34; 408 - 30 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:28:08 +0900] &amp;#34;-&amp;#34; 408 - 28 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:28:08 +0900] &amp;#34;-&amp;#34; 408 - 12 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:28:08 +0900] &amp;#34;-&amp;#34; 408 - 30 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:28:50 +0900] &amp;#34;GET /aaa/ HTTP/1.1&amp;#34; 200 5999 13521 &amp;#34;http://www.naver.com/&amp;#34; &amp;#34;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:14 +0900] &amp;#34;GET /aaa/ HTTP/1.1&amp;#34; 200 5996 19437 &amp;#34;http://www.naver.com&amp;#34; &amp;#34;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:15 +0900] &amp;#34;GET /aaa/ HTTP/1.1&amp;#34; 200 5997 17553 &amp;#34;http://www.naver.com&amp;#34; &amp;#34;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:15 +0900] &amp;#34;GET /aaa/ HTTP/1.1&amp;#34; 200 5998 17429 &amp;#34;http://www.naver.com/&amp;#34; &amp;#34;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:53 +0900] &amp;#34;-&amp;#34; 408 - 30 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:53 +0900] &amp;#34;-&amp;#34; 408 - 30 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:53 +0900] &amp;#34;-&amp;#34; 408 - 32 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:53 +0900] &amp;#34;-&amp;#34; 408 - 38 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:29:53 +0900] &amp;#34;-&amp;#34; 408 - 29 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:30:54 +0900] &amp;#34;GET /aaa/ HTTP/1.1&amp;#34; 200 6000 17881 &amp;#34;http://www.naver.com&amp;#34; &amp;#34;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:31:34 +0900] &amp;#34;-&amp;#34; 408 - 30 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:31:34 +0900] &amp;#34;-&amp;#34; 408 - 30 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.2.3.4 - - [26/Apr/2018:01:31:34 +0900] &amp;#34;-&amp;#34; 408 - 25 &amp;#34;-&amp;#34; &amp;#34;-&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>한시간에 만건이상 &lt;code>응답코드는 408&lt;/code>, &lt;code>referrer도 없고&lt;/code>, &lt;code>useragent도 없는&lt;/code>, &lt;code>ip들도 매우 다양한&lt;/code> 이상한 녀석들이 요청되고 있었다.&lt;/p>
&lt;blockquote>
&lt;p>이렇게 엑세스 로그를 분석할수 있는 구성을 해두고 나니 보였지 안그랬음 그냥 지나갔을 터..&lt;/p>&lt;/blockquote>
&lt;p>이러한 데이터를 키바나에서 보면 아래처럼 볼수있는데 한눈에 봐도 과연 의미있는 요청들일까? 하는 의구심이 들정도이다. (1시간 아파치 엑세스 로그)&lt;/p>
&lt;figure>&lt;a class="lightgallery" href="https://taetaetae.github.io/images/apache-408-response-code/200vs400.png" title="/images/apache-408-response-code/200vs400.png" data-thumbnail="/images/apache-408-response-code/200vs400.png" data-sub-html="&lt;h2>주황색이 408응답&lt;/h2>">
 &lt;img
 class="lazyload"
 src="https://taetaetae.github.io/svg/loading.min.svg"
 data-src="https://taetaetae.github.io/images/apache-408-response-code/200vs400.png"
 data-srcset="https://taetaetae.github.io/images/apache-408-response-code/200vs400.png, https://taetaetae.github.io/images/apache-408-response-code/200vs400.png 1.5x, https://taetaetae.github.io/images/apache-408-response-code/200vs400.png 2x"
 data-sizes="auto"
 alt="/images/apache-408-response-code/200vs400.png" />
 &lt;/a>&lt;figcaption class="image-caption">주황색이 408응답&lt;/figcaption>
 &lt;/figure>
&lt;p>그럼 이런 호출들은 도대체 뭘까? 천천히 생각좀 해보자.&lt;/p>
&lt;ol>
&lt;li>정상적이지 않는 호출로 우리 서버의 취약점을 파악하려 하는것들일까?&lt;/li>
&lt;li>응답코드 408은 요청시간초과 응답코드인데&amp;hellip; 오히려 클라이언트 입장에서 문제가 있는건 아닐까?&lt;/li>
&lt;li>어플리케이션 로직이 잘못되어 무한루프에 빠졌나;&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes" target="_blank" rel="noopener noreffer ">위키백과&lt;/a>에서는 아파치 응답코드 중 &lt;code>408&lt;/code>에 대한 응답을 다음과 같이 알려주고 있다.&lt;/p>
&lt;blockquote>
&lt;p>The server timed out waiting for the request. According to HTTP specifications: &amp;ldquo;The client did not produce a request within the time that the server was prepared to wait. The client MAY repeat the request without modifications at any later time&lt;/p>&lt;/blockquote>
&lt;p>즉, 아파치 단에서 타임아웃을 내버리는 상황. 여러 다양한 키워드들로 구글링을 해봐도 이렇다할 검색결과를 찾지 못하고 네트워크 관련상황인지 싶어 크롬 개발자도구를 열어 네트워크 지연 테스트를 해보았으나 별 효과가 없었다. 그렇게 범인찾는 형사의 심정으로 이것저것 알아보다 우연히 집에서 원격으로 회사 VPN 붙어서 테스트 하던도중 관련 증상을 재현 할수 있게 되었다.&lt;/p>
&lt;h3 id="-재현상황"># 재현상황&lt;/h3>
&lt;p>우선 아파치버전은 2.2이고 &lt;code>KeepAlive Off&lt;/code>가 되어있는 상황. 아래그림처럼 집PC - 공유기 - VPN - Apache - tomcat jenkins 상황이였는데 젠킨스에 한번 접속후에는 항상 408 응답이 주루룩(?) 발생하는것을 알수 있었다. (사실 맨위에 엑세스 로그가 재현한 엑세스 로그이다.)&lt;/p></description></item></channel></rss>