11장. 리눅스 시스템 조사
리눅스 리눅스의 시작 핀란드 헬싱키대학교의 학생이었던 리누스 베네딕트 토발즈(Linus Benedict Torvals)가 1991년에 처음 개발 리눅스의 발전과정 최초 공개된 리눅스 커널: 버전 0.01 2014년 5월 3일자: 안정버전 3.14.2, 개발 버전 3.15 GNU 프로젝트: 리눅스 커널에 라이브러리와 도구 제공 -> GNU/리눅스 서버 뿐만 아니라 PC, 임베디드시스템 등에도 사용 200종류 이상의 다양한 리눅스 배포판 : Ubuntu, Fedora 등
주요 리눅스 배포판의 계통도 2004 2013 Ubuntu Ubuntu 13.10 데비안 2008 1993 안드로이드 1994 1998 2006 S.u.S.E SuSE openSUSE 리눅스커널 슬랙 웨어 SLS JAVA 1991 1993 1998 2003 Mandrake 레드햇 페도라Core 페도라 20 1994 2003 2014 CentOS 2003
리눅스시스템 특징 명령어 기반 운영체제 모든 입출력이 윈도우(마우스)가 아닌 문자(키보드) 기반 입출력방식 X윈도우 S/W로 윈도우 환경 제공 : GNOME, KDE SUID와 SGID : 실행파일 소유자 또는 그룹의 권한으로 실행가능 데몬(Daemon): 백그라운드에서 동작하는 프로그램, <서버이름>+d로 표기 디렉토리 구조 루트 디렉토리 : “/” 주요 서브 디렉토리 : /bin(기본 명령어), /boot(부팅 시 사용되는 파일), /etc시스템 설정파일), /usr: 사용자가 설치한 응용 프로그램…. 존재 현재 디렉토리 : “.” , 상위 데렉토리 : “..” 파일 특성 디렉토리 및 파일 소유 및 접근제어 : 각 디렉토리 및 파일에 대해 소유자, 그룹, 타 계정에 대해 읽기®, 쓰기(w), 실행(x) 권한 부여 예) rw-r—r– test.txt : 소유자는 읽기와 쓰기 권한, 그룹과 타 계정은 읽기 권한 부여
리눅스 환경 설정 파일 사용자 및 그룹설정 파일시스템 설정 사용자 및 그룹 파일은 유출될 시 해커가 시스템에 접속할 수 있어 관리가 필요 침해사고 조사 시 불필요 계정, 잘 못된 그룹설정, 빈 패스워드 계정 등을 확인 /etc/passwd : 시스템의 모든 계정이 정의(계정명, 그룹, 홈 디렉토리 정보 포함) 예) username:password:uid:gid:gecos:homedir:program /etc/shadow : 암호화된 패스워드 인증정보를 보관, 슈퍼유저만 읽기 가능 /etc/group : 그룹에 속해있는 사용자들을 보관 파일시스템 설정 /etc/fstab : 시스템 부팅 시 마운트되는 각 장치에 관한 정보를 저장 FileSystem MountPoint Type Option1, Option2 …… Dump Pass /etc/mtab : 현재 마운트되어있는 정보를 저장
리눅스 환경 설정 파일 DNS 설정 네트워크 설정 파일 네임서버 설정 : 로컬 호스트 설정과 네트워크 인터페이스 카드(NIC), DNS 설정이 있음 로컬 호스트 설정 : DNS를 사용하지 않고 로컬 호스트 파일에서 해결 - /etc/hosts.config : 네이밍 서비스를 동작하는 방법(옵션) 저장 - /etc/hosts : IP주소와 도메인네임 쌍으로 구성 - /etc/hosts.allow, /etc/hosts.deny : 외부 접근 허용, 차단 목록 저장 네트워크 인터페이스 카드(NIC) 설정 - 설정파일 : /etc/network/interface, IP주소, 게이트웨이 주소, 서브넷 마스크 DNS 설정 - /etc/resolv.conf : DNS 설정파일
자동 실행 프로그램 부팅 또는 종료 시, 로긴 시, 데몬에 의한 주기적으로 스크립트에 의해 프로그램을 자동실행 함 부팅 또는 종료 시 자동실행 모드에 따른 실행 레벨(0~6)에 근거하여 자동실행 스크립트파일이 실행됨 설정된 모드 -> 해당 디렉토리 -> 스크립트 파일 실행 예) 레벨3 : /etc/rc3.d/S16ssh, S20kerneloops, … , K20kerneloops * 스크립트 파일 : 파일 열기, 프로그램 실행, 문자열 출력 등 명령어가 저장된 파일로서 순서대로 실행 사용자 동작에 따른 자동실행 사용자가 쉘을 실행, 새로운 쉘 진입, 특정 프로그램을 이용하는 경우 쉘 : 리눅스의 핵심인 커널과 사용자를 연결해주는 인터페이스 역할
시스템 로그파일 syslog 데몬 : 시스템(운영체제) 동작과정에서 발생하는 로그를 기록 로그 디렉토리 : /var/log 윈도우 시스템의 이벤트로그와 유사 -> 포렌식에 유용 bash 쉘에 의해 명령어 History가 기록되며 사용자 접속기록은 utmp, wtmp파일에 기록 명령어 히스토리 로그 각 사용자의 홈 디렉토리에 입력한 명령어 저장 : .bash_history 로그인 및 시스템 연결 로그 로그인 시간, 사용자 시스템 연결 시간 기록 : /var/log/wtmp 현재 로그인 사용자 정보저장 : /var/run/utmp 각 계정의 마지막 로그인 시간 저장 : /var/log/lastlog 부팅 시 출력 메시지 로그 시스템에 하드웨어 및 드라이버 설정 확인 가능: /var/log/dmesg
시스템 로그파일 시스템에서 발생하는 로그 기록 운영체제가 발생하는 이벤트/오류 로그 기록 : /var/log/messages 관리자 계정 실행 로그 관리자 권한으로 실행된 명령어의 시간, 계정명, 시도한 작업 등 저장 : /var/log/auth.log
/proc 파일시스템 리눅스 커널을 메모리에 계층구조로 구현한 것 -> 메모리에만 존재 사용자는 쉘을 경유하여 커널에 접근 동작중인 프로세스 정보, 인터럽트, I/O 포트정보, 장치정보 보유 -> 시스템 현재상태 파악 가능 /proc 저장 파일 목록 : 그림 11-3 시스템 정보와 프로세스 정보로 구분
/proc 파일시스템 : 시스템 정보 시스템 정보 cmdline : 부팅 시 사용했던 파라메터 보관 cpuinfo : 시스템에 장착된 CPU 정보 diskstats : 디스크에 쓰고 읽은 통계자료 driver/rtc : 시스템 시각정보 filesystems : 시스템에서 지원하는 파일시스템 정보 /kallsyms : 커널에서 사용하는 전역변수, 함수 심볼 modules : 커널에 로드된 모듈 정보 mounts : 현재 커널에 장착된 장치들 정보 partitions : 하드디스크 파티션 정보 sys 디렉토리 : 커널에서 사용하는 변수 정보 uptime : 시스템 동작시간과 유휴시간 정보 version : gcc와 리눅스 커널 버전정보 meminfo : 메모리 사용량 및 상태
/proc 파일시스템 : 프로세스 정보 프로세스 정보 각 프로세스 id별로(기존에 실행한 프로세스 포함) 실행파일, 연결된 파일, 네트워크 정보를 저장 exe : 실행파일 정보 cmdline : 프로세스가 시작할 때 입력한 파일 명과 파라메터 environ : 프로세스의 환경변수 fd 디렉토리 : 프로세스와 관련된 파일의 설명자료 loginuid : 시스템에 접속한 UID