Last

각 계정 사용들의 서버로그인 정보를 확인하는 명령어 입니다.
Last는 다양한 방법으로 사용자들의 로그인 정보를 조사하며
재부팅한 정보를 확인하는데 사용되기도 합니다.
 
* Last 로 확인할 수 있는 시스템관련 정보들은 다음과 같은 것들이 있습니다.
- 접속 계정명
- 접속 장치명
- 접속한 IP 주소 정보 : 접속한 IP 주소
- 접속시간 정보 : 접속한 시간의 요일, 월, 일, 시간 – 기타
- 접속시간 정보 : 접속하여 서버에 머문시간
 
위와 같은 정보를 확인하기 위하여 last 명령어를 사용합니다.
 
/var/log/wtmp 파일에 모든 계정사용자들의 접속정보를 기록하고 있으며
last 명령어는 모든 계정들의 접속정보가 기록되어 있는 /var/log/wtmp 파일을 이용하여
출력결과를 보여줍니다.
리눅스는 /var/log/wtmp 파일이 존재할 경우에만 접속정보를 기록하기 때문에 /var/log/wtmp 파일이 존재하지 않는다면 “touch /var/log/wtmp” 라는 명령어로 만들어 주시면 됩니다.(last 명령어 위치 : /usr/bin/last)
 
* 사용형식
- last [-R] [-num] [-n num] [-adiox] [-f file] [-t YYYYMMDDHHSS] [name…] [tty…]
 
* 시스템 계정사용자의 로그인정보를 확인하는 기본적인 방법
아래와 같이 아무런 옵션없이 “last” 라고만 하면 모든 계정들의 접속정보를 보여줍니다.
image001.gif
위의 결과를 보시면 시스템이 재부팅되었던 정보(reboot 행), 즉 시스템재부팅 횟수와 시각등을 확인할 수 있으며 시스템에 한번이상 로그인했던 모든 계정사용자들의 로그인정보를
확인 할 수 있습니다.
 
이 정보들은 서버 해킹등의 심각한 상황에서 계정 사용자들이 어디에서, 언제 서버로 로그인하여, 얼마나 머물렀는가를 확인하기 위한 매우 중요한 정보들을 담고 있습니다.
 
* 특정 계정사용자의 시스템로그인 정보확인
특정계정의 접속정보만을 확인하고자 한다면 아래와 같이 “last 계정명” 이라고 하시면 됩니다.
 
다음은 nextline 이라는 계정의 접속정보만을 확인한 예입니다.
image002.gif
위의 결과를 보시면 nextline 이라는 사용자는 총 9번에 걸쳐서 시스템에 로그인 했음을
알수 있습니다.
 
* Last 결과중 일부만 확인하기
last 결과중에서 몇행까지만을 확인하고자 한다면 “last –원하는행의수”와 같이 하면 됩니다.
또한 “last –n 원하는행의수”와 같이 사용해도 동일한 결과를 얻을수 있습니다.
 
아래의 예제는 5행의 결과만을 확인한 예입니다.
 
다음은 root의 접속정보를 5행까지만 확인한 결과 입니다.
image003.gif
위의 결과를 보시면 root 가 이 서버로 원격로그인 한 5행의 결과를 확인하실 수 있습니다.
 
* 서버로그인 정보중 IP 주소기록이 있는 정보를 제외한 나머지 정보만 확인하기
다음과 같이 last 명령어에서 –R 옵션을 사용한 것으로서 last 의 결과에서 호스트(ip 주소)
접속기록을 제외한 결과만을 보여준 예입니다.
image004.gif
위의 결과에서 보면 IP 정보가 출력이 이루어지지 않았음을 알 수 있습니다.
 
* last로 로그인 정보 확인시 IP주소를 행의 마지막 열에 표시하기
다음은 –a 옵션을 사용하여 last 결과중 IP 정보를 맨 마지막에 보여주 예입니다.
이 방법은 로그인정보중 접속했던 IP 주소를 알아보시 쉽게 출력하기 위해 사용합니다.
image005.gif
last 명령어는 위와 같은 방식들로 사용하여 접속계정 유무를 확인하시면 됩니다.
 
 
Ps (process status)
ps 는 현재 시스템에서 구동 중인 프로세스 상태를 확인하는 명령어 입니다. 이 명령어를 통해 어떤 프로세스가 어떤 형태로 구동되는 지에 대한 정보를 얻을 수 있습니다.
 
ps 옵션 및 의미
-a : 전체 사용자의 모든 프로세스를 출력합니다.
- l : 자세히(long format) 출력합니다.
- x : 제어 터미널이 없는 프로세스(커널 프로세스)를 출력합니다.
- f : pstree 명령어와 같은 트리 구조를 출력합니다.
 
ps 명령어를 수행할 때 프로세스의 구동 상태는 stat 영역에 다양한 코드로 나타나며, 해당 코드는 다음과 같은 의미가 있습니다.
 
ps 명령어 수행시 stat 영역에 프로세스의 상태를 나타내며 다음과 같은 의미가 있습니다.
 
* 상태 및 의미
- D(Disk wait) : 구동을 일시 중지하고 있는 상태로 인터럽트에 의해 재실행될 수 있습니다.
- R(Running) : 구동되고 있는 상태입니다.
- S(Seeping) : 구동을 쉬고 있는 상태입니다.
- T(Traced 혹은 stoped) : 구동이 정지되어 있는 상태입니다.
- Z(Zombie) : 좀비 프로세스 입니다.
- W(swapped out) : 메모리를 사용하지 않는 스와핑 상태입니다.
 
* ps 명령어 활용
- ps –ewwf 는 현재 구동중은 프로세스를 자세하게 출력합니다.
image006.gif
image007.gif
ps –ewwf 프로세스 확인결과 입니다.
- ps –ewwf |grep [프로세스명]은  확인 하고싶은 프로세스만 출력하여 보여주는데 보통 프로세스 개수 확인이나 전체 프로세스를 확인후, 이상이 있는 프로세스를 확인하여 해당 프로세스정보만 파악할 때 사용됩니다.
image008.gif
 
nobody 권한으로 실행되고 있는 프로세스를 출력한 값 입니다.
요즘 게시판이나 권한이 취약한 폴더를 통하여 UDP공격 소스를 업로드하여 외부로 공격을 하는경우가 있는데 이런경우 nobody권한으로 프로세스가 돌아가게 됩니다.
예를 들어 위의 그림처럼 nobody권한으로 httpd의 프로세스 이외에 perl프로세스가 사용된다면 이상 프로세스로 의심을 해볼필요가 있습니다.
lsof –p [해당 프로세스PID]으로 검색하여 어느 폴더에서 실행이 되고 있는지 확인후 해당 폴더로 들어가시어 파일을 확인하신후 모르는 폴더나 만들지 않았는데 생성이 되어 있는것이라면 필히 삭제를 하셔야 하며 kill이란 명령어(아래의 kill 명령어 사용법 참고)로 프로세스를 종료 시켜야 합니다.
이 같은 경우는 같은 방법으로 다시 생성이 될수 있기 때문에 권한 조정 및 해당 게시판 패치를 해주셔야 합니다.
 
Kill 명령어
 
현재 시스템 내에는 많은 프로그램이 구동되고 있으며 작업 중인 프로세스를 확인하려면 위에서 설명한 ps라는 명령어를 통해서 확인할 수 있습니다. 다시 말해 하나의 명령어나 프로그램을 구동하면 하나의 프로세스를 형성하고 그 프로세스는 고유한 번호를 할당 받게 되는데 이것을 PID라고 합니다.
 
하나의 프로그램을 종료할 때 실제로 해당 프로세스의 PID를 찾아내서 종료하는 방법을 사용합니다. 예를 들어 apache를 종료 시켰을 때 정상적으로 종료가 이루어지지 않을경우가 있습니다. 이러한경우 kill명령어를 사용하여 해당 프로세스를 강제 종료합니다.
 
- ps 의 명령어로 해당 프로세스의 PID번호를 확인하여 아래와 같이 명령으로 강제종료 할수 있습니다.
è     kill –9 [PID번호] or kill –KILL [PID번호]
이때 –9는 해당 프로세스에 시그널 9를 전송하는 것인데, 9는 강제 종료를 의미 합니다
è     killall –9 [해당 프로세스 데몬명]
apache와 mysql과 같은 프로세스는 프로세스가 없어지거나 새로운 프로세스가 생기며 접속자가 많으면 프로세스의 개수가 엄청 늘어 나게 됩니다.
이러한 프로세스를 전부 강제로 종료할경우 위와 같이 killall 명령어를 사용합니다.
이 명령어는 PID를 이용하지 않고 데몬명을 직접 입력하여 사용합니다.
 
Pstree 명령어
pstree는 현재 실행중인 프로세스들의 트리 구조로 보여줍니다. 프로세스의 상호관계를 파악하기 위해 필수적인 명령어 입니다. 모든 프로세스의 부모프로세스라고 하는 PID 가 1 인 init 프로세스로부터 개별프로세스들이 어떤 관계로 실행이 되었는가를 파악하기 위해 사용합니다.
 
다음과 같이 pstree 라고만 하면 현재 실행중인 프로세스들을 tree 구조형태로 보여 줍니다.
 
image009.gif
- pstree에서 –a 옵션을 사용하면 프로세스들이 실행이 될 때의 인자나 옵션들 모두 함께 표시해 줍니다. 즉, 아래의 예를 보시면 각 프로세스들이 실행이 될 때 사용하였던 옵션들까지 상세하게 보여주고 있습니다.
 
image010.gif
대표적으로 위의 두 명령어를 사용하여 프로세스를 확인합니다.
 
top 명령어
top 명령어는 리눅스 시스템의 운용상황을 실시간으로 전반적인 상황을 모니터링하거나 프로세스 관리를 할 수 있는 유틸리티입니다.
실행 방법은 쉘상에서 “top”라고 하시면 되며 종료시에는 q or CTRL+C 키를 눌러 종료를하시면 됩니다.
image011.gif
위의 결과로 제공되는 시스템운영에 관한 여러가지 정보들의 의미를 하나씩 설명드리도록 하겠습니다.
 
첫번째 행
top - 17:18:28 up 97 days, 14:59,  3 users,  load average: 0.07, 0.10, 0.00
- 17:17:00 : 시스템의 현재 시간 입니다.
- up 97 days , 14:57 : 종료없이 운영된 시간입니다.
- 3 users : 접속된 사용자 수를 나타내고 있습니다. 
- load average 0.70, 0.10, 0.00: 시스템 부하율를 나타 냅니다.(0.00, 0.00, 0.00=>각각 1분 5분 15분)
 
두번째 행
Tasks: 106 total,   1 running, 102 sleeping,   0 stopped,   3 zombie, 0 stopped
Tasks: 106 total : 실행된 프로세스 수를 나타냅니다.
1 running : 현재 실행되고 있는 프로세스의 수입니다.
102 sleepin : sleeping 된 프로세스의 수 입니다.
3 zombie : 좀비 프로세스 수 입니다.
0 stopped : stopped된 프로세스의 수를 각각 보여줍니다.
 
세번째 행
세번째 행은 cpu의 전반적인 운용상황을 알려줍니다.  즉 사용자 사용율과 시스템 자체 사용율, nice 정책에 의해 사용되고 있는 cpu 사용율, 입출력 대기 사용율 , 사용되지 않고 남아있는 cpu사용율을 나타냅니다.
 
네번째 행
네번째 행에서는 시스템의 전반적인 메모리 운용상황을 보여줍니다. 즉 전체메모리 용량, 프로세스에 의해 사용되고 있는 메모리 사용량, 사용되지 않고 남아있는 메모리량, 고유메모리량, 버퍼링된 메모리량 등의 정보를 보여줍니다.
 
다섯번째 행
다섯번째 행에서는 스왑메모리 사용현황을 알려줍니다. 즉 전체 스왑 메모리량, 프로세스에 의해 사용된 스왑메모리량, 남아있는 스왑 메모리량, 프로세스에 의해 사용된 메모리량을 나타냅니다.
 
find 의 백도어검색 명령어
- find /dev –type f
위의 명령어시 올라오는 메시지가 /dev/MAKEDEV, MAKEDEV.ibc, /dev/cpu/mtrr,
/dev/cpu/microcode, /dev/.udev/db/* 이외에 다른 파일명이 올라온다면 백도어를 의심해볼 필요가 있습니다.
 
- find / -ctime –1
위의 명령어는 하루동안 만들어진 파일을 보여줍니다.
직접생성한 파일이 아니라면 필히 확인을 해보셔야 보안상 좋습니다.
 
- find / -perm -4000
위의 명령어는 setuid 걸린 파일을 찾아줍니다.
 
위의 매뉴얼 내용은 기본적으로 서버에 이상이 있을경우 먼저 점검을 하는 내용입니다.
서버 사용시 이상이 있으신경우 위의 매뉴얼내용을 참고하시어 점검하여 보시기 바랍니다.

출처

http://www.nextline.net/?inc=support&html=pds_view&no=190&name=%C0%A9%B5%B5%BF%EC%C1%EE&home= 

2012/03/27 16:50 2012/03/27 16:50
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://simfarm.kr/phoenix311/rss/response/5

댓글+트랙백 ATOM :: http://simfarm.kr/phoenix311/atom/response/5

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다

트랙백 RSS :: http://simfarm.kr/phoenix311/rss/trackback/5

트랙백 ATOM :: http://simfarm.kr/phoenix311/atom/trackback/5