project

bank 대응 프로젝트 (ModSecurity 웹 애플리케이션 방화벽(WAF))

law and security 2024. 12. 9. 17:38

 
 

1. ModSecurity 설치  

sudo apt update

#ModSecurity를 설치하여 Apache에서 사용할 수 있도록 설정
sudo apt install libapache2-mod-security2

 
 

 

 

결과

  • ModSecurity 패키지가 설치
  • Apache가 ModSecurity의 기능을 사용할 준비 완료 

 

 

2. ModSecurity 활성화

 
 

#Apache에서 ModSecurity 모듈을 활성화
sudo a2enmod security2

 
 

 
결과

  • security2 모듈이 Apache에 활성화
  • ModSecurity가 요청을 모니터링할 수 있다

 
 
1) ModSecurity 설정 파일이 있는지 확인
 

ls /etc/modsecurity/

 

ModSecurity 설치 후 기본 설정 파일은 /etc/modsecurity/ 디렉토리에 위치해야 한다.
디렉토리에 파일이 없으면 기본 설정 파일을 생성할 것

 

 
결과

  • modsecurity.conf-recommended 파일이 보이는지 확인

 
 

2) modsecurity.conf 파일 생성
 
: modsecurity.conf-recommended 파일을 modsecurity.conf로 복사
 

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

 
 

 
-> modsecurity.conf 파일이 생성

 
 

3) ModSecurity 설정 파일 수정

 

#ModSecurity 설정 파일을 열고 방화벽 엔진을 활성화
sudo nano /etc/modsecurity/modsecurity.conf

#SecRuleEngine 설정 ON으로 변경하여 요청 차단을 활성화
SecRuleEngine On

 
 

 

 
 
결과

  • "탐지 모드"에서 "차단 모드"로 변경
  • 악성 요청이 실제로 차단

 

 

3. Apache 서버 재시작

 

sudo systemctl restart apache2

 

->  ModSecurity가 활성화된 상태로 동작

 

 
 

4.  ModSecurity 테스트

 

1)   Apache에 ModSecurity 모듈이 로드되었는지 확인

 
 

sudo apachectl -M | grep security2

 

 

-> security2_module이 출력되면 ModSecurity가 정상적으로 활성화된 상태

 
 


2)  테스트 및 검증 (브라우저)
 

http://your-server.com/index.php?id=1' OR '1'='1

 
 

 
 

-> 브라우저 화면:"403 Forbidden" 또는 차단 알림 메시지가 표시 ( ModSecurity가 성공적으로 작동 중)

 
 

  • ModSecurity가 활성화됨: 요청을 검사하고 규칙에 따라 차단
  • 규칙에 의해 SQL 인젝션 탐지: OWASP Core Rule Set(CRS) 또는 기본 ModSecurity 규칙이 요청을 차단
  • 웹 애플리케이션 보호: SQL 인젝션 공격이 서버에서 처리되지 않고 차단

 
 
 
3)  테스트 및 검증 (로그분석)
 

# Apache의 로그 파일(/var/log/apache2/error.log)을 확인하여 ModSecurity가 요청을 차단했는지 확인

sudo tail -f /var/log/apache2/error.log

 
 

 
 
1. SQL Injection 탐지
 

  • detected SQLi using libinjection:  ModSecurity는 libinjection을 사용하여 SQL Injection 공격을 탐지
  • Fingerprint: s&sos : 공격 패턴에 대한 고유 식별자
  • 규칙 파일: REQUEST-942-APPLICATION-ATTACK-SQLI.conf
  • 규칙 ID: 이 규칙은 SQL Injection 공격을 탐지하는 데 사용 (942100)

 
2. 차단된 요청
 

  • Access denied with code 403: ModSecurity가 공격을 탐지하고 HTTP 403 응답을 반환
  • 규칙 파일: REQUEST-949-BLOCKING-EVALUATION.conf.
  • 규칙 ID:Inbound Anomaly Score를 평가하는 규칙 (949110:)

 
3. 세부정보

  • Total Score: 5 (요청이 평가된 위협 점수. 5점 이상이면 기본적으로 차단)
  • SQL Injection: 5점 (탐지됨) / XSS, RFI, LFI, 등 다른 공격 유형은 감지되지 않음

 
4. 요청 정보 
 

  • Hostname: megabank.store
  • URI: /index.php (요청된 URL에 대해 SQL Injection 탐지가 이루어졌다)

 
 

결론: ModSecurity가 정상적으로 동작 중

  1. ModSecurity가 공격 탐지:
    • SQL Injection이 감지 (942100 규칙).
  2. 공격 차단:
    • Anomaly Score 5로 판단되어 요청이 차단되고, HTTP 403 응답이 반환
  3. 로그 기록:
    • Apache 로그에 탐지된 공격과 관련된 모든 정보가 기록

 

'project' 카테고리의 다른 글

법과 기술적 관점  (1) 2024.12.20
시스템보안  (0) 2024.12.10
bank 대응 프로젝트 ( HTTPS 리다이렉션)  (0) 2024.12.09
OWASP ZAP과 Nikto의 스캔 결과를 CSV 파일로 자동 변환 과정  (0) 2024.12.06
wapiti  (0) 2024.11.12