[Linux] access_log 분석[220.23.175.93]

access_log 분석을 통해 웹 로그가 들어오는 것을 파악.

✅ access_log 분석 기본

httpd.conf에 이미 설정되어 있는 값에 대한 필드 분석.

www.domain.com $1  211.243.123.105$2 - - [24/Mar/2017:10:35:16$5 +0900]$6 "GET$7 /layout/header/default/image/header_img_01.png$8
 HTTP/1.1"$9(접속방식)  200$10(요청에대한 상태-403등등) 1103$11(용량) "https://gddfca.or.kr/index.php"$12접속 경로 "Mozilla/5.0$13 (compatible; MSIE 9.0; Windows$14 NT$15 6.1; WOW64; Trident/5.0; ; rv
 :11.0) like Gecko" KR$NF     <= $필드들은  틀릴  있음. 

✅ 명령어 조합을 통한 access_log 분석

cat /usr/local/apache/logs/access_log | grep '\[07/Jul/2021' | awk '{print $2, $NF}' | sort -r  | uniq -c | sort -r  | head 

cat /usr/local/apache/logs/access_log-20201007 | grep '\[01/Sep' | awk '{print $2, $NF}'  | grep KR | wc -l 
cat /usr/local/apache/logs/access_log-20201007  | grep '\[01/Sep' |  grep -v KR  | wc -l 
cat /usr/local/apache/logs/access_log-20201007  | grep '\[01/Sep' | awk '{print $2, $NF}'    | wc -l 

1.1 access_log 분석: 날짜+시간대,  awk $IP,국가

cat /usr/local/apache/logs/access_log | grep '\[07/Jul//2021' | sed -n '/2021:10:00/,/2021:14:20/p' | awk '{print $2 , $NF}' | sort -r  | uniq -c | sort -r | head 

cat /usr/local/apache/logs/access_log | grep '\[07/Jul/2021' | sed -n '/2021:10:05/,/2020:10:13/p' | awk '{print $2, $12, $NF}' | sort -r  | uniq -c | sort -r | head

1.2 sed 시간대 활용

# 1.2.1 - sed 명령어 - 15시 00~05분까지의 시간 
sed -n  '/2021:15:00/,/2020:15:05/p' /usr/local/apache/logs/access_log | grep '\[07/Jul/2020'
# 1.2.2 위 명령어의 변형
cat /usr/local/apache/logs/access_log | sed -n '/2020:18:00/,/2020:18:05/p' > 00.txt
# 1.2.3
cat   /usr/local/apache/logs/access_log | grep '\[07/Jul/2021' | sed -n  '/2021:10:30/,/2021:14:00/p' | awk '{print  $2,  $NF}' | sort -r  | uniq -c | sort -r | head -20

1.3 [ ] 정규식 및 cut 활용

# 1.3.1 정규식 활용  
tail -n 10 /usr/local/apache/logs/access_log | grep '\[01/Jul/2020:1[0-5]' <= [0~5까지의 숫자가 포함된 모든] 
# 1.3.2 cut 명령어 활용
tail -10000  /usr/local/apache/logs/access_log | grep '\[20/Jul/2020' | cut -d":" -f  2,3 | sort | uniq -c | sort -r
# 1.3.3 cut 명령어 활용 - 당일 하루 중 접속이 제일 많은 시간대를 구한다.  / -f 필드를 2만 한다면 당연히 하루 중 접속이 많은 시간대를 알수 있겠다.
cat /usr/local/apache/logs/access_log | grep '\[07/Jul/2021' | cut -d":" -f  2,3 | sort | uniq -c | sort -r | head

cat /usr/local/apache/logs/access_log | grep '\[19/Oct/2020' | cut -d":" -f  2 | sort | uniq -c | sort -r | head

✅ 활용

cat   /usr/local/apache/logs/access_log | grep '\[07/Jun/2021' | sed -n   '/2021:13:00/,/2021:15:30/p' | awk '{print $1, $NF}' | sort -r  | uniq -c | sort -r | head -20

grep testdomain.com /usr/local/apache/logs/access_log | grep '\[24/May/2021' | sed -n   '/2021:13:00/,/2021:15:30/p' | awk '{print $1, $NF}' | sort -r  | uniq -c | sort -r | head -20

lsof -p 119164 | awk '{print $NF}' | sort -r | uniq -c | sort -r > mylog.txt

✅ HTTP 상태 코드

HTTP 상태 코드[RFC 2616 http/1.1] RFC 2068은 개정판이다.

Similar Posts

  • 리눅스 history 명령어

    리눅스 history 명령어는 이전에 명령어 목록을 확인하는 명령어로 리눅스 콘솔에 접속했을 때 자주 사용하는 명령어 중에 하나입니다. 보통 history만 입력해서 많이 사용하지만 보다 더 다양한 활용 방법에 대해서 알아 보겠습니다. 목차✅ access_log 분석 기본✅ 명령어 조합을 통한 access_log 분석1.1 access_log 분석: 날짜+시간대,  awk $IP,국가1.2 sed 시간대 활용1.3 [ ] 정규식 및 cut 활용✅…

  • 리눅스 file 명령어

    리눅스 file 명령어는 그 파일이 어떤 파일인지 확인하는데 사용되는 명령으로 파일의 파일 타입을 확인할 때 사용합니다. 확인할 수 있는 파일은 텍스트 파일(ASCII 텍스트), 바이너리 파일, 그림 파일 및 동영상 등입니다. 단순하게 파일의 확장자만 확인하는 것이 아닌 파일의 매직파일(usr/local/magic)의 내용을 참조하여 파일 종류를 표시해 줍니다. magic 파일은 특정 파일의 형식을 식별하기 위한 정보를 담고…

  • Syslog란 무엇인가? | rsyslog.conf 설정

    Syslog는 원래 Sendmail의 일부로 개발되었으며, 이후 로그 관리의 편리함이 인식되면서 독립적인 표준으로 발전하게 되었습니다. System Logging의 약자로, 로그를 기록하고 관리하는 표준 서비스 또는 프로토콜을 의미합니다. 메일 서버, FTP 서버 등 다양한 프로그램이 생성하는 메시지를 중앙에서 수집하여 로그 파일로 저장하고, 이를 분석할 수 있도록 지원합니다. 시스템을 효율적으로 모니터링하고, 잠재적인 문제를 신속하게 식별 및 해결하며,…

  • RAID 구성 | RAID Level 0, 1, 4, 5, 6, 1+0, 0+1

    RAID(Redundant Array of Independent Disks 또는 Redundant Array of Inexpensive Disks)는 뜻 하는 내용처럼 여러 개의 디스크를 스토리지 하나처럼 운영하여 스토리지의 안정성을 확보하는 기술입니다. 저렴한(Independent) 디스크의 복수 배열의 뜻에서 독립적인 디스크의 복수 배열이란 뜻으로 많이 사용되고 있습니다. 이유는 단독으로 사용하기에 부족한 성능을 가진 디스크를 하나의 논리 디스크로 정렬해서 재활용하는데 목적이 있었기 때문입니다. 디스크…

  • [Linux] userdel 명령어: 사용자 계정 삭제 명령어

    리눅스에서 useradd로 계정 생성 후 삭제가 필요한 경우 userdel 명령어를 사용합니다. 목차✅ access_log 분석 기본✅ 명령어 조합을 통한 access_log 분석1.1 access_log 분석: 날짜+시간대,  awk $IP,국가1.2 sed 시간대 활용1.3 [ ] 정규식 및 cut 활용✅ 활용✅ HTTP 상태 코드✅ userdel 명령어 기본 사용은 아래와 같습니다. ✅ userdel 주로 사용하는 옵션 userlde만 입력해서 사용자를 삭제할…

  • 리눅스 YUM 개념과 기본 명령어

    YUM(Yellow dog Updater, Modified)은 레드햇(RPM) 계열 리눅스 배포판에서 사용되는 패키지 설치 및 관리 도구입니다. 기존의 RPM 방식은 패키지 설치 시 의존성 문제로 사용자가 필요한 도구를 일일이 설치해야 하는 번거로움이 있었습니다. YUM은 이러한 의존성 문제를 자동으로 해결해 주며, 필요한 패키지와 관련된 의존 패키지를 함께 설치하여 오류를 최소화합니다. 의존성이 존재할 때 관련된 다른 패키지들을 자동으로…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 7   +   6   =