1. 유닉스
1) 유닉스 시스템의 특징
대화식 운영체제, 멀티 태스킹, 멀티 유저, 호환성 및 이식성 우수, 계층적 파일 시스템, 뛰어난 통신 기능 및 다양한 유틸리티를 제공한다.
커널 (Kernel)
항상 메모리에 상주하여 하드웨어 자원을 제어하면서 프로세스 스케줄링, 기억장치 관리, 파일관리, 시스템 호출, 입출력 서비스를 제공한다.
가장 하위 수준에서 하드웨어와 직접 관계한다.
커널의 일부분은 컴퓨터 시스템 하드웨어에 종속적이다.
시스템 호출: 사용자 프로그램이 커널에 접근하는 인터페이스를 제공한다.
쉘 (Shell): 명령어 해독기 역할을 수행한다.
파일 시스템 (File System): 계층적 파일시스템으로 구성되어있다.
2) 파일 시스템 구조
i-node
파일에 대한 정보를 기억하는 약 120byte의 고정된 크기의 구조체이다.
파일의 이름과 내용은 저장되어있지 않다.
파일에 대한 정보(파일의 허가권, 소유권, 그룹, 최근 수정된 시간)과 파일에 해당된 디스크 블록의 주소를 저장한 필드로 구성되어있다.
MAC time
atime(access): 마지막 접근시간
mtime(modification): 마지막 변경시간
ctime(status change):마지막 파일 속성 변경시간
Super Block
파일 시스템의 정보를 유지하는 자료구조이다.
파일시스템의 요약정보와 함께 사용하지 않고 있는 i-node와 디스크 블록 위치 정보를 가지고 있다.
3) 파일 시스템 관리
Disk를 논리적인 파티션으로 분리한 후 파일 시스템을 생성하고 특정 디렉터리에 마운트 한다.
mount란 보조기억장치에 설치된 파일 시스템을 UNIX 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결한다.
2. 프로세스
PID가 0인 프로세스를 제외한 모든 프로세스는 부모 프로세스를 갖는다.
1) 프로세스 종류
swapper (PID 0)
부팅 시간 동안 운영체제에 의해서 생성된다. (커널 프로세스)
init와 pagedaemon 프로세스를 만들기 위해서 fork/exec를 두 번 실행한다.
fork: 새로운 프로세스를 생성하기 위해 복사본 프로세스 생성
exec: 프로세스 이미지가 전이 되어 PID는 동일하지만 다른 프로세스로 덮어짐
init (PID 1)
부팅의 마지막단계에서 Lun Level에 따른 시스템 초기화 작업을 진행한다.
자식프로세스가 존재하는 상태에서 부모 프로세스가 종료되게 되면 자식프로세스의 부모 프로세스는 init 프로세스가 된다.
pagedaemon (PID 2)
swapper와 함께 커널에서 영구적으로 실행되는 프로세스이다. (커널 프로세스)
고아 프로세스
부모 프로세스가 자식 프로세스보다 먼저 종료되었을때 발생한다.
좀비 프로세스
프로세스가 종료되었지만 부모 프로세스가 확인하지 못한경우 프로세스는 소멸되었지만 프로세스 관리정보가 남아있게 된다.
좀비프로세스를 확인하는 방법은 ps -l 명령어를 입력하면 상태정보가 Z로 표시되게 되고 파일명 뒤에 <defunct>가 표기된다.
좀비 프로세스가 많아져서 더 이상 프로세스를 생성하지 못하는 시스템 가용성에 문제가 발생할 수 있다.
좀비 프로세스 종료 방법
top -b -n 1 | grep zombie
ps -ef | grep defunct
2) 프로세스간 통신
프로세스에게 특정 상황이 발생했음을 알라는 비동기적 통지(Asynchronous Notification)이다.
SIGKILL(9): 무시하거나 임의로 처리할 수 있는 시그널
SIGSTOP(23): 프로세스를 정지시키는 프로세스 제어 시그널
3. 유닉스 시스템 관리
1) Run-Level
시스템 운영 상태를 숫자 또는 문자로 표현한 것이다.
/etc/inittab
파일에 정의된 런 레벨에 따라/etc/rc[x].d
디렉터리에 나열된 스크립트를 실행한다.
4. 유닉스 서버 보안
1) passwd 파일 (/etc/passwd)
시스템 관리자가 사용지 계정을 만들 때마다 사용자와 관련된 정보를 저장하고 7개의 필드로 구분되어 있다.
UID: 100번 이하는 시스템, 0번은 시스템 관리자가 사용한다.
로그인이 불필요한 계정은 로그인쉘 항목을 /sbin/nologin
또는 /bin/false
으로 지정한다.
사용자 계정 명:사용자 패스워드:UID:GID:코멘트:홈디렉터리:로그인 쉘
UID, GID가2 0인 경우 root를 의미한다. root가 아니더라도 일반사용자가 UID, GID가 0이라면 root 역할을 할 수 있기 때문에 0으로 변경되었는지 확인해야 하고, 로그인 쉘을 변경하여 사용자가 로그인 시 악성 쉘을 실행되게 하는 경우도 있으므로 주기적으로 변경 되었는지 점검 해야한다.
passwd -x 60 test_user: 60일마다 패스워드를 교체하도록 설정한다.
2) shadow 파일 (/etc/shadow)
암호화된 패스워드가 저장되도록하고 관리자만이 읽을 수 있도록 제한한다.
암호화된 패스워드 형식: $id$salt$encrypted_password (일방향 해시 알고리즘) → 쉐도우 패스워드 파일을 사용 (해시 암호화 패스워드 파일)
3) 접근권한 마스크 (umask)
시스템 관리자는 /etc/profile
에 umask를 설정하여 전체 사용자에게 동일한 umask 값을 줄 수 있다.
개별 사용자에 대한 설정은$HOME/.profile
이다.
4) 권한 상승 (SetUID, SetGID), 디렉터리 접근 권한 (Sticky-bit)
실행 권한이 없는경우 소문자, 있는경우 대문자로 대입된다.
setUID(4)
실제 사용자가 아닌 해당 파일의 소유자 권한으로 실행된다.
/etc/passwd
파일에 적용되어 있다.
setGID(2)
실제 사용자 계정이 아닌 소유그룹의 권한으로 실행된다.
부서원들이 많은 그룹에서 관리할 디렉터리에 setGID를 사용하면 모든 사용자는 같은 소유그룹의 권한으로 파일을 관리할 수 있다.
Sticky-bit(1)
설정된 디렉터리 내부 파일은 해당 파일의 Owner와 super user만 삭제하거나 이름을 변경하는 것이 가능하다.
사용자들은 해당 디렉터리에 쓰기 권한은 존재하지만 다른 사람의 파일은 삭제할 수 없다.
Set UID | Set GID | Sticky Bit | |
chmod | 4, owner 부분 S(실행권한 x), s | 2, group 부분 S, s | 1, x |
역할 | 실행시 사용자 권한으로 실행 | 실행시 그룹 권한으로 실행 | root, super 유저만 파일 수정 삭제 가능 |
5. 사용자 관리
1) 사용자 계정 관리(useradd, usermod, userdel)
useradd 명령어 옵션
-u [UID]
-g [Primary GroupID]
-G [Secondary GroupID]
-d [Home_Dir]
-s [shell]
-e [expire_date] -e 2022-10-31
-f [계정 비활성화 일수]
userdel-r [UserID]: 홈디렉터리까지 삭제
계정 생성 시 참고하는 파일
/etc/login.defs
/etc/default/useradd
/etc/skel
2) 사용자 그룹 관리(/etc/groups)
사용자는 하나의 기본그룹과 복수의 보조그룹에 소속될 수 있다.
기본그룹: 자원을 생성하게 되면 그 자원의 소유 그룹이다. (/etc/passwd 4번째 필드)
보조그룹: 권한이 필요할 경우 할당하는 그룹이다.
위치: /etc/groups
그룹명:그룹의 암호화된 패스워드(x는 사용안함의 의미):GID:그룹에 소속된 계정
3) 사용자 환경설정 파일
모든 사용자
/etc/profile: 환경 설정 내용 저장(history 저장 개수)
/etc/bashrc: 자원에 대한 환경 설정 저장(umask)
개별 사용자
.bash_profile: 개별 사용자 환경 설정 저장
.bashrc: 개별 사용자 자원에 대한 환경 설정 저장
6. 네트워크 보안
1) 데몬 (deamon)
1.1) inetd 서버
n개의 개별 서버를 하나로 통합하여 클라이언트로부터 서비스 요청이 올 때 마다 해당서비스와 관련된 모듈을 실행해준다.
불필요한 서비스를 제한하기 위해서 /etc/inetd.conf
파일을 수정한다. (주석처리(#))
inetd.conf
는 7개의 필드가 존재한다.
1.2) standalone 서버
독립적으로 실행된다.(메모리에 독립 데몬으로 상주)
자체 설정파일에 의해 접근제어를 할 수 있다. (http, sendmail, name)
standalone 데몬은 inetd 데몬이 통제할 수 없다.
2) 접근 통제 (TCPWrapper)
외부에서 들어오는 클라이언트에 대해IP 주소를 확인하여 접근통제 기능을 제공한다.
inetd 데몬을 tcpd 데몬을 통해 통제 한다.
서비스 요청 과정: ① inetd 데몬 → ② tcpd 데몬 → ③ 접근 권한 검사 → ④ 해당 데몬에 연결
2.1) hosts.allow, hosts.deny 파일
접근 허용 리스트는 /etc/hosts.allow
, 접근 제한 리스트는 /etc/hosts.deny
파일에 설정할 수 있다.
host.allow 파일이 적용된 이후 host.deny 파일이 적용된다.
allow, deny 두개 다 포함되어 있을 경우 allow파일로 인식한다.
설정 내용에 오류가 없는지 확인하기 위해 /etc/sfw/sbin/tcpdchk
를 실행한다.
3) crontab 접근 제어
cron.allow 파일에 등록되어 있는 사용자만이 crontab 명령을 실행할 수 있다.
cron.deny 파일에 명시된 사용자를 제외하고는 모든 사용자가 crontab 명령을 실행할 수 있다.
두파일이 모두 없는 경우 root만이 crontab 명령을 실행 할 수 있다.
두파일이 모두 존재하는경우 cron.allow 파일이 우선하여 해당 파일에 등록된 사용자만이 crontab명령을 실행할 수있다.
cron.allow, cron.deny 파일은 640이하로 설정한다.
4) PAM (Pluggable Authentication Modules, 장착형 인증 모듈)
리눅스 시스템 내에서 사용되는 응용 프로그램에 대한 인증, 사용자 권한, 접근 자원을 선택할 수 있는 인증용 라이브러리이다.
리눅스 배포판에서 사용자 인증의 핵심이다.
로그인이나 Telnet, FTP 등 각종 프로그램 사용 시 PAM을 통해 인증을 처리한다. 프로그램 개발 시 인증모듈을 별도로 개발하지 않고 플러그인(Plug-in) 방식의 PAM을 사용함으로써 인증 방식 및 정책의 유연성과 중앙 통제가 가능하다
/etc/pam.d: 라이브러리를 이용하는 각 응용 프로그램의 설정 파일이 위치한다.
/lib/security: 라이브러리가 제공하는 다양한 인증 모듈들이 위치한다.
/etc/security:모듈 실행에 필요한 추가 설정 파일이 위치한다.
3.1) PAM 인증 절차
① 프로그램은 인증이 필요한 부분에 PAM 라이브러리를 호출한다.
② 해당 프로그램의 PAM 설정파일을 참조하여 등록된 여러 PAM 모듈들을 수행하고 그 결과를 프로그램에 반환한다.
③ 프로그램은 반환된 결과를 이용하여 인증 여부를 결정한다.
3.2) PAM 설정 파일
설정 파일 | 설명 | 종류 |
type | 모듈 종류 | account: 사용자의 시스템 사용권한 확인모듈 auth: 인증기능 모듈 password: 패스워드 설정 및 확인모듈 session: 인증 성공 시 세션을 맺어주는 모듈 |
control | 각 모듈 실행 후 성공 또는 실패에 따른 PAM 라이브러리 행동 결정 | requisite: 모듈 실패시 인증 거부 required: 실패 하더라도 즉시 인증 거부를 하지 않고 동일 유형 모듈 실행 완료 시점에서 거부 sufficient: 인증시 승인, 실패시 재인증 optional: 모듈의 성공, 실패 응답을 상관하지 않음 |
7. 리눅스 개념
1) 리눅스 개요
유닉스를 PC버전으로 개발하려 노력한 산물이다.
FSF(Free Software License)의 GNU Project로서 진행되고 있다.
2) 리눅스 파일 시스템 종류
2.1) minix
가장 오래되고 기본이 되는 파일 시스템이다.
30문자로 제한되고 파일 시스템마다 최대 64MB의 성능 제한이 있다.
2.2) ext2 (Second Extended File System, 2차 확장 파일시스템)
2GB의 단일 파일 크기를 가지고 4TB의 디스크 사용이 가능하다.
캐시에 저장되어 있는 데이터를 디스크로 저장하는 도중 다운되거나 문제가 생길경우 파일 시스템이 손상된다.
fsck(file system check)기능을 제공하는데 시간이 많이 소요되며 실행하는 도중에는 시스템 사용이 불가능하다.
2.3) ext3
저널링(Journaling)기술을 제공한다. (ext2 단점 보안)
시스템 무결성 및 복구기능을 가지고 있고 ext2와 호환된다.
2.3) ext4
16TB 이상의 파일 크기를 지원하고 1EB이상의 볼륨 사용이 가능하다.
단편화를 억제할 수 있고 지연된 할당 파일시스템을 지원한다.
8. 유닉스/리눅스 서버 취약점 분석 평가
1) root 계정 원격 접속 제한
원격 접속시 root 계정으로 로그인 할 수 없도록 설정해야 한다.
1.1) Unix
#/etc/default/login
CONSOLE=/dev/console
1.2) Linux
#/etc/pam.d/login
auth required /lib/security/pam_securetty.so
#/etc/security
2) 계정 잠금 임계 값 설정, 패스워드 최소길이 설정
Brute Force Attack, Password Guessing공격 시 암호입력 횟수 제한, 패스워드 길이제한을 통해 공격을 차단한다.
2.1) Unix
#/etc/default/login
RETRIES=5 #시도 횟수
#/etc/default/passwd
PASSLENGTH=8 #패스워드 길이
MINWEEKS=1 #최소 사용기간
#/etc/security/policy.conf
LOCK_AFTER_RETRIES=YES
2.2) Linux
#/etc/pam.d/system-auth
auth required /lib/security/pam_tally.so deny=5 umlock_time=120 no_magic_root
account required /lib/security/pam_tally.so no magic_root_reset
3) root 이외의 UID가 '0' 금지
root(UID=0)과 동일한 UID를 가진 계정은 root권한을 가질 수 있다.
/etc/passwd 파일을 통해 UID가 0인 계정이 있는지 확인한다.
4) root 홈, 패스 디렉터리 권한 및 패스 설정
root 계정의 PATH 환경 변수에.
이 포함되어 있으면root 계정의 인가로 인해 비의도적으로 현재 디렉터리에 있는 명령어가 실행될 수 있다.
echo $PATH
출력되는 PATH 변수에 .
또는 ;;
포함 여부 확인한다.
.이 필요하다면 맨 마지막으로 이동하여 포함시킨다.
5) 파일 및 디렉터리 소유자 설정
이전에 아이디를 제거했는데 파일이 그대로 남아있어서소유자가 존재 하지 않는 파일 및 디렉터리가 발생할 수 있다.
중요 파일 및 디렉터리일 경우 문제가 발생할 수 있으므로 관리가 필요하다. (소유자가 nouser이거나 nogroup인 파일이나 디렉터리 검색)
5.1) Unix
find /-nouser -o -nogroup 0ls 2 > /dev/null
5.2) Linux
find / -nouser -print
find / -nogroup -print
6) HOME/.rhost, hosts.equiv 사용 금지
r
명령어는 인증 없이 관리자의 원격접속을 가능하게 하는 명령어 이다.
서비스 포트가 열러있을 경우 중요 정보 유출 및 시스템 장애 발생 등 침해 사고의 원인이 된다.
#chown root /etc/hosts.equiv //hosts.equiv, rhost의 소유자를 root 또는 해당 계정으로 변경
#chown root $HOME/.rhost
#chmod 600 $HOME/.rhost //.rhost 권한 600이하로 설정
root /etc/hosts.equiv
, $HOME/.rhost
에서 +
를제거하고 반드시 필요한 호스트 및 계정만 등록한다.
9. 기타 알아야할 사항
halt: 강제 종료 (무결성을 보장하지 않는다.)
shutdown: 종료 (무결성을 보장한다.)
reboot: 재부팅 (무경성을 보장하지 않는다.)
[출처]
1.PAM: http://blog.skby.net/linux-pam-pluggable-authentication-module/
'Certification Study > 정보보안기사' 카테고리의 다른 글
[정보보안기사] 17. 각종 시스템 보안위협 및 대응책 (출제율: 3.2%) (0) | 2020.02.10 |
---|---|
[정보보안기사] 16. 서버 보안 관리 (출제율: 3.6%) (0) | 2020.02.08 |
[정보보안기사] 13. 클라이언트 보안 (출제율: 2.3%) (0) | 2020.02.06 |
[정보보안기사] 12. 보안 운영체제 (출제율: 0.5%) (0) | 2020.02.05 |
[정보보안기사] 10. 접근통제 보안 모델 (출제율: 2.4%) (2) | 2020.02.03 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊