PAM (장착형 인증 모듈 : Pluggable Authentication Modules)


플러그인 방식의 인증 모듈
중앙통제가 가능하다
각 응용프로그램에 대한 인증 형태, 사용자 권한, 접근 자원등을 선택할 수 있다

PAM 라이브러리 관련 경로
/etc/pam.d : PAM 라이브러리를 이용하는 각 응용프로그램, 서비스의 설정파일 위치
/lib/security : PAM 라이브러리가 제공하는 다양한 인증 모듈 위치
/etc/security : PAM 모듈 실행에 필요한 추가 설정 파일 위치

root 계정의 원격 접속제한
SunOS의 보안설정
/etc/default/login 파일의 CONSOLE 라인 주석(#) 제거
ex)
CONSOLE = /dev/console
LINUX의 보안설정
/etc/pam.d의 remote 서비스 설정 파일에 pam_securetty.so 모듈 추가
/etc/securetty 파일의 pts/~ 터미널 주석(#)
(pts : 텔넷, SSH 등을 통해 원격으로 접속하는 가상 터미널)
AIX의 보안설정
/etc/security/user 파일의 rlogin 설정을 false로 한다
ex)
rlogin = false
HP-UX의 보안설정
/etc/securetty 파일의 console 라인 주석(#) 제거
ex)
console

계정 잠금 임계값 설정
암호 입력 실패 횟수를 제한하여 초과시 패스워드를 일정시간 잠근다
/etc/pam.d 의 system-auth 서비스 설정파일에 pam_tally2 모듈 추가
ex)
auth required pam_tally2.so deny=5 unlock_time=120 no_magic_root reset
deny : 실패 제한 횟수
unlock_time : 계정 잠근 해제 시간(초)
no_magic_root : root 계정은 적용 안함
reset : 접속 성공시 실패횟수 초기화


Tcpwrapper


외부에서 들어오는 클라이언트에 대해 접근통제 기능을 제공한다

클라이언트의 IP주소를 확인하여 시스템 관리자가 접근을 허용한 호스트에게만 서비스를 허용한다

Tcpwrapper 프로세스 경로 : /usr/sbin/tcpd


1) hosts.allow 파일을 참조하여 해당 호스트 정보가 있으면 접근을 허용한다

2) hosts.deny 파일을 참조하여 해당 호스트 정보가 있으면 접근을 차단한다

3) default로 모든 접근을 허용한다


hosts.allow , hosts.deny 파일 형식

service_list : client_list [:shell_command]

service_list , client_list : ALL - 모든 서비스, 호스트 , LOCAL - 같은 네트워크

에 있는 모든 호스트 , B EXCEPT A - A를 제외한 모든 B

shell_command : 접근 통제 리스트(ACL)에 일치하는 것이 있으면 실행하는 

명령어


ex)

hosts.allow 파일

ALL : 192.168.1.1

192.168.1.1 는 모든 서비스 허용

ALL EXCEPT in.telnetd : ALL

모든 호스트는 텔넷을 제외한 모든 서비스 허용


hosts.deny 파일

in.telnetd : 192.168.0.104 : twist /bin/echo "message"

192.168.0.104 의 텔넷 접속을 거부하고 메시지 출력

ALL : ALL

모든 호스트에 대해서 모든 서비스 거부


슈퍼데몬(inetd 데몬)


서비스 동작 방식

stand-alone 방식 : 개별 서비스별로 서버 프로세스(데몬)가 동작하는 방식

  빠른 속도, 많은 리소스 점유

inetd(xinetd) 방식 : 슈퍼데몬(inetd 데몬)을 사용하여 개별 서비스를 동작하

   는 방식

   느린 속도, 리소스 절약


슈퍼데몬(inetd 데몬)

N개의 개별 서버를 하나로 통하하여 클라이언트로 부터 서비스 요청이 올때마다 해당 서비스에 관련된 실행 모듈을 실행한다

최초 실행시 /etc/inetd.conf 파일에서 서비스할 프로그램의 정보를 얻는다


inetd.conf 파일구조

서비스명소켓타입 프로토콜 플래그 사용자계정 경로명 인수

서비스명 : /etc/services 파일에 등록된 포트번호 참조

서비스명을 인덱스로 하여 /etc/services 파일과 서로 연계한다

소켓타입 : stream - TCP , datagram - UDP

프로토콜 : /etc/protocols 파일의 프로토콜 중 사용가능한 프로토콜 설정

플래그 : nowait - 서비스 요청을 받은 즉시 처리

wait - 이전 처리가 완료될 때까지 대기후 처리

ex)

ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd -l -a


*/etc/protocols 파일 : 프로토콜과 프로토콜 식별번호를 정의

*/etc/services 파일 : 여러 서비스에 대한 포트/프로토콜 정보를 정의 



cron 데몬 프로세스


시스템에서 정기적인 작업을 지정시간에 처리

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


crontab 파일의 구조

    시    일    월    요일    작업

* : 모든값

- : 값의 범위

, : 값의 구분

/ : 간격 값

ex)

*/10    *    *    *    * batch.sh : 매 10분간격으로 batch.sh 실행


crontab [opt] [login_name]

crontab 파일을 편집한다

옵션

-e : crontab 파일을 편집한다

-l : crontab 파일을 출력한다

-r : crontab 파일을 삭제한다

ex)

crontab -l


파일 시스템 관리


파일 시스템 연결

mount [opt] [device | mount_point] [device | mount_point]

보조기억장치에 설치된 파일 시스템을 UNIX 시스템이 인식하도록 특정 디렉토리에 연결

옵션

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

ex)

/dev/cdrom 에 설치된 파일 시스템(CD-ROM)을 /mnt/cdrom 디렉토리에 마운트

mount /dev/cdrom /mnt/cdrom


파일 시스템 연결해제

umount [opt] [device | mount_point]

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

/etc/mtab : 시스템에 마운트된 파일 시스템의 정보관리

옵션

-a : 마운트된 모든 파일 시스템을 umount

-f : 파일 시스템을 사용중인 프로세스를 강제종료하고 파일 시스템을 umount

ex)

/dev/cdrom 의 파일 시스템(CD-ROM) 연결을 해제한다

umount /dev/cdrom


하드디스크 사용량

de [opt] [directory_name]

디렉토리의 하드디스크 사용량 확인

옵션

-a : 하위 파일의 사용량도 보여준다

-s : 현재 디렉토리가 차지하는 사용량만 보여준다

-k : KB단위로 보여준다

ex)

현재 디렉토리의 총 사용량을 보여준다

du -s


파일시스템 용량 정보

df [opt] [directory_name]

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

옵션

-k : KB단위로 보여준다

-i : i-node 정보를 보여준다

ex)

현재 마운트된 모든 파일 시스템을 KB단위로 보여준다

df -k



UNIX 시스템의 부팅 과정


바이오스 과정

바이오스는 시스템의 기본적인 하드웨어(CPU , 메모리 등)의 이상유무를 점검하고 정보를 수집한다

부팅 프로그램 과정

커널을 읽어들여 메모리에 적재하고 시스템 제어권을 커널에 넘긴다

커널 과정

운영체제 구동

하드웨어 점검완료, 내부 자료구조 초기화, 부가적인 커널 모듈을 메모리에 적재

init 프로세스 과정

커널에 의해 생성되는 첫번째 프로세스 (PID=1)

UNIX 프로세스의 부모 프로세스, 초기화 작업 담당


런레벨 (Run Level)

시스템의 운영상태 표시

런레벨 이동 : init 런레벨


런레벨 종류

런레벨 

설명 

0 

PROM (Programmable Read Only) 모드 

S , s 

싱글유저모드 (마운트 안됨) 

1 

싱글유저모드 (마운트 됨) 

2 

멀티유저모드 (클라이언트 모드) 

3 

멀티유저모드 (서버 모드) 

4 

 

5 

시스템 Power off 

6

시스템 리부팅 


시그널 (프로세스간 통신)

kill [opt] PID

프로세스간 통신 : 시그널, 파이프, 메시지큐, 공유메모리, 세마포어 등

UNIX 시스템에서 지원하는 소프트웨어 인터럽트

외부에 의해서, 에러에 의해서, 이벤트에 의해서, 인위적으로 발생

옵션

-signal_number 또는 signal_name

-l : 시그널 목록 출력

ex)

kill -9 1234

kill -l


주요 시그널 번호, 시그널 명

시그널 명 

번호 

설명 

SIGINT 

2 

포그라운드 프로세스 그룹내 모든 프로세스 종료 

SIGKILL 

9 

프로세스 종료 (무시못함) 

SIGSTOP 

23 

프로세스 정지 (무시못함)

SIGTERM

15

프로세스 종료 

SIGFPE

8 

산술연산 에러 

SIGCHLD 

18 

부모 프로세스에게 종료, 정지를 알림 

SIGALRM 

14 

타이머 

SIGQUIT 

3 

전위 프로세스 그룹내 모든 프로세스 종료 

SIGSEGV

11 

잘못된 메모리 참조 

SIGHUP

1 

터미널 연결 끊어짐, 환경파일 재설정 



프로세스 확인 (ps 명령어)


ps [opt]

시스템에 상주하는 프로세스 정보를 출력

옵션

-f : 한줄씩 프로세스 정보 출력

형식 UID PID PPID C STIME TTY TIME CMD

-l : 한줄씩 프로세스 정보 출력(자세히)

형식 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

-a : 제어 터미널을 가진 프로세스 정보 출력

-A , -e : 실행중인 프로세스 정보 출력

ex)

ps -ef


ps -f

필드명 

설명 

UID 

USER ID 

PID 

Process ID 

PPID 

Parent Process ID 

STIME 

프로세스가 시작된 시간 

TTY 

프로세스와 연결된 터미널 

TIME 

CPU 사용시간 

CMD 

프로세스명 


ps -l

 필드명

설명 

F 

프로세스 플래그

(1 : fort()를 통해 생성 , 4 : 슈퍼유저가 생성) 

S 

프로세스 현재상태

(R : ready, running , S : 인터럽트 가능한 sleep , D : 인터럽트 불가능한 sleep , T : 정지상태 , Z : 좀비 프로세스) 

PRI 

프로세스 우선순위 

NI 

우선순위 계산시 사용 

ADDR

프로세스 메모리 주소 

SZ 

프로세스 메모리 크기 

WCHAN 

sleeping 상태의 프로세스가 대기하는 커널 함수명 


프로세스 관련 식별자 (PID, PPID, PGID, SID)


Process ID (PID) : 시스템, 커널 내에서 프로세스를 식별하기 위한 고유ID

Parent Process ID (PPID) : 부모 프로세스를 식별하기 위한 ID

Process Group ID (PGID)

- 프로세스 그룹을 식별하기 위한 ID

- 모든 프로세스는 반드시 하나의 그룹에 속하게 되며 PGID는 해당 그룹의 리더 프로세스(쉘로 부터 실행된 프로세스) PID 이다

Session ID (SID)

- 세션 내에는 여러 프로세스 그룹과 프로세스들이 있다

- SID는 해당 세션의 리더 프로세스(로그인 쉘) PID이다


+ Recent posts