- 리눅스 특징 : 다중 사용자, 다중 작업, 다중 처리기, 다중 플랫폼, 계층형 파일시스템, POSIX 호환
우수한 네트워킹, 가상콘솔, 가상 기억 장치
GPL 라이센스 → 자유 소프트웨어
LGPL 라이센스 → 수정할때 라이브러리 소스코드 공개
*커널 : 주기억장치 상주, 사용자 프로그램 관리
*셸 : 명령어 해석기, /bin 경로
*시스템 구성 : 여러정보 저장하는 기본 구조
ex) ls -l → 셸 → 커널 → 하드웨어
- 셸
* bash_profile : 사용자 홈디렉터리 존재, 개별 셸환경 설정
* bashrc : 사용자 정의 변수, alias 정의
* bash_logout : 사용자 로그아웃 시 실행되는 파일 정의
전역 설정파일은 /etc 에 존재
홈디렉터리 확인 → echo $HOME
- 셸 종류
* C 셸 : .cshrc, bourne 셸 : .profile, korn 셸 : .kshrc, bash 셸 : C 셸 + korn 셸 특징, TC 셸 : C 셸 강화
- 셸 환경 변수
env 명령은 환경변수 확인 명령어
SHELL |
로그인 셸 절대 경로 |
HOME |
홈 디렉터리 경로 |
PATH |
실행할 명령어 경로 |
USER |
사용자 이름 |
LOGNAME |
로그인할 때 사용자 이름 |
TERM |
단말기 설명 |
|
전자메일 우편함 |
HOSTNAME |
호스트 명 |
TMOUT |
자동연결 종료 시간 |
#Shell Shock : bash 셸 관련 취약점 → 악의적 명령 실행, 관리자 권한 획득
리눅스 환경변수에서 빈 함수를 넣어 그 뒤에오는 코드는 무조건 실행되는 심각한 버그
- 리눅스 파일
* 루트 파일 : 하나의 시스템, 시스템 프로그램
* 일반 파일 : 수행 가능 프로그램, 텍스트 파일, 데이터 파일 등
* 디렉터리 파일 : 다른 파일과 디렉터리들에 관한 정보를 저장, 파일명과 inode 번호 연결부분
* 특수파일 : 주변장치에 연결된 파일, 하나 이상 가지고 있어야함
ex) tty7 → 사용자 터미널
- 리눅스 파일 시스템 구조
부트블록 |
슈퍼블록 |
inode |
데이터 블록 |
* 부트 블록 : 부팅관련 이미지, 커널 적재
* 슈퍼 블록 : 파일시스템 크기, 빈 블록 리스트, inode 목록 크기, 플래그 등
* inode : 파일이나 디렉터리에 대한 정보
* 데이터 블록 : 실제 데이터 저장
#inode : 커널이 현재 사용하는 자료구조를 유지하는 구조체, 커널과 파일시스템은 inode를 통해 파일 관리, ls -li 명령으로 번호 확인(첫번째 항목)
소유자ID, 그룹ID, 크기, 생성된 시간, 사용된 시간, 변경된 시간, 링크 수, 접근 모드, 블록주소
- inode 블록 관리
단일 간접 블록, 이중 간접 블록, 삼중 간접 블록
- 심볼릭 링크 : 링크정보만 가진 inode 생성, 원본 삭제 하면 같이 삭제됨, ln -s
- 하드 링크 : 원본을 복사하여 동일한 inode 생성, 원본 삭제 해도 남아 있음, ln
- fdisk : 디스크 파티션 수행
-l : 목록 확인, -v : 버전, -s 장치 : 입력 장치 크기, -d : 삭제, -n : 새로운 파티션 생성
-p : 설정상태 확인
- mkfs : 파티션 생성 후 파일 시스템 생성
-V : 모든 정보 출력, -t : 형식 선택, -C : Bad Block 검사, -l : 파일로부터 BadBlock 읽음
-v : 진행사항 출력
ex) mkfs -t ext4 dev/sdb1 또는 mke2fs -j → EXT3 생성
- fsck : 파일 무결성 검사
-t : 파일 시스템 지정, -A : etc/fstab 에 기술된 파일 시스템 모두 검사
-N : 검사수행 안함, 내용 출력, -P : 병렬 처리 수행, 루트 파일 시스템 점검
-R : 루트 제외, -V : 세부 내역 출력, -a : 무결성 검사 후 자동 검사
-r : 대화형, -n : 오류 수정 안함, -y : 오류 자동 수정
- mount : 특정 디렉터리 연결
-v : 자세한 정보 출력, -f : 마운트 가능한지 점검, -n : etc/mtab 파일에 쓰기 없이 마운트
-r : 읽기만 가능하도록, -w : 읽기 쓰기 모드로, -t vfstype : 파일시스템 유형 지정
- umount : 마운트 해제
-n : /etc/mtab 변경 않고 마운트 해제, -v : 정보 출력,
-a : /etc/mtab 에 지정된 파일시스템 모두 해제, -t : 지정된 파일시스템 해제
- fstab 파일은 마운트 시 참조하는 파일, 파일시스템 마운트 관한 정보
* 필드 구성
파일시스템 장치, 마운트 포인터, 파일 시스템 형식, 옵션(ro, rw), 덤프, 파일점검 옵션(0, 1)
* 필드 옵션 구성
default : 일반 파일 시스템, auto : 부팅 시 자동 마운트, exec : 실행파일 실행 허용
suid : setuid, setgid 허용, ro : 읽기 전용, rw : 읽기 쓰기, user : 일반 사용자 마운트 가능
nouser : 루트만 마운트, noauto : 자동 마운트 안함, noexec : 실행파일 실행 못함
nosuid : setuid, setgid 허용 안함, usrquota : 쿼터 설정 가능, grpquota : 그룹별 쿼터
- 리눅스 부팅
* LILO : 리눅스의 부트로더, /etc/lilo.conf
* GRUB : 최근 LILO 대신 사용, /boot/grub/grub.conf
→ default=0 : 부트순서 지정, timeout=0 : 지정시간 경과 시, defualt : 지정된 운영체제
splashimg : 부팅 이미지 지정, hiddenmenu : 부트로더 숨김, title : 부트 엔트리
* 부팅 순서
전원 → ROM BIOS → MBR 의 부트로더 → 커널 → root 읽기 전용 마운트 → root 쓰기전용 마운트 → init 프로세스 실행 및 PID 1번 할당
- init 프로세스, /etc/initab
0: PROM 감사
1: 단일 사용자, 관리상태
2: 다중 사용자, 공유 불가
3: 다중 사용자, 기본 실행, 텍스트
4: 사용 안함
5: 3 모드에서 X-WINDOWS
6: 재부팅, 3 으로
init 명령어 → init [Run Level]
# 3.20 사이버 테러, 2013년 3월 20일
방송국, 금융사 전산망 마비, MBR과 VBR 삭제 후 무의미 문자열로 변경
- 리눅스 패스워드
* /etc/passwd 구조
root : X : 0 : 0 : root : /root : /bin/bash
1. 사용자 계정,
2. 암호, X 이면 /etc/shadow 에 저장
3. user id
4. group id
5. comment
6. 홈디렉터리
7. 셸
##셸의 경우 /bin/false 는 로그인 시 셸 실행 안됨
##shadow 에 저장 위해서 pwconv 명령, 안쓸거면 pwunconf
- John The Ripper: 패스워드 무작위 대입 공격 툴
ex) John --format=raw-MD5 /root/passwd.txt --crack-status
- /etc/shadow 구조
root : $1$F…… : 14806 : 0 : 99999 : 7 : : :
1. 사용자 계정
2. 암호화된 패스워드, $해시 알고리즘 $salt $해시 결과
3. 1970.01.01 부터 패스워드 수정된 일 수 계산
4. 패스워드 최소 사용 기간
5. 패스워드 최대 사용 기간
6. 패스워드 만료 전 경고 일수
7. 로그인 접속 차단 일 수
8. 로그인 사용 금지 일수
9. 사용 안함
# chage -l [사용자] → 만료 날짜 확인
- umask : 파일은 666, 디렉터리 777 기준
022 이면 파일 644
- chmod 764 test.txt
- chmod u+x,g+w,o-r test.txt
u,g,o,a +,-,= r,w,x
- chown : 파일 사용자와 그룹 변경
-R : 하위 디렉터리, -C 파일 내용 출력
chown 사용자.그룹 파일
- chgrp : 파일 그룹 변경
-C : 변경된 것 보여줌, -h : 심볼릭 링크 자체그룹 변경, -v : 진행 상태
-R : 하위 모든 파일, -f : 작업 안되는 파일 오류 메세지 숨김
##setuid 유형
chmod 4000 [파일] 만할 경우 → ---S------
chmod 4755 [실행파일] → -rwsr-xr-x
chmod 4744 [실행X 파일] → -rwSr--r--
- setgid : 그룹의 권한으로 실행, 보통 메일 박스
##find / -perm 4000 -print
- WORM(Write Once Read Many) 스토리지
한번만 기록, 그다음은 읽기만 가능 → 로그파일 기록
삭제나 변조 불가
- 리눅스 로그, /var/log
1. 현재 로그인 사용자 정보 → /var/run/utmp → w, who 명령
2. 사용자 로그인 로그아웃 정보 → wtmp → last
로그인, 로그아웃, 시스템 관련, 종료 및 부팅, 재부팅, telnet 및 ftp 등 정보
3. 로그인 실패 정보 → btmp → lastb
4. syslog 운영체제 대한 로그, syslogd 데몬, /etc/syslogd.conf
/var/log/kern.log → syslog가 기록한 커널 수준 로그 파일
/var/log/syslog
- 주체별
kern : 커널 요청 시 기록
mail : 메일 서브 시스템 요청 시 기록
lpr : 프린팅 서브시스템 요청 시 기록
daemon : 시스템 서버 프로세스 요청 시 기록
auth : 로그인 인증 시스템 요청 시 기록
* 위험성
emerg > alert > crit > err > warn > notice > info > debug
* /etc/syslogd.conf 예제
kern.* -/var/log/kern.log → 모든 커널 로그 해당 경로
mail.err -/var/log/mail.log → 메일 err 수준 로그 해당 경로
- 작업 스케줄 cron, /etc/crontab
프로세스 확인, ps -ef | grep cron
* crontab 구조
분 시 일 월 요일 사용자 실행명령
## 분 → */10 : 10분마다 실행
* crontab 옵션
-l : 현재 로그인 계정 기준 스케줄 확인, -e : 현재 로그인 계정 기준 작업 등록
-r : 작업 삭제, -u : 삭제 시킬 유저명 설정
##at : cron과 달리 정해진 시간에 한번만 실행
- 리눅스 리다이렉션
ls > test.txt 파일 존재 시 덮어 씀
ls >> test.txt 파일에 내용 추가
- 리눅스 파이프 : 명령 실행 결과 전달
ls -al | grep “test”
- 리눅스 침입자가 수행하는 공격
백도어 설치, 흔적 삭제를 위한 로그 삭제 및 변조, 리버스 연결 시도, 과도한 권한 부여
- find 탐지 : 파일명, 특정 권한, 시간 검색
ex) find / -name *.php > result.txt
실행가능 스크립트 탐색, 형식 php, asp, jsp
rootshell 악성 코드
find / -name “[A-Z]*” #첫글자 대문자 탐색
“[a-z][A-Z][0-9]*” #소문자 대문자 숫자로 시작하는 파일(sS7)
“ “ #공백 들어간 파일
find / -perm +6000 2>/dev/null #setuid, setgid 부여된 파일
find / -mtime -20 #최근 20일동안 변경된 파일
find / -nouser #소유자 없는 파일
- 파일 무결성 검사
tripwire : 해시값 사용하여 파일 무결성 검사
tripwire --init : 해시값 저장 DB 초기화
tripwire --check : 무결성 검사 수행
# twpol.txt : 보안정책 파일 감시대상과 위치
# site.key file : 정책 파일, 환경파일 설정
# local.key file : 데이터 베이스와 레포트, 파일 초기화 및 보호
- 패스워드 크래킹 도구
John The Ripper, pwdump, hydra
'자격증 > 보안기사' 카테고리의 다른 글
02_네트워크_3 (0) | 2021.01.23 |
---|---|
02_네트워크_2 (0) | 2021.01.23 |
02_네트워크_1 (0) | 2021.01.22 |
01_시스템 보안 정리_3 (0) | 2021.01.22 |
01_시스템 보안 정리_1 (0) | 2021.01.21 |
댓글