반응형

리눅스 관련 일부 내용 정리

1. 핵심 구성요소

구성요소 내용
Kernel - 주기억장치에 상주하면서 사용자 프로그램을 관리하는 운영체제의 핵심 역할
Shell - 명령어 해석기/번역기로, 사용자 명령의 입출력을 수행하며 프로그램을 수행
- 사용자가 시스템에 로그인했을 때 각 사용자에게 설정된 Shell이 부여됨
- Kernel에 포함된 프로그램이 아니라 독립된 프로그램으로, 커널을 호출하여 작업을 처리
File System - 여러가지 정보를 저장하는 기본적인 구조

 

Cf) Shell Shork

- GNU Bash Shell에서 발견된 취약점으로 악의적 명령 실행, 관리자 권한을 획득할 수 있음

- 해당 공격 기법은 아래 예시처럼 Linux 환경변수에 빈 함수를 넣으면 그 뒤에 오는 코드는 무조건 실행되는 버그를 악용

$ env x='() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
test

2. 패스워드 파일

1) /etc/passwd 파일 구조

root : x : 0 : 0 : root : /root : /bin/bash

- root : 사용자 계정
- x : 사용자 암호, 'x'는 /etc/shadow 파일에 저장되어 있다는 뜻
- 0 : User ID, '0'은 root
- 0 : User Group ID, '0'은 root
- root : Comments
- /root : User의 Home Directory
- /bin/bash : User가 기본으로 사용하는 Shell 종류

 

2) /etc/shadow 파일 구조

root : $1$FzsfsSFGd$wsS/ : 14806 : 0 : 99999 : 7 :   :   :

- root : 사용자 계정
- $1$FzsfsSFGd$wsS/ : Encrypted Password
- 14806 : 1970/1/1부터 비밀번호가 수정된 날짜의 일 수
- 0 : 비밀번호 변경 전 최소 사용기간(일 수)
- 99999 : 비밀번호 변경 전 최대 사용기간(일 수)
- 7 : 비밀번호 만기일 전, 경고 메시지를 제공하는 일 수
- (공란1) : 로그인 접속 차단 일 수 
- (공란2) : 로그인 사용을 금지하는 일 수 (월/일/연도)
- (공란3) : 사용되지 않음

3. 권한 관리

1) 디폴트 권한 umask

기본적으로 File 생성 시 권한은 666, Directory 생성 시 권한은 777이다. ( File: r(4) w(2) x(0), Directory: r(4) w(2) x(1) )

File 또는 Directory 생성 시 기본 권한을 설정할 수 있는 명령어가 'umask'이다.

umask = 0022 일 경우,
1) File 생성 시 권한: 644 (666-022)
2) Directory 생성 시 권한: 755 (777-022)

 

2) 권한 부여 및 변경 chmod

리눅스에서 권한을 부여하는 명령은 'chmod' 이며, 아래와 같이 사용 가능하다.

1) 'aaa' 파일에 'user: rwx, group: rw-, other: r--' 권한을 부여하는 방법
- chmod 764 aaa
2) 'aaa' 파일에 'other'의 'read' 권한을 빼는 방법
- chmod o-r aaa

 

3) 특수 권한 관리

- SetUID : 실행될 때 대상 파일의 소유자 권한으로 실행되도록 함 (4000 또는 u+s를 사용하여 설정)

- SetGID : 실행될 때 대상 파일의 그룹 권한으로 실행되도록 함 (2000 사용하여 설정)

- Sticky bit : 공용 Directory를 만들어 누구나 자유롭게 사용할 수 있도록 함 (1000 사용하여 설정, 삭제는 소유자만 가능)

 

cf) 특수 권한 파일 검색

- SetUID: # find / -perm 4000 -print

- SetGID: # find / -perm 2000 -print

- Sticky bit: # find / -perm 1000 -print

 

cf) 권한이 777인 Directory에 각 특수 권한 부여 시 표시 방법

- SetUID: drwsrwxrwx

- SetGID: drwxrwsrwx

- Sticky bit: drwxrwxrwt

 

cf) 실행 파일이 아닌데 SetUID를 설정하면 대문자 'S'가 되고 실행할 수 없음

 


4. 로그 파일

리눅스의 로그 파일은 기본적으로 '/var/log' directory에 존재한다.

파일 내용
/var/run/utmp 현재 로그인한 사용자 정보 (사용자 이름 확인 명령어 : users)
/var/log/wtmp 사용자의 로그인/로그아웃 정보 (확인 명령어: last)
/var/log/btmp 로그인 실패 정보 (확인 명령어: lastb)

5. 작업 스케줄 관리

1) cron

cron 데몬 프로세스는 '/etc/crontab' 파일을 읽고 작업을 수행하며, crontab 설정은 아래와 같이 진행한다.

52  6  1  *  *  root  /usr/sbin/test

- 52: 분
- 6 : 시
- 1 : 일
- * : 월
- * : 요일 (0: 일요일 ~ 6: 토요일)
- root : 사용자
- /usr/sbin/test : 실행할 명령어

cf) crontab 옵션

옵션 설명
-l 현재 로그인 된 계정에 잡혀있는 작업 스케줄 확인
-e 현재 로그인 중인 계정에 작업을 등록
-r 현재 crontab에 등록된 작업을 삭제
-u [user명] 작업을 실행시킬 유저명 설정

 

2) at

cron과 달리 예약한 명령어를 정해진 시간에 한 번만 실행할 때 사용하는 명령어이다.

# at 18:00

at> hping --rand-source 127.0.0.1 -p 80 -S -flood > test.txt

cf) at 옵션

옵션 설명
-l 현재 실행 대기중인 명령의 목록을 출력
-r 실행 대기중인 명령에서 해당 작업번호를 삭제
-f 표준 입력 대신 실행할 명령을 파일로 지정

6. 리눅스 방화벽

리눅스에서 방화벽 정책을 수립할 수 있는 도구로 iptables가 있다.

 

cf) iptables Chain 종류

- INPUT : 리눅스로 들어오는 패킷

- FORWARD : INPUT과 OUTPUT 역할로, 라우터에 방화벽을 적용할 때 사용

- OUTPUT : 외부로 나가는 패킷

 

cf) iptables 사용 예시

- DNS 서비스를 사용하는 서비스를 모두 차단하는 명령어는 아래와 같이 작성할 수 있다.

iptables - A FORWARD -p udp -m udp --dport 53 -j DROP

 

 


# 참고

해당 글은 '이기적 정보보안기사 필기 1권 이론서'을 읽으며 필요한 부분만 정리한 내용입니다.

반응형

+ Recent posts