본문 바로가기

Learning/└◆리눅스 서버 보안

02_로그파일의 내용 중 자신의 로그인한 기록을 지우는 방법

 

 

/var/log/wtmp (data file) -> last CMD

/var/run/utmp (data file) -> who CMD

 

# cd /var/log

# mv wtmp wtmp.old

# last

 

# mv wtmp.old wtmp

# last

 

(Hacker) Text Log Format

# cd /var/log

# ls -l secure > secure.time

# vi secure

.... 적당한 라인 삭제 ....

# cat secure.time

# touch -t <시간> secure

 

 

(Hacker) Data Log Format

 

structure

 

# man utmp

# man wtmp

 

# vi Script.sh

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include <stdio.h>
#include <utmp.h>

#define UTMP_SIZE 3000 //wtmp파일에 있는 utmp구조체 개수

int main(int argc, char **argv)
{
        int FILE_SIZE;          //wtmp파일의 크기
        int COUNT;              //새로 저장할 utmp구조체 수
        int DELETE_LINE;                          //삭제할 라인 수
        char *ARGV=argv[1];                         //인자 주소값 저장

        struct utmp S[UTMP_SIZE];                     //utmp구조체를 임시로 저장하기 위한 배열

        FILE* stream01;                                          //wtmp파일에서 utmp구조체를 읽어오기 위한 파일스트림
        FILE* stream02;                                          //wtmp파일에 새로운 utmp구조체를 쓰기 위한 파일스트림

        DELETE_LINE=atoi(ARGV);                             //문자형태의 인자값을 정수로 변환하여 저장

        stream01=fopen("/var/log/wtmp", "rb");             //wtmp파일을 바이너리, 읽기 모드로 오픈
        fseek(stream01, 0, SEEK_END);                          
        FILE_SIZE=ftell(stream01);                                  //파일의 크기 전체 크기 측정
        fseek(stream01, 0, SEEK_SET);  
        COUNT=FILE_SIZE/sizeof(S[0]);                          //utmp구조체 전체 개수 계산
        COUNT=COUNT-DELETE_LINE;                              //삭제할 utmp구조체 개수 제외

        fread(S, sizeof(S[0]), COUNT, stream01);                 //wtmp파일의 utmp구조체를 배열에 임시보관
        stream02=fopen("/var/log/wtmp", "wb");                 //wtmp파일을 바이너리, 쓰기 모드로 오픈
        fwrite(S, sizeof(S[0]), COUNT, stream02);             //utmp배열의 data를 wtmp파일에 새로쓰기

        fclose(stream01); //파일스트림 종료
        fclose(stream02); //파일스트림 종료

        return 0;
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 

 

<자신의 로그 지우기 >


/etc/syslog.conf 에서 로그상태를 분석해서 로그를 찾아나간다.
 
/var/log/authlog 파일syslogd에 의해 auth에서 발생하는 notice 수준의 메시지가 시스템에서 발생했을 경우 그 내용을 기록한다
/tmp/ 에서 자신의 흔적을 지운다
/var/adm/messages 접속 실패 기록이 남음
/var/adm/loging  로그인 기록이 남음
/var/log/syslog 커널,시스템 오류에 대한 기록이 남음
/var/adm/sulog 에서 su 명령어를 쓴 자신의 흔적을 지운다.
/.history 에서 자신이 쳤던 명령어 리스트를 지운다.

/var/log/wtmp

- 사용자들의 로그인-아웃 정보 기록

- 바이너리 형태이며 지금까지 사용자들의 로그인, 로그아웃 히스토리를 모두 누적형태로 저장

- 시스템의 셧다운, 부팅 히스토리까지 포함(해킹 피해 시스템 분석 시 중요로그)

- 사용 명령어 : last

 
/var/log/utmp

- 시스템에 현재 로그인한 사용자들에 대한 상태를 기록

- /var/run(Linux) 혹은 /var/adm, /etc/(Solaris)등에 위치하며 바이너리 형태로

  저장되어 vi 편집기 등으로는 읽을 수 없음

- utmp(x) 파일은 기본적으로 사용자 이름, 터미널 장치 이름, 원격 로그인 시

  원격 호스트 이름, 사용자 로그인한 시간 등을 기록

- 사용 명령어 : who, w, whodo, users, finger

- "w"는 utmp(x)를 참조하여 현재 시스템에 성공적으로 로그인한 사용자에 대한 snapshot을

   제공해 주는 명령으로 해킹 피해 시스템 분석 시에 반드시 실행해 보아야 하는 명령어

 

※ wtmp, wtmpx와 파일 포맷은 동일하나 ump(x)에는 현재 시스템에 대한 정보가 남고

   wtmp(x)에는 누적된 정보가 남는다는 것이 가장 큰 차이점

 

 /var/log/lastlog

- /etc/passwd 파일에 정의되어 있는 모든 계정의 최근 접속 정보를 확인 가능

- 사용자의 최근 로그인 시간을 사용자 이름, 터미널, IP 주소, 마지막 로그인 시간 출력

- /var/log/lastlog 파일에 저장되고 바이너리 형태

- 사용 명령어 : lastlog

 


FTP 로그(/var/log/xferlog)

- ftp나 ncftp등의 접속이 이루어 졌을 때 이 로그파일에 기록

- ftp 사용했을 때 이 로그파일에 기록되고, 업로드 파일과 다운로드한 파일들에 대한 자세한 기록 저장

 

웹 로그(/var/log/httpd/access_log, /var/log/httpd/error_log)
Access log

- 웹사이트에 접속했던 사람들이 각 파일들을 요청했던 실적을 기록해놓은 목록을 저장

- 방문자의 IP 또는 도메인 네임, 방문자가 파일을 요청한 시간, 방문자가 웹서버에 요청한

  처리 내용(Get, Put, Head), 방문자가 요구한 파일의이름, 파일의 크기 및 처리결과 등의 데이터제공

 

Error log

- 요청한 홈페이지가 없거나 링크가 잘못되는 등의 오류가 있을 경우에 생성

 

 /var/log/btmp

- 로그인 시도 5번 이상 실패한 로그 기록을 확인 가능

- 계정명, 접속 콘솔/터미널 유무, IP, 시간 정보 출력

- /var/log/btmp에 바이너리 형태로 저장

- 사용 명령어 : lastb

 

 

 History (해당 계정의 home directory/.bash_history)

- 접속한 계정에서 사용했던 명령어의 내역만 보여줌

- root의 경우 ~/.bash_history에 사용한 명령어가 저장

- 저장되는 로그의 위치를 변경하려면 export HISTFILE="경로/파일이름“ 입력

 

Pacct(/var/account/pacct)

- 시스템에 들어온 사용자가 어떤 명령어를 실행시키고 어떠한 작업을 했는지에 대한

  사용 내역 등이 기록

- 사용된 명령어의 argument와 그 명령어가 시스템 내 어느 파일 시스템의 어느 디렉토리에

  실행되었는지는 기록되지 않음

- /var/account/pacct에 바이너리 파일로 기록

  (자동으로 생성되지 않을 경우 : accton /var/account/pacct)

- 파일 크기가 쉽게 커지기 때문에 관리가 필요한 파일

- 사용 명령어 : lastcomm / acctcom

 

[출처] Linux Log File Ⅰ|작성자 황소

 

기타

1.chkrootkit 사용 chkwtmp.c(www.packetstormsecurity.nl)
2.zap 사용

커맨드 사용

 

 

스크립트 사용

#!/bin/bash

 

LOG_DIR=/var/log

LOG_DIR=/var/run

cd $LOG_DIR

 

if [ -n $1 ]

then

lines=$1

else

lines=50

fi

 

cat /dev/null > wtmp

cat /dev/null > lastlog

cat /dev/null > utmp

echo "Logs clean."

exit