본문 바로가기
서버인프라/crowdsec

CrowSec expiration 조정과 scenarios

by techwold ted 2023. 9. 28.

난번 알아본 것과 같이 왜 4시간동안 잠기는 것인가에 대해 알아볼 필요가 있습니다.

crowdsec의 profiles.yaml 파일을 살펴보고 이와 연관된 시나리오를 확인하여 crowdsec의 동작 방식을 이해합니다.
어렵지 않습니다. 그냥 한번 읽어보시고 사용해보면 누구나 할 수 있습니다. 
하느냐 하지 않느냐 그 차이만 존재할 뿐 입니다.
name: default_ip_remediation
#debug: true
filters:
 - Alert.Remediation == true && Alert.GetScope() == "Ip"
decisions:
 - type: ban
   duration: 4h
#duration_expr: Sprintf('%dh', (GetDecisionsCount(Alert.GetValue()) + 1) * 4)
# notifications:
#   - slack_default  # Set the webhook in /etc/crowdsec/notifications/slack.yaml before enabling this.
#   - splunk_default # Set the splunk url and token in /etc/crowdsec/notifications/splunk.yaml before enabling this.
#   - http_default   # Set the required http parameters in /etc/crowdsec/notifications/http.yaml before enabling this.
#   - email_default  # Set the required email parameters in /etc/crowdsec/notifications/email.yaml before enabling this.


위 내용을 확인해 보면

decisions:
 - type: ban
   duration: 4h


decisions에 있는 duration의 내용이 4h 으로 되어있습니다. 기본적으로 차단되는 시간이 4시간으로 된다는 것입니다.
이 시간을 줄이거나 늘리게 되면 얼마던지 변화를 가져갈 수 있고, 개인이나 기업이 규칙적으로 기준을 적용 할 수 있습니다.


leakspeed는 얼마 안에 반응할때를 얘기 합니다.
보통 우리가 한번 SSH 접속을하면 3회정도 패스워드를 물어보게 되어 있습니다.
이 3번을 틀리고 나면  Crowdsec에서는 3회를 기록하고 있습니다. 그리고 다시 leakspeed 시간 안에 즉 10초 안에 capacity 6회가 발생하면 해당 설정을 참조하여 차단 정책이 발생하면서 더이상 접속 할 수 없게 됩니다. 즉 capacity의 값은 5회를 최과 해야 발생한다는 뜻 입니다. 여기서 테스트 할 몇가지 시나리오가 있습니다.

 

leakspeed: "10s"
capacity: 5
blackhole: 1m


1. Leakspeed를 피해서 테스트를 해보자

  • ssh 접속을 하고 3회를 테스트 합니다. 그리고 다시 10초 후 접속시도 패스워드 실패를 3회 하면 어떻게 될까요?
  • 차단 되지 않습니다. 컨피그의 내용은 10초 안에 발생하는 횟수이기 때문에 악의적으로 3회 테스트하고 10초뒤에 다시 3회 테스트하는 이런 방식을 가져간다면 무한대로 할 수 있습니다.
  • Leakspeed너무 큰 값으로 하는 것도 문제 이지만 작은 값으로 하는 것도 문제가 될 것입니다. 이점에 유의해서 설정 하시길 바랍니다.


2. 그럼 얼마던지 공격을 받을수 있는것 아닌가???

  • 하지만 위의 공격시나리오를 보안할 수 있는 정책역시 CrowdSec은 가지고 있습니다. 조금더 알아보겠습니다.위의 정책 내용은 ssh-bf의 정책이였습니다. 하지만 위에서 얘기한 바와 같이 저런 테스트 방법으로 피해갈 수 있습니다. 이것을 보안하기 위해서 slow-bf 즉 느리게 동작하는 것을 차단하는 시나리오가 존재합니다.
leakspeed: "60s"
capacity: 10
blackhole: 1m

 

3. 그럼  blackhole역할은?

  • blackhole: 1m은 다음과 같습니다. 해당 시간이 지나면 기존에 있던 공격에  대해서 무효화 하는 것 입니다. 그러니까 1분 후에 다시 시작한다면 ssh-slow-bf / ssh-bf이던 둘 다 무효가 되는 것입니다. 다시 초기화 되는 시간을 의미 합니다.

 

위와 같은 시나리오 인데요, 위 시나리오는 10초가 지나서 11초에 다시 시작하고 다시 10초 쉬고 진행하고를 반복한다면 60초 안에는 10회가 발생하기 때문에 다시 차단이 발생 합니다. 위 시나리오에 차단이 발생하게 되면. Reason : crowdsecurity/ssh-slow-bf 으로 나타 납니다. 기존에는 crowdsecurity/ssh-bf 로 발생 한 것과는 다른 시나리오로 차단이 발생함을 알게 되었습니다. 위와 같은 2가지의 시나리오를 이용하여 SSH-Bruteforce공격을 방어 할 수 있습니다.

가장 좋은건 외부 노출을 막는 것이겠죠, 그리고 최대한 접속을 자제하게 하는 방법, 또한 SSL VPN 을 이용하는 방법이 있습니다.하지만 이또한 취약점은 존재 하기에 상호 보완할 수 있는 솔루션을 잘 이용하는 것도 바람직 하댜고 생각 됩니다.

'서버인프라 > crowdsec' 카테고리의 다른 글

Crowsec을 통한 SSH Brute Force 방어  (0) 2023.09.20
CrowdSec 을 사용해보자  (29) 2023.09.19

댓글