리눅스 관련 일부 내용 정리
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권 이론서'을 읽으며 필요한 부분만 정리한 내용입니다.
'자격증 > 정보보안기사(필기)' 카테고리의 다른 글
정보보안기사(필기) - 네트워크 보안(네트워크 기반 공격 기술) (0) | 2021.07.29 |
---|---|
정보보안기사(필기) - 네트워크 보안(네트워크 기초) (0) | 2021.07.22 |
정보보안기사(필기) - 시스템 보안(윈도우) (0) | 2021.07.21 |
정보보안기사(필기) - 시스템 보안(운영체제) (0) | 2021.07.20 |
정보보안기사(필기) - 시스템 보안(CPU, Memory) (0) | 2021.06.23 |