--로그인 과정
사용자 입력값과 /etc/passwd 내의 정보를 비교. 새로운 사용자 계정 생성될 때마다 /etc/passwd 파일에 해당 사용자 관련 정보 저장
/ets/passwd 파일 구조
사용자계정명:패스워드(shadow파일에 저장 시 암호화된 값):UID:GID:기타정보:홈 디렉터리:로그인 쉘
UID과 GID가 0이면 루트 사용자이고, 해당 필드를 해킹 시에 가장 많이 사용함
명령어) id_사용자확인, passwd_패스워드 변경, grep_파이프 명령으로 선행 명령의 출력이 후행의 입력,
입출력 재지정_ >(출력값 저장), >>(기존 값에 출력값을 추가해서 저장)
--파일 시스템 구조
1) boot block: 운영체제 부팅 및 초기화 관련 부트스트랩 코드 저장
2) super block: 해당 파일 시스템 관리를 위한 정보 저장
3) I-node: 파일의 속성 정보 저장. MAC time 개념 중요 >> mtime_파일 정보 마지막으로 변경된 시간, atime_파일에 마지막으로 접근한 시간, ctime_파일 속성 정보 마지막으로 변경된 시간
4) data block: 실제 파일의 데이터를 저장
--링크: 윈도우의 바로가기와 유사한 기능
하드링크: 파일을 복사해서 복사된 파일에 링크를 걸어 접근하는 개념. 하드링크를 생성하면 link count 값이 1씩 증가하고 파일 삭제 시에 1씩 감소시키는데, 이 값이 0이 되면 I-node의 정보를 삭제함. 같은 파일시스템 내에서만 링크를 걸 수 있고 디렉터리는 링크 불가능하다는 단점 존재
심볼릭링크: 파일 경로 기반으로 링크를 거는 개념이므로 원본 파일 수정/삭제되면 링크도 끊기나, 다른 파일 시스템에서나 디렉터리도 링크를 걸 수 있다는 장점 존재. -s 옵션으로 심볼링 지정.
링크 생성 명령어 >> ln [원본파일 위치&파일명] [링크 걸 파일 위치&파일명]
--프로세스 관련
유닉스/리눅스 시스템에서 프로세스가 생성되면 프로세스 별 관리 정보를 담은 PCB(Process Control Block)가 생성되고, pid가 0인 경우를 제외한 모든 프로세스가 부모 프로세스를 가짐.
fork()는 프로세스 생성을 위한 함수이며, 자식 프로세스가 종료될 때 무조건 부모 프로세스로 종료 정보를 보내고 부모 프로세스가 확인해야만 정상적으로 종료될 수 있음. 만약 부모 프로세스에 문제가 있거나 커널에 문제가 있어 정상적으로 종료되지 않은 프로세스는 좀비 프로세스가 됨. 프로세슨는 시스템 자원 중 하나로 좀비 프로세스가 많아지면 새로운 프로세스를 생성하지 못할 수 있으므로 좀비 프로세스를 제거해야 하며, kill명령으로도 종료되지 않기 때문에 커널 초기화(시스템 재부팅)을 통해 좀비 프로세스를 제거할 수 있음.(근본적인 해결 방법은 부모 프로세스의 오류를 해결하는 것)
자식 프로세스가 살아있는 상태에서 부모 프로세스가 종료된 경우에는 pid=1인 대리모 프로세스가 부모 프로세스의 역할을 대신 수행함.
대표 명령어: ps –ef_모든 프로세스를 한 줄씩 출력, ps –l_모든 프로세스에 대해 f옵션보다 더 많은 정보 출력
--유닉스/리눅스 시스템 관리
런레벨(init): 시스템의 운영상태를 숫자(0~6)/문자로 표시한 것.
0_PROM모드, S_싱글유저모드&로컬파일시스템 마운트X 1_싱글유저모드&로컬파일시스템 마운트O,
2_멀티유저모드&NFS클라이언트모드, 3_멀티유저모드&NFS 서버 모드&유닉스 기본 런레벨, 4_사용X,
5_power off, 6_reboot
시스템 관리명령어) useradd, userdel, groupadd, groupdel, mount, umount, du_HDD사용량, df_파일시스템 용량
**시스템 스케줄 관리
cron: 정기적 스케줄 관리를 위해 crontab 파일 읽어오는 명령어
crontab: cron작업 목록 파일로, 작업 목록 정의하는 명령어. [분-시-일-월-요일-작업] 필드로 구성.
e_편집, l_목록, r_제거 옵션을 통해 명령어 작성
at: 일시적 스케줄 관리. 작업 한 번만 필요한 경우 사용
--유닉스/리눅스 시스템 보안
패스워드 관리) 패스워드 암호화하여 shadow파일에 저장. 패스워드 파일의 패스워드 필드가 x인 경우 shadow파일에 패스워드 암호화된 형태로 저장되어 있음을 의미 >> shadow파일은 관리자만 접근할 수 있도록 설정. pwconv_shadow 파일에 패스워드 저장, pwunconv_패스워드 passwd 파일에 저장
**솔트값: 랜덤 값으로써, 패스워드와 함께 해싱하여 레인보우 테이블(특정 값과 해당 값이 해싱되었을 때를 매핑해 둔 테이블을 통한 패스워드 크래킹 공격)에 대한 대응법으로 사용됨. 최근에는 MD5도 안전하지 않아 SHA-256이상이 권장됨.
프로세스 실행 권한) 프로세스 실행 권한은 RUID/RGID(Real_실제 파일 실행 권한)와 EUID/EGID(Effective_프로세스 실행 중에 부여되는 일시적 파일 실행 권한)가 있음.
SUID/SGID 명령은 실행 파일 소유주의 권한으로 파일에 접근할 수 있도록 하는 명령어. 즉, EUID/EGID를 부여하는 명령어. SUID/SGID가 설정되지 않은 경우는 RUID/RGID와 EUID/EGID가 같음.
sticky bit는 파일 생성은 허용하나 파일 삭제/수정은 파일 소유주만 가능하도록 하는 명령
데몬 관련) stand alone 방식: 각각의 프로세스 별로 서버 프로세스(데몬) 존재해 빠른 서비스 가능하나, 서버 리소스 많이 씀
inetd(xinetd) 방식: 슈퍼 데몬을 통해 여러 프로세스 관리해 서버 리소스를 절약할 수 있으나, 느림. >> /etc/inetd.conf 파일에 서비스할 프로그램의 특징 정의해야 하며, 취약한 서비스에 대해서는 주석 처리를 통해 비활성화 해야 함. xinetd.conf는 글로벌, xinetd.d/서비스설정파일은 개별 서비스에 대한 설정 파일
**TCP wrapper: 외부에서 들어오는 클라이언트에 대한 접근 제어를 수행 >> hosts.allow&hosts.deny로 관리. allow 파일이 먼저 수행됨.
PAM(Pluggable Authentication Mudules): 리눅스에서 인증을 수행하는 모듈로, /lib/secure 내에 각 프로그램 별 설정파일이 있고, /etc/pam.d 내에 PAM 설정파일이 존재.
PAM을 통한 보안 설정 방법)
1) 루트에 대한 원격 로그인 차단: /etc/securetty 파일 내에서 pts로 시작하는 설정 주석처리. tty는 사용자가 직접 콘솔에 연결한 경우이고, pts는 가상 터미널을 통한 연결이기 때문.
SOLARIS, AIX, HP-UX는 설정 가능하나, 리눅스 시스템의 경우는 pts관련 설정이 없음.
2) 로그인 관련 제한: 비밀번호 입력 최대 횟수 및 횟수 초과 시 로그인 불가 시간 설정. 관련 파일로는 system_auth 파일이 있음
3) su, sudo명령 제한: su는 루트 권한을 이용하는 것으로 해당 명령 이용 권한을 줄 wheel 그룹으로 관리, sudo 명령은 루트를 포함한 다른 계정의 권한을 사용할 수 있는 것으로 sudoers 파일로 관리.
--유닉스/리눅스 주요 로그 파일
1) utmp: 현재 시스템에 로그인한 사용자들의 정보. w, who, finger 명령으로 확인.
2) wtmp: 사용자 별 로그인, 로그아웃에 대한 정보. last 명령으로 확인.
3) lastlog: 마지막으로 성공한 로그인에 대한 정보. lastlog 명령으로 확인.
4) btmp: 로그인 실패에 대한 기록. lastb 명령으로 확인
5) /var/adm/sulog: su 명령어 사용에 대한 기록
6) /var/account/pacct: 시스템에 로그인한 뒤 입력한 명령어와 사용한 터미널에 대한 기록. accton /var/account/pacct 명령이 선행되어야 함.
7) /var/log/xferlog: FTP 서비스에 대한 로그
8) /var/log/messages: 리눅스 시스템의 가장 기본적인 로그 파일
9) 기타 로그 파일: /var/log/cron, /var/log/maillog, /var/spool/mail
**syslog: 유닉스 시스템의 로그 관리 서비스로 syslogd가 중심에 있으며, /etc/syslog.conf 설정파일을 참조함. syslog는 기밀성, 무결성, 가용성이 고려되지 않았으므로 최근에는 rsyslog를 사용함
**logrotate
**.bash_history: 루트 계정의 명령어 실행 내역
--유닉스/리눅스 서버 취약점
1) 계정 관리
UID 0인 계정은 루트만, 패스워드 복잡성 설정, 패스워드 사용기간(최대 사용기간, 최소 사용기간) 설정, 패스워드 최소 길이 설정, 패스워드 저장 파일(/etc/shadow) 보호, 세션 타임아웃 설정
2) 파일 및 디렉터리 관리
루트 홈, 패스 디렉터리 권한 및 PATH 설정, 파일/디렉터리 소유자/소유그룹 설정, world writable 파일 점검, 주요 파일 소유자 및 권한 설정
'시스템 보안' 카테고리의 다른 글
| 시스템 공격(해킹) 방법 (0) | 2023.12.09 |
|---|---|
| 윈도우 보안 (0) | 2023.12.09 |