10 분 동안 파충류 문제 해결!초 경량급 파충류 반대 방안

8897 단어 nginxlinux
파충류 와 반 파충류 가 갈수 록 모든 회사 의 표준 시스템 이 되 고 있다.파충 류 는 정보 획득, 허위 데이터, 동태 적 인 가격 책 정, 악의 적 인 공격, 양 모 를 뽑 는 데 모두 관건 적 인 역할 을 하기 때문에 모든 회사 가 어느 정도 파충 류 를 개발 해 야 하고 업계 가 이 분야 에서 성숙 한 방안 도 매우 많다.창 이 있 으 면 방패 가 있 고 모든 회사 도 이에 상응하는 반 파충류 시스템 으로 데이터 보호, 시스템 안정성 보장, 경쟁 우 위 를 유지 하 는 목적 을 달성 해 야 한다.
그러나 한편 으로 는 방어 라 는 ROI 가 잘 나타 나 지 않 고 다른 한편 으로 는 파충류 와 같은 시스템 은 상대 적 으로 간단 한 파충류 에 비해 난이도 와 복잡 도가 매우 높 기 때문에 빅 데이터 솔 루 션 이 있어 야 일 을 잘 할 수 있 기 때문에 소량의 회사 만 이 돌아 다 닐 수 있다.문제 가 생 겼 을 때 많은 회사 들 이 속수무책 으로 당 하 는 경우 가 많다.
본 고 는 가능 한 한 간단 한 반 파충류 방안 을 묘사 하여 십 여 분 안에 일부 간단 한 파충류 문 제 를 해결 하고 악의 적 인 공격 이나 시스템 과부하 운행 상황 을 완화 할 수 있다.복잡 한 파충류 와 더 정확 한 방 어 는 따로 논의 해 야 한다.
전체 방안 은 가능 한 한 간단 하고 이해 하기 쉬 우 며 전문 적 인 프로그램 개발 과 관련 되 지 않 을 뿐만 아니 라 기 존의 구성 요 소 를 최대한 이용 하여 추가 구성 요소 의 도입 을 피 할 것 이다.내용 상 으로 는 주로 세 부분 으로 나 뉜 다.
  • 액세스 데이터 획득.사용자 의 방문 데 이 터 를 수집 하여 파충류 분석 을 위 한 데이터 원본
  • 파충류 봉쇄.파충 류 를 찾 으 면 후속 방문 을 차단 할 방법 을 강구 하 라
  • 파충류 분석.예 를 들 어 간단 한 전략 을 통 해 파충류
  • 를 분석 했다.
    간단 한 데이터 획득
    데이터 획득 은 반 파충류 시스템 을 잘 하 는 관건 이 고 흔히 볼 수 있 는 몇 가지 모델 이다.
    이 편 은 nginx 로그 방식 을 사용 합 니 다. 일반적인 nginx 에 대한 가장 간단 한 설정 을 통 해 원 격 으로 접근 로 그 를 가 져 올 수 있 습 니 다.
    공식 nginx 설정:
    log_format warden '" "$remote_addr" "$remote_port" "$server_addr" "$server_port" "$request_length" "$content_length" "$body_bytes_sent" "$request_uri" "$host" "$http_user_agent" "$status" "$http_cookie" "$request_method" "$http_referer" "$http_x_forwarded_for" "$request_time" "$sent_http_set_cookie" "$content_type" "$upstream_http_content_type" "$request_body"
    '; access_log syslog:server=127.0.0.1:9514 warden ;

    tengine 설정 (컴 파일 할 때 -- with - syslog)
    log_format warden '" "$remote_addr" "$remote_port" "$server_addr" "$server_port" "$request_length" "$content_length" "$body_bytes_sent" "$request_uri" "$host" "$http_user_agent" "$status" "$http_cookie" "$request_method" "$http_referer" "$http_x_forwarded_for" "$request_time" "$sent_http_set_cookie" "$content_type" "$upstream_http_content_type" "$request_body"
    '; access_log syslog:user::127.0.0.1:9514 warden ;

    이 안에서 주의해 야 할 것 은:
  • 오래된 nginx 공식 버 전 은 syslog 를 지원 하지 않 기 때문에 tengine 은 이 기능 에 대해 단독 개발 (컴 파일 옵션 을 통 해 사용 해 야 합 니 다) 을 했 습 니 다. 불확실 한 상황 에서 설정 파일 을 수정 한 다음 (nginx - t) 을 사용 하여 테스트 하 십시오. 통과 하지 않 으 면 configure 에 syslog 옵션 을 추가 하고 컴 파일 해 야 합 니 다.
  • 파충류 와 관련 된 데이터 필드 를 가 져 왔 습 니 다. 맞 춤 형 http header 가 있 으 면 udp 방식 으로 syslog 를 보 낼 수 있 습 니 다. 방문 로 그 를 원 격 분석 서비스 에 보 낼 수 있 고 udp 방식 으로 nginx 자체 가 영향 을 받 지 않도록 보장 할 수 있 습 니 다
  • 방문 로 그 는 응답 하 는 구체 적 인 내용 을 얻 지 못 합 니 다 (nginx 는 해결 할 방법 이 있 지만 대가 가 있 습 니 다). 업무 와 관련 된 방 호 를 지원 할 수 없습니다
  • 간단 한 파충류 봉쇄
    반 파충류 의 마지막 발 효 는 합 리 적 인 금지 모델 에 의존 해 야 한다. 여기 서 몇 가지 모델 을 비교 해 보 자. 
    이 단락 은 iptables 기반 방안 을 소개 합 니 다. 적용 범위 가 작 지만;그러나 의존 도가 적 으 면 Liux 를 간단하게 설정 하면 효 과 를 얻 을 수 있 습 니 다.
    첫걸음
      ipset。ipset   iptables     ,             
    
    # centos 6.5        
    sudo yum install -y ipset
    

     
    두 번 째 단계
    iptables 에 해당 하 는 ipset 를 만들어 접근 권한 을 차단 합 니 다. 
    #        ipset
    sudo ipset -N --exist warden_blacklist iphash
    #      iptables  
    sudo iptables -A INPUT -m set --set warden_blacklist src -j DROP
    #   iptables
    sudo service iptables save
    

     
    세 번 째 단계
    현재 차단 되 어 있 는 ip 블랙 리스트 를 가 져 오고 iptables 에 가 져 옵 니 다.
    sudo ipset --exist destroy warden_blacklist_tmp; sudo ipset -N warden_blacklist_tmp iphash; echo "1.1.1.1,2.2.2.2" | tr , "
    " | xargs -n 1 -I {} sudo ipset -A warden_blacklist_tmp {} ; sudo ipset swap warden_blacklist_tmp warden_blacklist

     여기 서 가능 한 한 효율 을 높이 기 위해 다음 과 같은 일 을 했다.
  • 임시 ipset 을 구축 하여 조작 하기에 편리 하 다
  • 현재 차단 블랙리스트 에 있 는 ip 을 추출 하여 이 ipset 에 가입 합 니 다 (예시 에서 가장 간단 한 echo 로 보 여 주 었 습 니 다. 실제 조정 이 가능 합 니 다)
  • ipset 를 원자 조작 을 통 해 iptables 가 사용 하고 있 는 ipset 와 교환 하여 최소 의 대가 로 최신 블랙리스트 가 발 효 됩 니 다
  • 간단 한 파충류 전략
    파충 류 를 정확하게 분석 하려 면 강력 한 데이터 분석 플랫폼 과 규칙 엔진 이 필요 하 다. 이 IP / 장치 / 사용자 가 각각 짧 은 시간 구간 / 장시간 범위 에서 의 행위 특징 과 궤적 을 분석 하려 면 매우 복잡 한 데이터 시스템 개발 과 관련 되 는데 본 고 는 간단 한 셸 스 크 립 트 를 통 해 비교적 간단 한 규칙 을 설명 할 것 이다.
    예 1, 최근 100000 개 중 5000 개가 넘 는 ip 차단
    nc -ul 9514 | head -100000 | awk -F '" "' '{print $2}' | sort | uniq -c | sort -nr | awk '$1>=5000 {print $2}'
    

    이 안:
  • udp 서 비 스 는 nginx 가 보 낸 syslog 메 시 지 를 감청 하고 10000 개 를 가 져 와 각 방문 기록 의 ip
  • 을 찾 습 니 다.
  • sort 와 유 니 크 를 통 해 각 ip 이 나타 나 는 횟수 를 얻 고 내림차 순 배열
  • awk 를 통 해 한도 값 을 초과 한 ip 을 찾 으 면 우리 가 필요 로 하 는 결 과 를 얻 을 수 있 습 니 다.

  • 예 2, 최근 100000 개 중 user 에이전트 를 차단 하 는 것 은 프로그램의 ip 임 이 분명 합 니 다.
    nc -ul 9514 | head -100000 | awk -F '" "' '$10 ~ /java|feedly|universalfeedparser|apachebench|microsoft url control|python-urllib|httpclient/ {print $2}' | uniq
    이 안:
  • awk 의 정규 를 통 해 문제 에이전트 를 걸 러 내 고 해당 ip 출력
  • 에이전트 에 대한 정규 표현 식 은 부분 을 열거 하여 실제 상황 에 따라 조정 하고 축적 할 수 있 습 니 다
  •  
    물론 간단 한 예 만 들 었 을 뿐 부족 한 점 이 많다.
  • 셸 만 사용 하기 때문에 규칙 이 비교적 간단 하기 때문에 awk 또는 다른 언어 를 확장 하 는 방식 으로 더욱 복잡 한 규칙 을 실현 할 수 있다
  • 통계 의 창 구 는 100000 개 로 이런 통계 창 구 는 비교적 투박 하 다. 좋 은 통계 방식 은 모든 실시 간 데이터 에서 받 아야 하 는 것 은 과거의 짧 은 시간 (예 를 들 어 5 분) 에 대해 통계 계산 을 다시 하 는 것 이다
  • .
  • 실시 간 으로 부족 하여 공격 행위 에 실시 간 으로 대응 할 수 없다.생산 환경 에 서 는 고급 파충류
  • 에 대응 하기 위해 밀리초 단위 의 응답 이 필요 하 다.
  • .......

  • 맞붙다
    모든 모듈 을 조합 하여 완전한 예 를 만들다.가설:
  • 부하 균형 192.168.1.1, 공식 nginx 를 사 용 했 고 syslog 가 192.168.1.2
  • 로 보 내 는 것 을 설정 했다.
  • 192.168.1.2 nc server 를 시작 하여 일정 시간 간격 으로 분석 하여 문제 ip 를 찾아내 192.168.1.1
  • 에 게 토 합 니 다.
  • 192.168.1.1 iptables 를 통 해 막 았 고 데 이 터 는 192.168.1.2 의 분석 기계
  • 에서 기원 되 었 다.
    nginx 설정 과 iptables 기본 설정 을 제외 하고 앞의 몇 단락 의 설정 이 약간 바 뀌 었 습 니 다.
    ### nginx [email protected]
    log_format warden '" "$remote_addr" "$remote_port" "$server_addr" "$server_port" "$request_length" "$content_length" "$body_bytes_sent" "$request_uri" "$host" "$http_user_agent" "$status" "$http_cookie" "$request_method" "$http_referer" "$http_x_forwarded_for" "$request_time" "$sent_http_set_cookie" "$content_type" "$upstream_http_content_type" "$request_body"
    '; access_log syslog:server=192.168.1.2:9514 warden ;   ### @192.168.1.2, , 60 , 192.168.1.1  while true ; do nc -ul 9514 | head -100000 | awk -F '" "' '{print $2}' | sort | uniq -c | sort -nr | awk '$1>=5000 {print $2}' | tr '
    ' ',' | awk '{print $0}' | socat - UDP:192.168.1.1:9515  ; sleep 3600 ; done   ### @192.168.1.1 # sudo ipset -N --exist warden_blacklist iphash sudo iptables -A INPUT -m set --set warden_blacklist src -j DROP sudo service iptables save   # iptables while true ; do sudo ipset --exist destroy warden_blacklist_tmp; sudo ipset -N warden_blacklist_tmp iphash; socat UDP-LISTEN:9515 - | tr , "
    " | xargs -n 1 -I {} sudo ipset -A warden_blacklist_tmp {} ;sudo ipset swap warden_blacklist_tmp warden_blacklist ; sudo ipset list ; done

    이상 은 간단 한 예제 일 뿐 실제 적 으로 셸 스 크 립 트 로 바 꾸 는 것 을 권장 합 니 다. 
    총결산
    본 고 는 간단 한 반 파충류 방안 을 제시 했다. 너무 간단 하기 때문에 개념 예시 나 구급 방안 으로 삼 을 수 있다. 만약 에 더욱 심화 되 어야 한다 면 다음 과 같은 측면 에서 강화 해 야 한다.
  • 데이터 원본 을 강화 하여 유량 을 통 해 전량 의 데 이 터 를 얻 을 수 있다.현재 파충류 등 사 이 버 공격 은 업무 와 밀접 한 관 계 를 가 진 부분 으로 전환 해 돈 쪽으로 접근 하고 있 기 때문에 방문 로그
  • 뿐만 아니 라 더 많은 업무 데이터 가 필요 하 다.
  • 더욱 유연 한 차단 은 여러 가지 차단 수단 과 약간 복잡 한 차단 논리
  • 가 필요 하 다.
  • ip 을 제외 하고 사용자, 설비 지문 등 다양한 추적 방식 을 고찰 하여 이동 환경 과 ipv 6 환경 에서 'IP' 라 는 정보의 힘 에 부 응 해 야 한다
  • .
  • 규칙 엔진 과 모델 을 강화 하려 면 더 많은 사용자 행위 의 특징 을 고찰 해 야 한다. 주파수 등 수단 으로 만 바보 파충류 에 대응 하 는 동시에 오 살 률 이 더욱 높다
  • .
  • 데이터 저장, 소 원, 통계 체 계 를 구축 하여 분석 자 들 이 데 이 터 를 분석 하고 새로운 모델 과 규칙 을 구축 하 는 데 편리 하 다.반 파충 류 는 지속 적 인 행위 로 좋 은 플랫폼 이 필요 하 다.
  • 실제 수요 에 따라 반 파충류 시스템 의 통합 을 잘 할 수 있다.예 를 들 어 nginx 데이터 -- > 기어 오 르 기 시스템 -- > nginx 차단;F5 데이터 -- > 리 버스 시스템 -- > F5 차단
  • 파충류http://bigsec.com/
    저자 소개
    어찌 안 과학기술 연합 창시자, 수석 제품 기술 관 은 PayPal 의 베테랑 고급 엔 지 니 어 를 맡 았 고 신뢰 할 수 있 는 계산, 컴퓨터 바람 제어 등 분야 에서 깊이 있 는 이론 연구 와 성 과 를 얻 었 다.또한 사기 방지 와 위험 감시 업계 에서 다년간 깊 은 업무 경력 을 가지 고 분포 식 시스템 과 실시 간 빅 데이터 계산 에 뛰어나다.그 는 어찌 안 과학기술 모든 제품 라인 의 구조 와 디자인 에 참여 하여 팀 을 이 끌 어 데이터 발굴, 멀티미디어 분석, 크로스 데이터 센터 분포 식 시스템, 고성능 실시 간 빅 데이터 계산, 대량의 데이터 수집 등 분야 에서 최첨단 연구 와 제품 화 를 하여 고객 이 내부 의 안전 과 통제 문 제 를 잘 해결 하도록 도와 준다.

    좋은 웹페이지 즐겨찾기