Apache access.log
Apache Access Log는 Apache 웹 서버에서 발생한 HTTP 요청에 대한 로그 정보를 기록하는 파일
웹 서버의 활동을 추적하고 모니터링하기 위해 사용하며, 서버 관리, 분석 및 보안 목적으로 활용
IP 주소 및 호스트
설명: 클라이언트의 IP 주소 및 호스트 이름을 기록
활용: 특정 클라이언트의 액세스 패턴을 파악, 국가/지역별 액세스 추적
시간 및 일자
설명: 요청이 발생한 시간과 날짜를 기록
활용: 특정 시간대의 트래픽 패턴을 파악, 서버 부하 및 활동 분석에 활용
HTTP 메서드 및 URI
설명: 클라이언트가 사용한 HTTP 메서드(GET, POST 등)와 요청한 URI를 기록
활용: 어떤 리소스에 대한 액세스가 많은지, 특정 페이지의 인기도 등을 파악하는 데 사용
상태 코드
설명: 서버에서 반환된 HTTP 응답 상태 코드를 기록
활용: 요청이 성공적인지 여부, 에러 유형, 웹사이트의 성능 등을 평가하는 데 사용
전송된 데이터 양
설명: 클라이언트로부터 서버로 전송된 데이터의 양과 서버로부터 클라이언트로 전송된 데이터의 양을 기록
활용: 트래픽 양을 모니터링하고, 대역폭 사용량 및 성능 이슈를 추적하는 데 사용
1. Access.log 포맷 확인
Access.log 포맷 확인
access.log의 기본 포맷 형태
77.246.102.95 - - [04/Feb/2024:07:20:05 +0900] "GET /?page_id=1220 HTTP/1.0" 404 5903 "https://www.zino.kr/?page_id=1220" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36" 42.202.17.144 - - [04/Feb/2024:07:20:27 +0900] "GET / HTTP/1.1" 200 43822 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" ... ...
2. cat, awk 활용
$ cat access.log|awk '{print $1}' | head -n 10
실행 결과
3. sort, uniq 활용
$ cat access.log|awk '{print $1}'|sort -n | uniq -c
실행 결과
sort -n (데이터 솔팅) -> uniq -c (연속된 데이터 개수 확인)
연속되는 IP 개수(행)이 몇 개인지 확인 가능
+ sort -rn
명령어를 통해 내림차순으로 정렬 가능
4. head 활용
$ cat access.log|awk '{print $1}'|sort -n | uniq -c | sort -rn | head -n 10
실행 결과
sort -n (데이터 솔팅) -> uniq -c (연속된 데이터 개수 확인)
-> sort -rn (내림차순 정렬) -> head -n 10 (상위 10개 값 추출)
5. IP 차단
악성으로 판단되는 IP의 경우 apache .htaccess 파일에 직접 추가하여 IP차단 가능
코드
.htaccess 설정파일 하단 작성 RewriteCond %{REMOTE_ADDR} ^182.43.31(.)128$ RewriteRule ^ - [F]
.htaccess 파일 수정