내 서버가 프록시로 사용되고 있거나 악의적인 요청을 하고 있습니까?

내 서버가 프록시로 사용되고 있거나 악의적인 요청을 하고 있습니까?

AWS EC2에 Ubuntu, Apache, Passenger 및 Rails 4 프로젝트가 있습니다.

저는 풀 스택 개발자이며 프로젝트의 보안 및 서버 측을 처음 접했습니다. Ubuntu와 Apache를 처음 설정하는 것이며 이전에 Heroku를 사용해 본 적이 있습니다.

최근 "사용자가 너무 많아서" 사이트가 다운되었기 때문에 사이트를 확인했을 때

tail -f log/production.log

나는 임의의 IP로부터 내 홈 페이지에 대한 지속적인 GET 요청을 받고 있음을 발견했습니다. 요청이 멈추지 않고 계속해서 내 서버에 넘쳐납니다.

I, [2015-04-02T16:38:47.692152 #11851]  INFO -- :   Rendered layouts/_google_analytics.html.erb (0.1ms)
I, [2015-04-02T16:38:47.692709 #11851]  INFO -- : Completed 200 OK in 9ms (Views: 8.6ms | ActiveRecord: 0.0ms)
I, [2015-04-02T16:38:49.073504 #11851]  INFO -- : Started GET "/" for 54.252.254.204 at 2015-04-02 16:38:49 +0000
I, [2015-04-02T16:38:49.077260 #11851]  INFO -- : Processing by HomeController#home_page as */*
I, [2015-04-02T16:38:49.084489 #11851]  INFO -- :   Rendered home/_sign_up_modal.html.erb (1.6ms)
I, [2015-04-02T16:38:49.084799 #11851]  INFO -- :   Rendered home/home_page.html.erb within layouts/application (6.2ms)
I, [2015-04-02T16:38:49.085349 #11851]  INFO -- :   Rendered /home/ubuntu/.rvm/gems/ruby-2.1.5/gems/stripe-rails-0.3.1/app/views/stripe/_js.html.erb (0.1ms)
I, [2015-04-02T16:38:49.086550 #11851]  INFO -- :   Rendered layouts/_google_analytics.html.erb (0.0ms)
I, [2015-04-02T16:38:49.087121 #11851]  INFO -- : Completed 200 OK in 10ms (Views: 8.8ms | ActiveRecord: 0.0ms)
I, [2015-04-02T16:38:50.166665 #11851]  INFO -- : Started GET "/" for 107.23.255.12 at 2015-04-02 16:38:50 +0000
I, [2015-04-02T16:38:50.169943 #11851]  INFO -- : Processing by HomeController#home_page as */*
I, [2015-04-02T16:38:50.176601 #11851]  INFO -- :   Rendered home/_sign_up_modal.html.erb (1.4ms)
I, [2015-04-02T16:38:50.176924 #11851]  INFO -- :   Rendered home/home_page.html.erb within layouts/application (5.5ms)
I, [2015-04-02T16:38:50.177425 #11851]  INFO -- :   Rendered /home/ubuntu/.rvm/gems/ruby-2.1.5/gems/stripe-rails-0.3.1/app/views/stripe/_js.html.erb (0.1ms)

내 서버가 프록시로 사용되고 있습니까, 아니면 공격을 받고 있습니까? 이런 일이 더 이상 발생하지 않도록 하려면 어떻게 해야 합니까?

나는 사용하려고이 가이드하지만 보시다시피내 다른 게시물, 유효한 요청을 포함하여 모든 요청을 중지하는 것 외에는 성공하지 못했습니다.

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
  ServerName ec2-54-###-###-##.us-west-2.compute.amazonaws.com
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /etc/projects/myapp/public

    <Directory /etc/projects/myapp/public>
            #Options FollowSymLinks
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride All
            Order deny,allow
            Allow from all
    </Directory>
  </VirtualHost>

도와주세요! 제가 제공한 용어나 정보가 부족했다면 사과드립니다. 앞으로도 더욱 좋은 정보와 안내를 드릴 수 있도록 노력하겠습니다.

답변1

이것은 어려운 상황입니다. 이러한 요청은 악성 패턴과 일치하는 것으로 보이므로 서버에서 악의적인 요청을 하는 IP를 차단해야 합니다.

요즘에는 이를 수행할 수 있는 모든 종류의 고급 하드웨어가 있습니다. 이 작업을 수행할 수 없는 경우 방화벽 규칙이나 아파치 규칙을 수동으로 생성하여 특정 IP의 요청을 무시하거나 차단할 수만 있습니다.

서버 리소스의 경우 아파치보다 방화벽을 차단하는 것이 좋습니다. tcpdump를 사용하면 서버를 공격하는 모든 IP를 볼 수 있습니다. 예를 들어 다음과 같습니다.

tcpdump -nn 포트 80 | awk '{print$3}' | '{Print $1,$2,$3,$4}' |abcd를 읽을 때 echo $a.$b.$c.$d >> newlist.txt를 실행합니다.

*포트 443에 대해 동일한 작업을 실행할 수 있습니다.

중지할 때까지 실행되며 서버에 액세스하는 모든 IP를 파일로 덤프합니다. 그런 다음 다음과 같이 실행하십시오.

고양이 새 list.txt 정렬 |

이제 첫 번째 oneliner를 실행했을 때 각 IP가 서버에 액세스한 횟수를 보여주는 정렬된 목록이 있습니다. 이를 통해 자신에게 악의적인 요청 수를 결정할 수 있으며, 이를 몇 번 실행하면 위반자를 쉽게 식별할 수 있습니다. 이제 이러한 IP를 가져와 방화벽에서 차단해야 합니다.

이는 DDOS를 방어하는 잔인하고 어려운 방법입니다. 누군가 당신을 심하게 공격하면 작동하지 않지만, 이 경우 서버가 충돌할 수 있습니다.

멋진 네트워크 하드웨어가 없으면 공격으로부터 실제로 막을 수 있는 방법이 없습니다. 그러나 이러한 원칙을 사용하면 최소한 방화벽의 규칙 한계에 도달할 때까지 자신을 보호할 수 있습니다. 이런 경우 개인별로 차단하기보다는 범위별로 차단하세요. 보고 있다https://www.arin.net/Google을 사용하면 운이 좋으면 대부분의 클릭이 특정 지역에서 발생한다는 것을 알 수 있습니다.기침러시아, 중국, 동유럽기침이 경우 서버 성능이 저하되거나 사이트에 도난당할 수 있는 귀중한 정보가 있는 경우 전체 영역을 차단하는 것이 좋습니다.

관련 정보