일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- textfield
- scroll
- 앱바
- viewmodel
- ScrollView
- appbar
- livedata
- 안드로이드
- CustomScrollView
- intent
- Button
- textview
- Compose
- 테스트
- Dialog
- binding
- Coroutines
- 계측
- Kotlin
- drift
- LifeCycle
- Navigation
- Flutter
- DART
- data
- TEST
- tabbar
- android
- activity
- 앱
- Today
- Total
Study Record
[리눅스 서버보안] WAF - ModSecurity Rule 본문
/etc/httpd/conf.d/mod_security.conf 설정 파일 룰 정의
SecRuleEngine On | Off | DetectionOnly
☞ ModSecurity 기능을 활성화 시킨다.
SecRuleEngine On : ModSecurity 기능 활성화
SecRuleEngine Off : ModSecurity 기능 비활성화
SecRuleEngine DectectionOnly : 활성화는 하지만 차단하지 않고 탐지만 한다.
SecAuditEngine On | Off | RelevantOnly
☞ 감사 로깅에 대한 설정을 구성한다.
SecAuditEngine On : 모든 트래젝션 로깅
SecAuditEngine Off : 모든 트랜젝션 로깅하지 않음
SecAuditEngine RelevantOnly : Error 또는 Warning의 트랜젝션, 그리고 SecAuditLogRelevantStatus에 정의된 상태코드와 일치하는 트렌젝션만 로깅
SecAuditLogRelevantStatus REGEX
☞ 감사로깅의 목적과 관련된 response 상태코드의 값을 설정한다. 매개변수에는 정규표현식이 들어간다.
SecAuditLogRelevantStatus "^(?:5|4(?!04))"
SecAuditLog /var/log/httpd/modsec_audit.log
☞ 감사 로그 파일의 경로를 정의한다.
SecAuditLog "/path/modsec-auditlog-collector.pl /path/SecAuditLogDataDir /path/SecAuditLog"
SecAuditLog /var/log/httpd/modsec_audit.log
※ 이 파일은 root 사용자만 접근이 가능해야 하며, 다른 사용자들은 접근이 불가능해야 한다. 지정된 로그 파일에는 Serial 방식의 로킹 형태에 사용된다. 만약 concurrent 방식의 로깅 형태라면, 이파일은 로그의 Index로 쓰여지게 되며, 모든 감사로그에 대한 파일이 생성되면서 그 기록을 포함하게 된다.
SecAuditLogType Serial | Concurrent
☞ 감사로깅 구조의 타입을 설정한다.
SecAuditLogType Serial : 모든 로그는 메인 로그파일에 저장된다. 하나의 파일에만 기록되기 때문에 느려질 수 있다.
SecAuditLogType Concurrent : 로그가 각 트랜젝션 별로 나누어 저장된다. 이 방식은 로그파일을 원격 ModSecurity Console Host로 보낼 때 사용하는 방식이다.
SecAuditLogParts ABIJDEFHZ
☞ 로그 파일에 기록할 항목을 정의한다.
SecAuditLogParts ABIJDEFHZ
※ 로그 파일에 기록할 항목 의미
Parts | 내 용 |
A | (필수) audit log header |
B | request header |
C | request body(request body가 존재하고 modsecurity가 request body를 검사하도록 설정되어 있는 경우에만) |
D | response header의 중개 |
E | response body 중간 단계(현재 modsecurity가 response body를 검사하며 감사 로깅 엔진이 이를 저장하게 설정되어 있는 경우에만) |
F | 최종 response header(마지막 컨텐츠 전달 과정에서 아파치에 의해 매번 추가되는 날짜와 서버 헤더를 제외한) |
G | 실제 response body |
H | 감사 로그 트레일러 |
I | 이 옵션은 C를 대체하는 옵션이다. multipart/form-data 인코딩이 사용되었을 때를 제외한 모든 경우에 C와 같은 데이터를 기록한다. |
J | 이 옵션은 multipart/form-data 인코딩을 사용하는 파일 업로드에 대한 정보를 포함할 때 효과가 있다. |
Z | (필수) 로그의 끝을 의미한다. |
SecRequestBodyAccess On | Off (mod_security.conf)
☞ Request 값에서 Body 부분에 대한 처리를 어떻게 할 것인지 구성한다.
SecRequestBodyAccess On : RequestBody 를 검사한다.
SecRequestBodyAccess Off : RequestBody 를 검사하지 않는다.
※ Request 값에서의 POST_PAYLOAD를 검사할 때 필요하다.
SecRequestBodyLimit 13107200 (mod_security.conf)
☞ ModSecurity가 Request Body 크기로 할당할 수 있는 메모리 최대 크기를 설정한다. 131072KB (134217728 bytes)가 기본값이다.
SecRequestBodyLimit 13107200
SecReponseBodyAccess On | Off (mod_security.conf)
☞ Response 값에서 Body 부분에 대한 처리를 어떻게 할것인지 구성한다.
SecReponseBodyAccess On : ResponseBody 접근을 시도한다. (그러나 MIME 타입과 일치해야만 한다.)
SecReponseBodyAccess Off : ResponseBody 접근 시도를 하지 않는다.
SecResponseBodyLimit 524228 (mod_security.conf)
☞ ModSecurity가 Response Body 크기로 할당할 수 있는 메모리 최대 크기를 설정한다. 이 값을 넘어가면 서버는 500 내부 서버 오류 메시지만 표시할 것이다.
SecRequestBodyLimit 524228
SecDebugLog /var/log/httpd/modsec_debug.log (mod_security.conf)
☞ ModSecurity의 디버그 로그의 경로를 설정한다.
SecDebugLog /var/log/httpd/modsec_debug.log
SecDebugLogLevel 0|1|2|3|4|5|6|7|8|9 (mod_security.conf)
☞ 디버그 로그의 상세 수준을 결정한다. 레벨 5가 디버깅에 가장 유용하며, 그 이상은 서버의 성능을 저하시키기 때문에 권장하지 않는다.
SecDebugLogLevel 0
※ 디버그 로그 레벨
Level | 설명 |
0 | 로깅하지 않는다. |
1 | 에러만(요청값) 로깅(Error) |
2 | 경고 수준(WARNING) |
3 | 공지 수준(NOTICE) |
4 | 트랜젝션의 처리과정 상세 |
5 | 4와 동일하나 각 처리의 부분별 정보가 포함 |
9 | 모두 로깅, 디버깅 정보를 상세히 포함 |
SecDataDir /var/lib/mod_security
☞ 영구적 데이터를 저장할 경로를 지정한다.(IP 주소, 세션값 등) 이 지시자는 initcol, setsid, setuid가 사용될 때 필요하다. 반드시 웹서버 사용자에 의해 쓰기가 가능해야 한다.
SecDataDir /var/lib/mod_security
SecTmpDir /var/lib/mod_security
☞ 임시 파일이 생성될 디렉토리를 설정한다. 아파치 사용자 프로세스에 의해 쓰기가 가능해야 한다.
SecTmpDir /var/lib/mod_security
※ 이 디렉토리는 검사가 진행되는 동안 아파치가 메모리가 부족할 때 디스크를 스왑하기 위한 영역이다. 메모리 크기는 SecRequestBodyInMemryLimit 지시자에 의해 설정된 크기이다.
'서버보안 > 리눅스 서버보안' 카테고리의 다른 글
[파이썬] 알고리즘 라이브러리 (0) | 2022.03.02 |
---|---|
[리눅스 서버보안] WAF - ModSecurity install (0) | 2022.01.06 |
[리눅스 서버보안] DVWA 설치하기 - Centos 7 (0) | 2022.01.05 |
[리눅스 서버보안] LOIC(Low Orbit Ion Cannon) 설치 (0) | 2021.12.29 |
[리눅스 서버보안] Dos / DDos 와 공격 방식 - hping3 (0) | 2021.12.28 |