필요 없는 파일을 정리하여 보안 강화

웹서버 폴더 내의 파일들을 확인했을 때
현재 운영중인 board(게시판) 폴더를 제외하면
사용하고 있지 않은 불필요한 파일들이 존재하므로
이 파일들을 제거해주는 것이 안전합니다.

또한 서버에 저장되어 있는 파일들은
유추하기 어려운 이름을 사용하는 것이 보안에 유리합니다.
웹서버에 사용 가능한 메서드 제한

curl -i -X OPTIONS http://localhost
로 웹 서버의 정보를 확인한 결과
사용 가능한 메서드 방식이 GET,POST,OPTIONS,HEAD로 확인되었습니다.
GET,POST는 웹서버에 꼭 사용되어야 하는 메서드이므로 둘을 제외한
나머지 메서드는 차단하도록 설정하여 보안을 강화할 수 있습니다.
gedit /etc/apache2/apache2.conf
# 170라인부터 수정
<Directory /var/www/>
Options Indexes
AllowOverride None
Require all granted
</Directory>
의 사이에 구문 추가
<Directory /var/www/>
Options Indexes
AllowOverride None
Require all granted
<LimitExcept GET POST>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
# 마지막 라인에 구문 추가
TraceEnable Off


이후 apache2 데몬을 재실행하여 다시 메서드를 확인한 결과
OPTIONS 메서드가 차단되어 정보를 제대로 확인할 수 없는것을 확인할 수 있습니다.
웹 방화벽 설치
ModSecurity & OWASP 탐지 룰 설정을 통하여
웹에서만 작동하는 방화벽을 구축할 수 있습니다.
ModSecurity 설치 및 설정
apt install -y libapache2-mod-security2
cd /etc/modsecurity/
ll

# 환경설정 기본값 복사
cp modsecurity.conf-recommended modsecurity.conf

gedit modsecurity.conf
# 7라인 구문 수정
SecRuleEngine On
# On = 탐지 및 차단 활성화
# DetectionOnly = 탐지만 활성화
# Off = 해제
이후 apache2 데몬을 재시작
Ex) 방화벽 설정 전 후로
http://웹서버IP/index.html?exec=/bin/bash로 파라메터 값을 주며 접근 할 경우

방화벽 설정 전에 접근하려 할 경우
파라메터 값의 전달을 시도해도 문제없이 서버에 접근할 수 있음을 확인할 수 있습니다.


방화벽 설정 완료 후 접근하려 할 경우
웹 서버 자체에는 문제없이 접근 가능하나
파라메터 값을 넣으려 시도하면 차단되어 접속되지 않음을 확인할 수 있습니다.
방화벽 로그 확인
cd /var/log/apache2
cat modsec_audit.log
/var/log/apache2/modsec_audit.log 파일에 방화벽이 차단한 요청의 로그가 저장됩니다.
테스트를 위해 Brute Force 방식으로 게시판을 공격해 보겠습니다.



Brute Force 공격을 수행해본 결과
공격이 제대로 수행되지 않으며 방화벽에서 차단되어
access.log
error.log
modsec_audit.log
로그가 계속해서 쌓이는 것을 확인하였습니다.

내용 확인 결과 공격을 수행했던 Kali Linux의 IP나 접근한 페이지 경로,
클라이언트(공격자)에게 보낸 메시지 등을 확인할 수 있습니다.
