원인 : 운영중인 웹서버로 취약점을 이용한 공격 예를들어 스크립트 업로드 시도 후 url에 <srcipt> 실행 공격 등 다수의 시도가 발생 하였습니다.
에러 : 위처럼 웹 공격으로 인하여 부하가 발생하여, 서버가 제대로 동작하지 않았습니다
해결방법 : 웹 공격에 대한 방어와, 탐지를 위하여 찾아보던 중 무료 웹방화벽 프로그램인 modsecurity를 찾게되어 설치를 진행하였습니다. 물론 유료라이센스도 존재하지만 무료 라이센스로도 충분히 기본적이고 낮은 수준의 공격은 차단이 가능 합니다.
# cd /usr/local/src
# wget https://ko.osdn.net/frs/g_redir.php?m=kent&f=mod-security%2Fmodsecurity-apache%2F2.5.6%2Fmodsecurity-apache_2.5.6.tar.gz
- 경로가 만료되었으면 구글에 modsecurity-apache_2.5.6.tar.gz를 검색하여 링크를 찾으면 됩니다
# tar xvzf modsecurity-apache_2.5.6.tar.gz
# cd modsecurity-apache_2.5.6
# ls
apache2 CHANGES doc LICENSE modsecurity.conf-minimal MODSECURITY_LICENSING_EXCEPTION README.TXT rules tools
# cd apache2
# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-httpd-src=/usr/local/src/httpd-2.2.4/ --with-libxml=/usr/\
- apxs가 설치된 경로, httpd source 파일 위치 등등 컴파일에 필요한 옵션을 경로에 맞춰서 설정해 주면 됩니다.
- apxs란 서버의 확장모듈을 컴파일하고 설치하는 도구 입니다
# make
# make install
# vi /usr/local/apache/conf/httpd.conf
LoadModule security2_module modules/mod_security2.so
- 설치한 모듈을 추가 합니다
##ModSecurity_Config
Include conf/mod_security2.conf
- /usr/local/apache/conf 아래에 mod_security2.conf 파일을 만들어서 룰셋을 지정하여 주면 됩니다
- 해당파일은 첨부 하겠습니다.
# /usr/local/apache/bin/apachectl -D DUMP_MODULES
- 모듈이 정상적으로 설치되었는지 확인 합니다
mod_security2.conf 파일의 의미
#실행여부
# on, off, DetectionOnly(mornitoring)
SecRuleEngine On
#요청본문처리
SecRequestBodyAccess Off
#응답본문처리
SecResponseBodyAccess Off
#응답본문 mime type
SecResponseBodyMimeType (null) text/html text/plain text/xml
#기본액션 설정
#SecDefaultAction "pass,log,auditlog,phase:2,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase"
#SecDefaultAction "deny,log,phase:2,status:406,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase"
#SecDefaultAction "action1,action2,action3"
#SecDefaultAction "phase:1,log,auditlog,pass"
#SecDefaultAction "phase:2,log,auditlog,pass"
#SecDefaultAction "phase:1,log,auditlog,deny"
#SecDefaultAction "phase:2,log,auditlog,deny"
#SecDefaultAction "phase:1,log,auditlog,pass,status:403"
#SecDefaultAction "phase:2,log,auditlog,pass,status:403"
SecDefaultAction "phase:1,log,deny,auditlog,status:403"
SecDefaultAction "phase:2,log,deny,auditlog,status:403"
#로그설정
SecAuditEngine On
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus "^(?:5|4\d[^4])"
SecAuditLogType Serial
SecAuditLogParts "ABIFHZ"
SecAuditLog /usr/local/apache/logs/modsec_audit_log
#기본설정
SecServerSignature "Microsoft IIS 7.0"
- 해당 부분은 서버에서 일부러 iis로 보이게 함으로써, apache 공격에 대비하는 의미에서 다르게 정보를
#응답본문크기(now 512kb)
SecResponseBodyLimit 524288
#콜렉션시간초과(수집)
SecCollectionTimeout 600
테스트
먼저 tail -f /usr/local/apache/logs/modsec_audit_log 로 로그를 살펴 봅니다
정상적으로 설치 후 예를들어 aaaa.com에 접속한다고 가정하면
ex) aaaa.com/<script>attak</script> 이렇게 입력하게 되면 화면이 403 에러가 발생되면서 로그에 해당 공격을 감지하고 접근을 차단시키는 모습을 볼수가 있습니다
문의
ollllllloaa@icloud.com
'Linux' 카테고리의 다른 글
[Linux] MySQL 계정생성 삭제, 권한부여 제거 등등 기본명령어 (0) | 2019.10.08 |
---|---|
[Linux] 한글깨짐 에러 수정 및 설명 (0) | 2019.10.08 |
[Linux] DNS Zone 파일 생성 및 설명 (0) | 2019.09.30 |
[Linux] httpd.conf 옵션 설정 한글설명 (0) | 2019.09.23 |
[Linux] OpenSSL 업데이트 Update 0.9.8e - 1.0.1e (0) | 2019.09.19 |