의식여행

[리눅스] 파일시스템 이해하기(기본) 본문

IT(리눅스&보안&개발)/리눅스-CentOS

[리눅스] 파일시스템 이해하기(기본)

의식여행중 2017. 11. 6. 18:24

안녕하십니까,

공부하면서 정리 했던 "파일시스템 이해하기(기본)" 입니다.


유닉스/리눅스 파일시스템에 관심을 갖기 시작하신 분

유닉스/리눅스 대한 기본적인 이해가 필요하신 분


가볍게 읽어보시면 좋을 것 같습니다.


■ 유닉스 핵심 구성 요소

-커널 : 유닉스의 핵심 core로, 메민 메모리에 상주하여 컴퓨터 자원을 관리

-쉘 : 커널과 사용자 간의 인터페이스를 담당하며, 사용자 명령의 입출력을 수행하며 프로그램을 수행

-파일시스템 : 디렉터리, 서브 디렉터리, 계층적인 트리구조를 제공


■ 유닉스 파일시스템 구성

-부트 블럭(Boot Block)

운영체제를 부팅하거나 초기화하기 위한 부트스트랩(Bootstrap) 코드를 담고 있는 블럭

-슈퍼 블럭(Super Block)

해당 파일시스템을 관리하기 위한 정보를 담고있는 블럭

-아이노드(i-node) 리스트

해당 파일시스템의 파일들에 대한 속성을 담고 있는 리스트(파일명 제외)

-데이터 블럭(Data Blocks)

실제 파일의 내용(데이터)가 저장되는 블럭


■ 유닉스 디렉토리 구조

/    root 디렉터리(최상위)

/etc    시스템 설정 파일 저장

/dev    특수 파일 저장

/usr/bin    디폴트 사용자 명령어 저장

/usr/include    C언어 라이브러리 헤더 파일이 저장

/usr/lib    C언어 라이브러리 저장

/home    사용자 홈 디렉토리 저장

/tmp    임시 파일 저장

/var    시스템 로그 저장


■ proc File System

-커널이 사용중인 자원들에 대한 상태/관리정보를 파일명으로 보관하는 영역으로 이러한 파일들은
 실제 디스크상에는 존재하지 않는 파일로서 메모리에만 임시적으로 존재한다. 즉 "가상 파일 시스템"이다.

-재부팅을 하면 초기값으로 변경

-메모리상에 사용하는 모든 자원들에 대한 정보를 파일 형식으로 보관

-각 프로세스 정보를 PID 디렉터리 형태로 보관


■ journaling File System

파일을 실제로 수정하기 전에 우선 로그에 수정된 내용을 저장 기록하여, 로그만으로 검사하여 속도와 복구 안정성을 향상시키는 기술이다.

EXT2 : FSCK만을 사용 (안전성, 속도 ↓)

EXT3 : 저널링 기술 추가 (안전성, 속도 ↑)


■ umask

새롭게 만들어질 파일의 권한을 설정하기 위한 명령 

일반 파일 : 777, 디렉토리 파일 : 666 로 구성되어 있으며, 

/etc/profile에 umask 022 설정을 권장한다.


■ PAM(Pluggable Authentication Module)

프로그램 개발 시 인증모듈을 별도로 개발하지 않고 리눅스에서 제공하는 "PAM"을 사용하여 인증을 할 수 있으며

플러그인 형태로 사용이 편리하며 중앙통제가 가능하다.


■ tcp-wrapper

슈퍼데몬(inetd) 데몬과 클라이언트 사이에서 미리 정의되어 있는 서비스들에 대한 접근통제목록을 이용하여

서비스의 허용 및 거부, 로그를 기록할 수 있는 보안 강화 도구이며, S/W 설정파일을 별도로 컨트롤 하지 않아도 되서 실질적인 통신에 부하를 주지 않는다.

설정은 hosts.allow와 hosts.deny를 통해 가능하며 IP와 접근통제목록을 통한 서비스 허용과 거부를 한다.

ex) sshd: x.x.x.x(서브넷)


■ syslogd

리눅스의 시스템 로그, 보안 로그, 메일 로그, 부팅 로그 등 시스템의 다양한 로그들을 생성/저장 하기 위한 프로세스이며,

기밀성, 무결성, 가용성 드 정보보호 특성을 고려하지 않고 개발되었기 때문에, TCP가 아닌 UDP 통신일 때 공격자가 모니터링 가능하다면 중요정보가 노출될 수 있다.

[권장하는 보안기능]

-> UDP가 아닌, 연결 지향 프로토콜인 TCP를 사용

-> 기밀성 장을 위해 Syslog 및 log 수집대상 서버를 제외하고는 payload를 보호할 수 있도록 (BEEF)를 이용


BEEF? 

연결 지향적이고, 비동기적인 열결은 위한 프로토콜(내부적으로 인증, 프라이버시, 재전송을 통한 신뢰성 등을 보장)


기본 저장 위치 : /var/log/

설정 파일 위치 : /etc/syslog.conf (로그 파일의 저장위치나 이름명 변경 가능)

보안 수준 : Emergency(시스템이 전면 중단 되는 패닉 상태), Alert(시스템 오류등 즉각적인 조치가 필요), Critical(급한 상황은 아니지만 심각한 오류가 발생), Error (일반적인 에러/오류 발생), Warning(경고, 주의를 요함), Notice(에러/오류는 아니지만, 관리자의 확인이 필요), information(정보 메시지), Debug(디버깅용 메시지)


■ logrotate

방대한 리눅스 시스템 로그를 파일 순환, 압축 보관, 알림 기능 목적으로 사용


■ Process

관리하는 최소 단위의 작업으로 주기억 장치에 저장되는 프로그램


■ CPU 스케줄링

시스템을 프로세스 CPU에 할당해야 하는데, CPU는 한 순간에 한 가지 작업만이 가능하기 때문에 이를 시분할하여 여러 프로세스에게 나누어 주어야 한다. 시스템의 성능을 높이기 위해 CPU사용 순서를 결정하긴 위한 정책을 스케줄링 이라고 한다.

스케줄링 종류로는 선점/비선점 형이 있다.


■ 교착상태(DeadLock)

프로세스 집단이 결코 일어나지 않은 사건을 기다리는 것을 말한다.
동일한 자원에 대해 서로 상대방이 자원에 접근하는 것을 방해하여 두 프로세스 모두 기능이 중지되어 있는 상태이다.

이러한 상황은 상호배제, 점유, 환형 대기, 비선점형 방식 이 있으며, 해결 방법으로는 예방, 회피, 탐지, 복구 가 있다.


■ lsof(list open files)

유닉스에서 실행중인 프로세스가 참조하는 파일의 정보를 보여주는 도구이다.


■ Tripwire

오픈 소스 트립와이어는 시스템의 특정한 파일의 변화를 모니터링하고 알림을 해주는 유용한 보안 그리고 무결성 도구이며, 자유 소프트웨어이다. 이 프로젝트는 2000년 Tripwire, Inc.에 의한 코드에 기반한다. 오픈 소스 트립와이어는 호스트 기반 침입 탐지 시스템으로서 기능한다. 네트워크 인터페이스 수준에서 침입을 탐지하는 것 보다는 파일 시스템 오브젝트들의 변화를 탐지한다

■ nessus

네서스는 상용 취약점 스캐너이다. 비 기업 환경에서 개인은 무료로 사용할 수 있다. sectools.org에 따르면 네서스는 세계에서 가장 많이 사용되는 취약점 스캐너이다. 개발사는 2005년에 세계적으로 75,000 기관에서 사용한다고 추정하였다.

■ 유닉스 시스템 이벤트

-/var/log/message : 가장 기본적인 시스템 로그 파일로 시스템 운영에 대한 전반적인 메시지 기록

-/var/log/boot.log : 부팅될 때 파일시스템에 대한 체크와 서비스 데몬들의 싱행 상태를 기록 

-utmp : 시스템에 현재 로그인한 사용자들에 대한 상태를 기록하며 "who" 명령으로 확인 가능 (var/run/utmp)

-wtmp : 사용자가 로그인/로그아웃 정보를 기록하며 "last" 명령으로 확인 가능 

-acct/pacct : 사용자들에 의해 실행된 모든 명령어들이 기록되며 "lastcomm" 명령으로 확인 가능

-sulog : su 명령어를 사용한 결과를 정보로 기록

-loginlog : 5번 이상 실패한 로그인의 실패 정보를 기록

-lastlog : 각 사용자들의 가장 최근에 로그인한 정보를 기록

-btmp : 실패한 로그인 시도에 대한 기록을 담고 있는 파일로 "lastb" 명령으로 확인 가능

-xferlog : FTP 로그 파일로 PROFTPD, VSFTPD 등 FTP 데몬들의 서비스 내역을 기록한다(사용자 로그, 파일 업로드/다운로드 로그)



감사합니다.




Comments