카테고리 없음

PART1-01 시스템 기본 학습 2017-10-16(2)

샌디아고 2017. 10. 17. 00:29

3. UNIX/linux 시스템 관리


*런 레벨(run level)

     시스템의 운영 상태를 숫자 혹은 문자로 표현한 것.

init 프로세스는 /etc/inittab 파일에 정의된 런 레벨에 따라 /etc/rc.d/rc[x].d 디렉토리에 나열된 스크립트를 실행하여 시스템의 운영상태를 구성한다.


런 레벨 3 = 멀티 유저 모드 (NFS 서버모드), UNIX 기본 런 레벨

런 레벨 5 = 시스템 POWER OFF (UNIX) , XWINDOW(LINUX)



현재 사용중인 런 레벨 확인 방법 : who -r(unix) /     runlevel(linux)



init 프로세스

1. pid = 1

2. 시스템 운영환경 초기화 -> 초기 프로세스 기동

3. 대리모 프로세스 


init + runLevel 로 해당 런 레벨로 이동할 수 있다.



* 하드디스크 동기화(sync)


유닉스 시스템은 하드디스크의 입출력에 대한 효율성을 높이기 위하여 버퍼를 사용한다.


비정상 종료시 버퍼의 내용이 반영되지 않아 파일시스템에 무결성 문제가 생긴다.


sync 명령어 = 버퍼의 내용을 하드디스크로 옮긴다.




사용자 관리 ★

useradd    사용자 계정 추가

root 만 사용가능


userdel    사용자 계정 삭제


userdel eom  => 1.홈 디렉토리, 사용자 메일함이 남겨진다.


userdel -r eom -> 다 지운다.


groupadd  새로운 그룹 추가


groupdel     기존 그룹을 삭제




파일 시스템 관리

* mount 명령은 보조기억장치에 설치된 파일 시스템을 unix 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결시켜 준다.


mount -a    ->          /etc/fstab 파일에 정의된 모든 파일 시스템을 마운트한다.


mount /dev/cdrom /mnt/cdrom ->        /dev/cdrom 디바이스 파일을 /mnt/cdrom디렉터리에 마운트한다.



* umount

이전에 마운트된 파일 시스템의 연결을 해제한다.



* du (disk usage)

디렉토리의 하드디스크 사용량을 확인하는데 사용한다.


*  df (disk free)


파일 시스템의 전체 공간 및 사용가능 공간에 대한 정보를 보여준다.


프로세스 스케줄 관리         ->>>>>     1. crontab 읽을수 있는 방법 2. crontab 명령 접근제어

  *정기적 스케줄 관리(cron)


cron 데몬 프로세스는 시스템에서 정기적인 작업을 지정시간에 처리하기 위해 사용한다.


ex)  일괄적으로 처리해야 하는 작업 

 작업에 대한 요구가 불규칙하지 않은 경우

 우선순위가 낮은 작업을 일정시기에 처리해야 하는 경우

 작업 빈도가 낮아서 필요 시점에 처리하여 마무리하는 것이 자원관리상 효율적인 경우



cron 데몬 프로세를 사용하려면 다음 세 가지 구성요소가 필요하다.

1. 정기적으로 처리할 작업 목록을 정의한 crontab 파일

2. crontab 파일을 제어하는 crontab 명령

3. crontab 파일을 읽어서 내용에 정의된 대로 작업을 처리하는 cron 데몬 프로세스



crontab 파일의 구조


필드1    분    0-59


필드2    시    0-23


필드3    일    1-31


필드4    월    1-12


필드5    요일    0-6 ( 0 은 일요일)


필드6    작업    절대 경로로 기술한다.



*     ->    범위에 해당하는 모든 값

-      ->    값의 범위를 기술

,      ->     값을 구분

/      ->      간격값




crontab 파일의 제어


crontab 파일은 사용자 계정별로 만들어진다.

 -e : 편집

 -l  : 출력

-r   : 삭제



crontab 명령 접근제어


/etc/cron.allow

/etc/cron.deny   이용



cron.allow만 존재할 경우 해당 파일에 등록된 사용자만 crontab 명령 실행가능


cron.deny만 존재할 경우 해당 파일에 등록된 사용자를 제외하고 모든 사용자가 crontab 명령 실행가능


두 파일 모두 존재하는 경우 cron.allow 파일을 우선시 한다.


두 파일 모두 없는경우 root만이 crontab 명령을 실행할 수 있다.




unix/linux 서버 보안 ★

과거엔 /etc/passwd 파일의 두 번째 필드에 비밀번호 저장

하지만 최근에는 /etc/shadow 파일에 암호화된 패스워드 저장



*etc/passwd 파일


[user_account]:[user_password]:[user_ID]:[group:ID]:[comment]:[home_directory]:[login_shell]

1                            2                        3            4                5                6                            7





1.    사용자 계정명, root 계정은 시스템에 대한 총괄 권한을 가지고 있어 공격자의 목표가 될 수 있다.

원격 접속을 금지하는 것이 보안상 안정하다.

일반 접속후 su명령어로 root계정전환



2.    x의 의미는 shadow 패스워드를 사용한다는 의미이다.


3.    UID        임의로 생성된 계정에 UID가 0으로 부여되어 있다면 root 권한 탈취를 위한 행위로 의심해 보아야한다.


4.    GID         임의로 생성된 그룹에 0으로 부여되어 있는지 점검한다.



7.    로그인 쉘 , 로그인이 불필요한 계정에 대해서는 로그인을 금지하는 것이 보안상 안정하다.

=> /sbin/nologin

/bin/false     



* /etc/shadow파일 (linux 기준)



 패스워드 정보를 평문으로 저장할 경우 정보 유출 피해가 발생할 수 있다.

그러므로 암호화하여 보호해야한다.


"etc/shadow" 파일에 암호화된 패스워드가 저장되도록 하고 관리자만이 읽을 수 있도록 제한한다.


shadow 파일에는  계정별 암호화된 패스워드 정보와 패스워드 에이징 정보가 저장되어 있다.



etc/shadow 파일 형식


[user_account]:[encrypted_password]:[last_change]:[minlife]:[maxlife]:[warn]:[inactive]:[expires]

1                               2                        3                    4            5             6            7            8



1. 사용자 계정명


2.암호화된 패스워드


3. 마지막으로 변경한 날


4. 패스워드 최소 사용시간 ( 패스워드를 변경할 수 없는 일수)



5.  패스워드 최대 사용시간


6. 패스워드 만료 이전 경고일수


7 . 


리눅스의 경우

패스워드 만료일 이후 n일동안 변경화면을 보여주고 그 이후에는 계정이 잠긴다.


유닉스의 경우


마지막을 로그인한 n일 이후 계정이 잠긴다.



encrypted_password 필드 구성

$id$salt$encrypte_password


id : 적용된 일방향 해시 알고리즘


salt : 패스워드 암호화 강도를 높이기 위한 값

서로다른 salt값(난수값)을 추가하여 암호화된 패스워드를 생성한다.



encrypted_password 필드의 기호



<linux>

*   ->    패스워드가 잠긴 상태로 패스워드 로그인은 불가하지만 별도의 인증방식을 사용하여 (ex/ SSH) 로그인 가능


!!   ->    패스워드가 잠긴 상태로 모든 로그인이 불가능하다. 기본적으로 사용자 계정을 생성하고 패스워드를 설정하지 않으면 이 상태가 된다.


빈값 ->    패스워드가 설저오디지 않은 상태이다. 패스워드가 설정되어 있지 않으면 패스워드 없이 로그인이 가능하기 때문에 반드시 패스워드를 설정해야 한다.




<unix>


NP  ->    no password의 의미로 로그인이 불가능한 계정



*LK*  ->  Lock의 의미로 패스워드가 잠긴 상태로 로그인이 불가능하다.


빈값       ->    패스워드가 설정되지 않은 상태이다. 패스워드가 설정되어 있지 않으면 로그인시 패스워드 설정과정이 진행된다.


passwd -l 패스워드 잠금 설정 명령


passwd -u 패스워드 잠금 해제 명령


1. process 관련 식별 ID

pid,    ppid,    pgid ,    sid


2. process 자원접근 권한 판단하기 위한 ID


RUID 실행파일을 실행시킨 사용자 ID

RGID 실행파일을 실행시킨 사용자그룹 ID


EUID 프로세스가 자원에 접근할때 접근 권한을 판단하기 위함

EGID



프로세스 실행권한[SUID, SGID]

SUID, SGID가 설정되지 않은 프로세스를 실행시키면 RUID와 EUID, RGID와 EGID가 동일하게 설정된다.


SUID,SGID 가 설정된 프로세스를 실행시키면 RUID와 RGID는 실행시킨 사용자의 UID,GID로 설정되고


EUID와 EGID는 실행파일의 소유자의 UID, GID로 설정된다.



특수 권한 비트(SUID, SGID)설정


4    S    (SUID)


2    S    (SGID)


1     t    (sticky-bit)




root 소유 SUID, SGID 실행파일 주기적 검사


find / -user root -type f \( -perm -4000 -o -perm 200 \) -exec ls -al {} \;




디렉터리 접근권한 (sticky-bit)

일반적으로 공유 디렉터리는 모든 사용자가 이용할 수 있도록 u, g, o에 rwx 권한을 부여한다.


문제는 다른 사용자가 만든 파일을 누구나 삭제 또는 파일명 변경을 할 수 있다는 점이다.


따라서 자유롭게 파일을 생성하되 파일 삭제나 파일명 변경은 소유자만이 가능하도록 할 필요가 있다.


Linux 경우 o+t

unix 경우 u+t