본문 바로가기

IT 관련정보/리눅스

리눅스 마스터 1급 - 실기 요약

출처: 북스 홀릭 

내용만 참조하시고, 기출 문제와 교재에 예상 문제를 꼭 풀어보세여



명령어

man, which

 

파일

find / -name 파일명

 

useradd --help

 

리눅스 실기 정리

사용자 생성 명령어

(1)사용자 계정 생성:useradd

옵션

의미

-p

사용자의 암호를 추가 시에 지정할 수 있다.

-d

홈 디렉터리를 지정할 때 쓰인다. 최종 디렉터리만 생성하므로 중간 경로가 있는 경우에는 미리 생성해야 한다.

-g

그룹을 지정할 때 사용하는데, 지정할 그룹이 미리 생성되어 있어야 한다. 이 옵션을 지정하지 않으면 레드헷 계열에서는 아이디와 동일한 그룹에 포함시키고, 다른 배포판에서는 users에 포함시킨다.

-G

기본 그룹이외에 추가로 그룹에 속하게 할 경우에 쓴다. 2차 그룹

-c

사용자 생성 시 사용자에 대한 설명을 설정한다.

-s

사용자 생성 시 사용할 셸을 지정한다.

-D

/etc/default/useradd에 설정된 유저추가와 관련된

기본 사항들을 보여준다.

-m

사용자를 생성할 때 홈 디렉터리를 생성해 주는 옵션. 보통 k 옵션과 같이 사용하여 사용자 생성 시 기본적으로 부여되는 목록이 들어있는 skeldir을 지정할 때 사용한다.

-k

사용자 생성 시에 제공되는 환경 파일들은 기본적으로 /etc/skel로 지정되어 있는데, 이외의 디렉터리를 지정할 때 쓰인다.

-f

사용자의 패스워드가 만기일을 날짜수로 지정한다.

-e

계정의 만기일을 YYYY-MM-DD 형식으로 지정한다.

-u

사용자 추가 시에 UID 값을 지정한다.

-L

lock 계정잠금

-U

unlock 계정잠금 해제


 

=>사용자 생성 시 기본적으로 적용되는 정보를 확인한다.

해당 정보 파일은 /etc/default/userradd이다

 

(2)사용자 암호 부여: passwd

등록된 사용자의 암호를 지정하거나 변경하는 명령어. passwd만 입력하면 현재 로그인 사용자의 암호가 변경되고, root만 다른 사용자의 암호를 변경할 수 있다.

 

[사용법]

$ passwd [사용자명]

 

[사용 예]

[posein@www ~]$ passwd

=>현재 로그인한 posein 사용자 본인의 암호를 변경한다.

 

[root@www ~]$ passwd yuloje

=>yuloje라는 사용자의 암호를 변경한다.

 

(3)사용자 전환: su(substitute user)

대리 유저라는 뜻의 약어로 시스템에 로그인되어 있는 상태에서 다른 사용자의 권한으로 셸(shell)을 실행할 수 있도록 전환하는 명령이다.

 

[사용 예]

[posein@www ~]$ su

=>root 사용자로 사용자를 전환한다. root로 권한자만 바꾸지만 환경 변수 등은 기존 사용자인 posein의 환경으로 적용되어 실제 root 권한을 수행하기에는 제약이 따른다.

 

[posein@www ~]$ su -

=>root 사용자로 사용자를 전환한다. 실제 root로 로그인한 것처럼 권한, 환경 변수 등 모든 환경이 root의 상태가 된다.

 

[posein@www ~]$ su root c “tail /etc/shadow”

=>사용자를 전환하지 않고 일회적으로 명령을 내릴 때 c 옵션을 사용한다.

 

사용자 관련 파일

 

useradd 명령을 실행하면 기본 설정은 /etc/defualt/useradd에서 정보를 가져오고, /etc/skel에 들어있는 파일 및 디렉터리를 사용자에게 제공한다. 생성된 사용자의 정보는 /etc/passwd/etc/shadow에 기록된다. /var/spool/mail/사용자아이디에 파일을 생성해 준다.

 

(1) /etc/passwd

=>사용자가 로그인하고, 로그아웃할 때까지 항상 시스템이 사용자를 감시하기 위한 근거가 되는 파일. /etc/passwd에는 콜론(:)을 구분자로 7개의 필드로 구성되dj 있음, /etc/passwd의 패스워드를 다시 암호화하여 /etc/shadow에서 추가로 관리한다.

 


 

[사용 예]

필드

설명

posein

사용자명으로 일명 ID라고 부른다.

x

사용자의 패스워드가 기록되는 부분, 이 필드에 기록되는 패스워드를 암호화하여 /etc/shadow에서 별도로 관리한다.

500

UserID로 리눅스에서는 사용자를 숫자값으로 관리한다.

500

GroupID로 리눅스에서는 사용자를 숫자값으로 관리한다.

System

Engineer

사용자에 대한 추가적인 정보가 기록되는 부분이다.

/home/posein

사용자에 대한 추가적인 정보가 기록되는 부분이다

/bin/bash

로그인 시 사용하는 셸을 나타낸다.

 

(2) /etc/shadow

=>/etc/passwd의 두 번째 필드인 패스워드 부분을 암호화하여 관리하며, 9개의 필드로 구성되어 있음. 이 파일은 오직 root만 접근할 수 있다.

 

 

[해당 필드 설명]

필드

설명

posein

사용자 이름, 즉 아이디를 나타낸다.

$6S...

암호화된 사용자의 패스워드가 기록되어 있는 곳

15917

가장 최근에 패스워드를 바꾼 날로 197011일부터 계산한 날수이다.

159172013731일에 해당한다.

0

패스워드를 바꾼 후 최소로 사용해야 되는 날짜수로 다른 패스워드로 변경하기까지의 유예기간이다. 0이면 언제라도 패스워드를 변경할 수 있다.

99999

현재 사용중인 패스워드의 최대 사용 가능한 기간, 즉 현재 패스워드 유효기간이다. 99999이면 패스워드를 변경하지 않고

계속 사용 가능하다는 것을 의미한다.

7

패스워드 사용기한이 만료되기 전에 사용자에게 바꿀 것을

경고하는 기간이다.

3

패스워드 사용기한이 만료된 뒤에 실제 계정 사용이 불가능하기까지 기간으로 일종의 유예기간이다.

16070

계정 만기일로 계정 사용 불가능하게 된 날 또는 불가능하게 되는 날

공백(9번째 필드)

다른 기능을 사용하기 위해 예약된 공간으로 아직 사용하지 않고 있다.

 

관련 명령어: pwconv, pwunconv

/etc/passwd에서 관리하려면 pwconv라고 입력하면 되고, 다시 /etc/shadow에서 관리하려면 pwconv라고 입력하면 된다.

 

(3) /etc/default/useradd

=>별도의 옵션없이 ‘useradd 사용자명으로 계정 생성 시에 기본적으로 적용되는 설정이 들어있는 파일이다.

 

 

필드

설명

GROUP=100

사용자 생성 시에 기본적으로 속하게 되는 그룹을 지정한 부분으로 GID100user라는 그룹에 속하게 된다.

HOME=/home

홈 디렉터리의 위치로 사용자를 생성하면 ‘/home/사용자명이 된다.

INACTIVE=-1

패스워드의 사용 기한이 지난 뒤 실제로 계정의 로그인을 막는 유예기간을 설정하는 것이다.

EXPIRE=

계정 유효기간을 지정하는 부분으로 ‘2013-12-31’와 같은 날짜로 지정한다.

SHELL=/bin/bash

사용자 생성 시에 할당되는 셸을 의미한다.

SKEL=/etc/skel

사용자 생성 시에 할당되는 셸을 의미한다.

CREATE_MAIL_

SPOOL=yes

사용자 생성 시에 메일 파일을 생성할 것인지를 지정하는 항목이다. yes로 설정하면 ‘/var/spool/mail/사용자명으로

메일 관련 파일이 생성된다.

 

(4) /etc/login.defs

메일 디렉터리, 패스워드 관련 설정(최대 사용기한, 최소 사용기한, 최소 길이, 만기 이전 경고 주는 날짜), UID의 최솟값 및 최댓값, GID의 최솟값 및 최댓값, 홈 디렉터리 생성 여부, 기본 UMASK , 패스워드에 적용하는 암호화 알고리즘 등이 정의되어 있다.

 

MAIL_DIR /var/spool/mail

=>사용자의 mail 디렉터리를 지정한다.

PASS_MAX_DAYS 99999

=>패스워드 최대 사용 기간을 지정한다.

PASS_MIN_DAYS 0

=>패스워드 변경 후에 사용하는 최소 기간을 지정한다. 0이면 패스워드 변경의 제한이 없다.

PASS_MIN_LEN 5

=>패스워드 최소 길이를 지정한다.

PASS_WARN_AGE 7

=>패스워드 만기일 도래 전에 경고를 보여주는 날짜를 지정한다.

UID_MIN 500

=>UID의 최솟값을 지정한다. 사용자를 추가하면 해당 UID 값부터 할당된다.

UID_MAX 60000

=>UID의 최댓값을 지정한다. 사용자를 추가하면 해당 UID 값까지만 할당된다.

GID_MIN 500

=>GID의 최댓값을 지정한다. 사용자를 추가하면 해당 GID 값부터 할당된다.

GID_MAX 60000

=>GID의 최댓값을 지정한다. 사용자를 추가하면 해당 GID 값까지만 할당된다.

CREATE_HOME yes

=>사용자 추가 시에 홈 디렉터리 생성 여부를 지정한다.

 

UMASK 077

=>사용자의 umask 값을 설정할 때 사용하는데, 077이면 사용자의 생성 값은 022가 된다.

USERGROUPS_ENAB yes

=>레드햇 계열 리눅스에서 옵션 없이 사용자를 추가하면 본인아이디와 동일한 그룹을 생성하여 포함시킨다.

MD5_CRYPT_ENAB yes

=>사용자 패스워드에 사용할 암호화 알고리즘을 지정하는 설정이다.

 

사용자 계정 관리 및 삭제

 

(1)사용자 계정 관리:usermod

사용자의 셸, 홈 디렉터리, 그룹, UID, GID 등을 변경하는 명령어로 사용자 관련하여 대부분의 정보를 변경할 수 있다.

 

[사용법]

#usermod [option] 사용자 계정

 

 

옵션

의미

-d

사용자의 홈 디렉터리를 변경한다. -m과 같이 사용하면 사용하던 홈 디렉터리의 파일과 디렉터리도 같이 옮겨준다

-m

사용자의 홈 디렉터리 변경 시 기존에 사용하던 파일 및 디렉터리를 옮겨주는 옵션으로 d와 함께 쓰인다.

-g

사용자의 그룹을 변경한다

-s

사용자의 셸을 변경한다.

-u

사용자의 UID 값을 변경한다.

-e

계정만기일을 변경한다.

-f

패스워드 만기일이 지난 후 패스워드에 Lock을 설정할 유예기간을 지정

-l

사용자아이디를 변경한다(--login)

-L

사용자의 패스워드에 LOCK을 걸어 로그인을 막는다.

-U

사용자의 패스워드에 걸린 LOCK을 푼다(--unlock)

 

(2)사용자 계정 삭제:userdel

 

[사용법]

#userdel [option] 사용자 계정

 

옵션

의미

-r

사용자의 홈 디렉터리 및 메일관련 파일까지 제거한다.

 


 

사용자 패스워드 관리

(1)사용자 패스워드 관리(1):passwd

passwd은 기본적으로 패스워드를 부여하거나 패스워드를 변경하는 명령이지만, 계정을 사용하지 못하게 하거나, 패스워드 만기일 및 유효기간 등을 설정할 수 있다.

옵션

의미

-S

사용자에 대한 패스워드 정보를 알 수 있다.

-l

사용자의 패스워드에 잠금을 걸어 로그인을 막는다.

-u

사용자에게 설정되어 있는 패스워드 잠금을 푼다.(--unlock)

-d

사용자의 패스워드를 제거한다.

-n

패스워드 변경까지의 최소 날짜의 설정한다.

즉 패스워드 변경 후 최소로 사용해야 되는 날짜수이다.

-x

현재 패스워드의 유효기간을 지정한다.

-w

패스워드 만료 전 경고 날짜를 지정한다.

-i

패스워드 만료된 뒤에 사용자 계정 사용이 실제 로그인이 불가능하게

하기까지의 유예기간을 설정한다.

-e

다음 로그인 시에 반드시 패스워드를 변경하도록 할 때 사용한다.

 

 

(2)사용자 패스워드 관리(2):chage

chage는 사용자의 패스워드에 대한 정보를 출력하고 설정하는 명령이다. /etc/shadow의 날짜 관련 필드 설정을 모두 할 수 있는 명령이다. 암호관련


 

옵션

의미

-l

사용자의 패스워드에 대한 정보를 보여준다.

-d

/etc/shadow3번째 필드에 해당하는 값인 최근 패스워드를

바꾼 날(197011일부터 계산한 날짜 수)을 수정한다.

-m

패스워드 변경의 최소 날짜를 지정한다. 즉 패스워드 변경 후 일정기간 사용해야될 최소 날짜수를 지정한다.

-M

패스워드를 변경 없이 사용 가능한 최대 날짜를 지정한다.

-l

패스워드 최대 사용기간 만료 후에 실제 패스워드에 잠금(LOCK)을 설정하기까지의 유예기간을 지정한다.

-E

계정이 만기되는 날을 지정한다. MM/DD/YY 또는 YYYY-MM-DD 형태로 지정한다.

-W

패스워드 만료 전 경고 날짜를 지정한다.

gpasswd

그룹의 패스워드를 설정하거나 그룹 관리자를 지정하는 명령어이다. 그룹관리자는 해당 그룹에 속하지 않아도 지정할 수 있고, 지정된 그룹관리자는 다른 사용자들을 해당 그룹에 2차 그룹으로 속하게 하거나 그룹 패스워드를 설정할 수 있다.

 

[사용법]

$ gpasswd [options] group

 

[사용 예]

[root@www~]# gpasswd A posein terran

=>terran 그룹의 관리자로 posein을 지정한다. posein이라는 사용자는 실제적으로 terran 그룹의 일원이 아니어도 가능하다. 참고로 관리자등록은 /etc/gshadow3번째 필드에 기록된다.

------------------------------------------------------------------------------------------

사용자 패스워드 관리

 

소유권과 허가권

-소유권:어떠한 파일이나 디렉터리를 소유하여 지매하는 권리를 말함

-허가권:파일이나 디렉터리에 접근 권한을 설정하는 권리

 

소유권:사용자 소유권과 그룹 소유권

허가권:사용자(user), 그룹(group), 다른 사용자(other)로 나누어 설정할 수 있음

 

*권한부여방법

+ 기존 권한에 새로운 권한을 추가

- 기존 권한에 지정된 권한을 제거

= 기존 권한을 무시하고 지정된 권한만 사용

 

u+, u-, u=

d+, g-, g=

o+, o-, o=

a+, a-, a=

 

세 가지 대상을 모두 지정하려면

a+, a-, a=

형식으로 권한을 부여할 수 있다.

 

숫자로 지정한다.(퍼미션)

 

특수권한:일반 사용자가 작업을 하는 중 root 권한이 필요한 경우

Set-UID:해당 파일을 실행하는 동안에는 실행시킨 사용자의 권한이 아닌 해당 파일의 소유자 권한으로 인식한다.

Set-GID:해당 파일을 소유한 그룹 권한으로 인식한다. 이 권한이 설정된 디렉터리에 사용자들이 팔이나 디렉터리를 생성하면 사용자가 속한 구릅에 상관없이 디렉터리 소유 그룹권한으로 만들어진다. 이 권한의 그룹 표시는 그룹 소유권 부분에서 x자리에 s로 나타나며,

만약 실행 권한이 없을 경우에는 대문자 S 표시된다.

Sticky-Bit:디렉터리 설정되는 특수 권한으로 일종의 공유 디렉터리로 사용된다. 기본적으로 /tmp 디렉터리에 기본적으로 설정됨 이 권한은 무조건 other 계층에 설정하도록

설정을 하게 되면, other 계층 권한 부분의 x자리에 t로 표기된다.

other 계층에 실행 권한이 없는 경우, 즉 그룹의 공유 모드로 사용한 경우에는

대문자 T로 표기된다.

Sticky-Bit/tmp 디렉터리에서 확인할 수 있다. /tmp는 임시 저장 디렉터리로 X 윈도 실행시 필요한 소켓 등 일시적으로 시스템이나 응용 프로그램에 필요한 파일들이 저장되는 디렉터리이다.

 

주로 특별히 사용자 권한을 지정하기 어려운 응용 프로그램들이 일시적으로 파일을 생성하고

 

sticky bit가 설정된 디렉토리 내에서는 

 

1. 퍼미션이 777인 파일에 대해서 파일의 소유자만이 삭제를 할 수 있다.

(수정이나 실행, 읽기는 모두 허용된다.)

2. sticky bit가 설정된 디렉토리 자체도 소유자만이 삭제할 수 있다.

3. root는 다할 수 있다.

 

관련 명령어

(1)chmod

=>파일이나 디렉터리에 접근할 수 있는 허가권을 설정하는 명령어

 

[사용법]

$ chmod [option] mode file(s)

 

-R옵션, --recursive

=>하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한을 변경한다.

 

$ chmod ugo+rwx aa.txt

=>모든 사용자에게 모든 권한을 준다.

 

$ chmod 755 aa.txt

=>aa.txt라는 파일에 대해 소유자는 읽기, 쓰기, 실행이 가능하고 그룹 및 다른 사용자는 읽기와 실행만 가능하게 설정한다.

 

$ chmod u+s a.out

=>a.out라는 파일에 Set-UID를 설정한다.

 

$ chmod 3070 /project

=>/project라는 디렉터리를 해당 그룹에 속한 사용자들만 접근하고, 파일을 생성/삭제할 수 있도록 하고, 그룹 소유권을 자동지정(Set-GID)하고 공유(Sticky Bit)하여 사용하도록한다.

 

 (2)chown

=>파일이나 디렉터리의 소유권 및 그룹 소유권을 변경하는 명령이다.

 

[사용법]

$ chown [option] owner[:group] file(s)

-R옵션, --recursive

=>하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한을 변경한다.

 

[사용 예]

#chown R posein *

=>하위 디렉터리를 포함하여 현재 디렉터리의 모든 파일의 소유자를 posein으로 변경한다.

 

#chown posein:yuloje jalin.txt

=>jailin.txt 파일의 소유자는 posein, 소유 그룹은 yuloje로 설정한다. 콜론대신에 점(.)을 사용하여 ‘chown posein.yuloje jalin.txt’로 설정해도 된다.

 

#chown :yuloje 1.txt

=>1.txt 파일의 그룹 소유권을 yuloje로 설정한다.

 

(3)chgrp

=>파일이나 디렉터리의 소유 그룹을 바꾸는 명령으로 root가 아니면 사용하는 경우가 드물지만, 특정한 사용자가 여러 그룹에 속한 경우에 본인 소유의 파일을 본인이 속한 그룹 내에서 소유권을 변경시킬 수 있다.

 

[사용법]

chgrp 그룹명 파일 또는 chgrp GID

 

[옵션]

 

-c, --changes: 작업 상태를 자세히 보여주나, 실제로 변경되는 것만 보여준다.

-h, --no-dereference: 심볼릭 링크가 지정하는 것 대신에 심볼릭 링크 자체의 그룹을 변경한다.

-v, --verbose: 작업 진행 상태를 자세하게 보여준다.

-R, --recursive: 지정한 디렉터리 아래에 있는 모든 파일도 함께 지정한 그룹으로 변경한다.

 

 

[사용 예]

#chgrp admin alin.jpg

=>alin.jpg 파일의 그룹 소유권을 admin으로 변경한다. 그룹명 대신에 GID로 설정해도 된다.

 

(4)umask

파일이나 디렉터리 생성 시 부여되는 기본 허가권 값을 지정하는 명령이다. 파일 생성 시에 666, 디렉터리인 경우에는 777에서 설정한 umask 값을 뺀 값을 기본 허가권으로 지정한다.

 

[사용법]

$ umask [option] []

 

옵션

의미

-S

umask 값을 표기한다.

 

  

파일 링크 관련 명령어 : ln

하드 링크 또는 심볼릭 링크를 생성하는 명령이다. 명령 실행 시 옵션 없이 사용하면 하드 링크가 생성되고, -s 옵션을 사용하면 심볼릭 링크를 생성한다.

 

[사용법]

$ ls [option] 원본 대상 파일명

 

옵션

의미

-s

심볼릭 링크를 생성 시에 사용하는 옵션이다.(--symbolic)

-f

링크 파일 존재 시에 삭제하고 생성한다.(--force)

 

-하드 링크:하나의 동일한 파일을 디스크의 다른 곳에 배체하여 여러 이름으로 사용되는 형식

-심볼릭 링크:하나의 파일을 여러 이름으로 가리키게 하는 것, 윈도우의 바로 가기 개념

 

파일 시스템 생성

관련 명령어

 

fdisk

디스크 파티션을 확인하고 추가/삭제하는 명령으로 설정 후에는 반드시 재부팅 해야 한다.

 

옵션

의미

-l

현대 디스크의 파티션 테이블 정보를 출력한다.

-s partion

특정 파티션의 크기를 출력한다. 단위는 block이다.

-v

fdisk의 버전을 출력한다.

 

[fdisk 실행 시 주요 명령]

옵션

의미

p

현재 디스크의 정보를 출력한다.

d

파티션을 삭제한다.

n

파티션을 새롭게 생성한다.

t

파티션의 속성을 변경한다. 주요 코드는 82(Swap), 83(Linux),

8e(Linux LVM), fd(Raid)

w

변경된 파티션의 정보를 저장하고 종료한다.

q

변경된 파티션의 정보를 저장하지 않고 종료한다.

 

mkfs(make filesystem)

새로운 파일 시스템을 만드는 명령으로 root만 사용 가능하다.

 

[사용 예]

#mkfs t ext2 /dev/hdb1

=>/dev/hdb1을 리눅스 파일 시스템인 ext2로 만든다.

 

mke2fs

ext2, ext3, ext4 파일 시스템을 만드는 명령으로 최근 리눅스 배포판에서 mkfs 명령시 실제 사용되는 명령어이다. 파일 시스템의 유형을 지정하지 않으면 ext2로 생성된다.

 

[사용법]

#mkefs [option] 장치명

 

옵션

의미

-j

저널링 파일 시스템인 ext3로 만든다

-t fs_type

파일 시스템의 유형을 지정하는 옵션

-b block_size

블록 사이즈를 지정하는 옵션으로 1024, 2048, 4096으로 지정할 수 있다.

-R raid_options

RAID 관련 옵션으로 R 다음에 argument=값 형태로 지정한다.

 

#mke2fs j /dev/sdb1

=>/dev/sdb1 장치의 파일 시스템을 ext3로 생성한다.

 

/etc/fstab 파일

 


mount => 마운트를 통해 다른 파티션이나 저장 매체 등을 /의 하위에 둠으로써 통일적인 관리가 가능해진다.

 

옵션

의미

-V

버전 정보를 출력한다.

-h

도움말을 출력한다.

-v

진행 상황을 자세히 출력한다.

-a

/etc/fstab에 지정된 모든 파일 시슽ㅁ을 마운트 한다.

-f

실제 시스템 호출은 하지 않고 마운트할 수 있는지 점검한다.

-t

마운트 할 파티션의 파임 시스템 형식을 지정한다.

-r

파일 시스템을 읽기 전용으로 마운트 한다.

-w

파일 시스템을 읽기/쓰기 형식으로 마운트 한다.

-o

-a 옵션과 함께 사용되어 a가 적용된 파일시스템으로 마운트를 한정한다.

-o 뒤에 옵션이 붙으면 해당 옵션이 설정된 파일 시스템만 마운트한다.

 

 

파일 시스템 점검

fsck(filesystem check) => 사용법 # fsck [option] 장치명

파일 시스템을 검사하고 수리하는 명령이다. fsck 명령은 손상되 디렉터리나 파일을 수정할 때 임시로 /lost+found 디렉터리에서 작업을 수행하고 정상적인 복구가 되면 사라진다.

 

옵션

의미

-a

명령 수행에 대한 확인 질문 없이 무조건 수행한다.

-r

명령 수행에 대한 확인 질문을 한다.

여러 개의 fsck가 병렬 모드 형태로 작동하고 있을 때 유용하다.

-A

/etc/fstab에 정의되어 있는 모든 파일 시스템을 체크한다.

-N

실행을 하지 않고 단지 어떤 것이 실행되어지는지만 보여준다.

-V

실행되는 각 파일 시스템용 명령을 포함해 자세한 출력을 수행한다.

-v

버전 정보를 보여준다.

-T

검사를 시작할 때 제목을 보여주지 않는다.

-y

몇몇 파일 시스템에 특정된 것으로, 감지된 파일 시스템 오류를 자동적으로

수정하도록 한다.


스왑(Swap) 생성

하드 디스크의 일부를 마치 메모리처럼 사용하게 해주는 기술을 말함

 

[사용법]

# mkswap [option] 스왑 파일 [size]

# mkswap [option] 스왑 파티션

 

관련 명령어

mkswap => 스왑 파티션이나 스왑 파일을 생성하는 명령이다.

[사용 예]

#mkswap /swap-file 10240

=> 10240K 크기의 /swap-file을 생성한다.

 

swapon => 스왑 파티션이나 스왑 파일을 활성화시키는 명령으로 스왑의 상태 확인도 가능하다.

swapoff => 활성화된 스왑 파티션이나 스왑을 중지시킨다.

 

스왑 영역 만들기

스왑 파일 생성하기

 

. dd명령을 이용하여 원하는 파일의 크기만큼 스왑 파일을 생성한다.

# dd if=/dev/zero of=/swap-file bs=1k count=10240000

=> if에 사용한 /dev/zero는 초기화할 때 사용하는 장치 파일명이고,

of에는 생성할 파일명을 입력한다.

 

. 스왑 파일 생성

# mkswap /swap-file

 

. 스왑 파일 활성화

# swapon /swap-file

 

. 스왑 파일 생성

# 시스템 부팅 시마다 사용할 경우에는 /etc/fstab 파일에 등록

/swap-file swap swap defaults 0 0

 

스왑 파티션 생성하기

. fdisk 명령을 이용하여 스왑 파티션 생성

#fdisk /dev/sdb

=>파티션 분할 생성 후에 t 명령을 이용해서 파티션의 속성을 스왑 영역의 코드인 “82”를 입력해야 한다.


Disk Quota

(1) 디스크 쿼터(Quota)의 개요

사용자가 많은 서버의 경우에 사용자의 디스크 사용량 제한이 필요한데, 이러한 제한을 디스크 쿼터라고 부른다. 리눅스에서는 디스크 쿼터는 사용자 및 그룹의 디스크 사용량과 생성할 수 있는 파일의 개수(I-node의 수)를 제한 할 수 있다.

 

(2) 관련 명령어

quotacheck

디스크를 사용하고 있는 파일 시스템을 체크하여 quota 기록 파일을 가장 최근의 상태로 업데이트 시키는 명령이다.

 

[사용법]

# quotacheck [option] 디렉터리명

 

edquota

사용자나 그룹에 쿼터를 설정할 때 사용하는 명령으로 실행시키면 vi 편집기가 실행되고, 기본 단위가 KB이므로 10MB를 제한하려면 10000이라고 입력해야 한다.

 

[사용법]

# edquota [option]

옵션

의미

-u

사용자에 대한 쿼터를 설정할 때 사용하는 옵션이다.(기본 옵션)

-g

그룹에 대한 쿼터를 설정할 때 사용하는 옵션이다

-t

Soft limit를 초과한 후부터 적용되는 시간제한을 설정하는 옵션이다.

-p

특정 사용자의 쿼터를 다른 사용자에게 동일한 설정으로 적용할 때 사용

 

 

# edquota p posein yuloje

=> yuloje이라는 사용자의 Quota 설정을 posein의 설정과 동일하게 만든다.

quotaon/quotaoff

=>쿼터 설정을 활성화/비활성화하는 명령

-v 옵션: 메시지를 자세히 출력

 

repquota

=> 쿼터 설정 정보를 출력해 주는 명령이다.

# redquota [option] [디렉터리명]

 

옵션

의미

-a

쿼터가 설정되어 있는 모든 파티션 정보를 출력한다.

-u

사용자 쿼터 정보를 출력한다.(기본 옵션)

-g

그룹 쿼터 정보를 출력한다.

 

디렉터리 관련 명령어

mkdir => 디렉터리를 생성하는 명령이다.

 

옵션

의미

-p

경로로 지정된 서브 디렉터리가 존재하지 않은 경우에 함께 생성한다.

-m

디렉터리 생성과 동시에 퍼미션을 설정한다.

-v

생성된 디렉터리를 메시지로 출력한다.

 

 

파일 관련 명령어

 

ls => 디렉터리 안의 내용을 출력해 주는 명령어

 

옵션

의미

-a

숨겨진 파일이나 디렉터리도 출력해준다.

-F

파일의 형태에 따라 정보를 출력해준다.

-l

파일이나 디렉터리 정보를 한 줄씩 하나씩 길게 보여준다.

-d

대상이 디렉터리인 경우에 디렉터리 안의 내용 대신에 해당 디렉터리에 대한 정보를 출력한다.

 

$ ls alF

=> 현재 디렉터리의 내용을 숨겨진 파일을 포함해서 모두 출력해 주고, 관련 정보 및 파일의 형태도 표시해준다.

 

file => 파일의 종류를 출력해 주는 명령으로 관련 정보는 /usr/share/magic이라는 파일을 참조한다.

find => 현재 디렉터리부터 하위 디렉터리까지 주어진 여러 조건을 가지고 파일 및 디렉터리를 찾아서 그 경로를 출력해주는 명령이다.

 

[사용법]

$ find [path] options expression

=> path 이하의 모든 디렉터리에서 파일을 찾는다. path가 없으면 디렉터리가 기준이다.

 

[주요 옵션]

 

옵션

의미

--name

주어진 이름의 파일이나 디렉터리를 찾는다.

--perm

지정한 허가권(permission) 값을 갖는 파일이나 디렉터리를 찾는다.

--type

지정한 파일 유형을 찾는다.(d: 디렉터리, f: 일반파일, l: 링크 파일,

b: 블록 디바이스, c: 캐릭터 디바이스, P: 파이프 파일, s: 소켓 파일

-exec

찾아진 파일 등과 연계하여 어떠한 명령을 내릴 수 있는 옵션이다.

결과값은 { } 기호로 표시하고 ;로 끝내야 한다.

 

$ find name ‘-name’ -type f exec rm {} \;

=> 현재 디렉터리에서 *.txt로 된 파일들을 찾아서 삭제한다.

텍스트 파일 관련 명령어

 

tail

=> 텍스트 파일의 끝 부분을 보여주는 명령으로 옵션 없이 사용하면 기본 10줄을 출력한다.

 

[사용법]

$ tail [option] filename(s)

 

[주요 옵션]

 

옵션

의미

-n 행수

파일의 마지막 줄에서부터 지정된 수만큼 출력한다.

-c n

마지막 n바이트만 출력한다.

-f

특정 파일의 끝부분에 새로운 행이 추가될 경우 실시간으로 출력한다.

로그 파일을 모니터링 할 때 유용하게 쓴다. (--follow)

-q

여러 개의 파일이 처리될 때 파일 이름 헤더를 출력하지 않는다.

 

# tail f /var/log/messages

=> 마지막 10줄을 출력 후에도 계속적으로 해당 파일의 내용을 동적으로 확인할 수 있도록 한다.

 

grep

=> 텍스트 파일에서 특정 패턴(pattern, 문자열)을 갖는 줄을 찾아서 출력해 주는 명령이다.

 

[사용법]

$ grep [option] patter filename(s)

 

[주요 옵션]

옵션

의미

-c

패턴과 일치하는 줄의 개수를 출력한다.

-h

여러 개의 파일을 검색 시 출력하는 파일의 이름을 붙는 것을 방지한다.

-i

검색할 때 대소문자를 구분하지 않는다.

-v

패턴과 일치하지 않는 줄을 출력한다.

-E

파이프(|)와 연계하여 여러 패턴을 찾는다.

-F

지정한 문자들 특히 특수문자를 기호 그대로 인식하여 출력해준다.

 

# grep v ^# /etc/vsftpd/vsftpd.conf

=> /etc/vsftpd/vsftpd.conf 파일에서 #으로 시작하지 않는 줄만 출력해 준다.

cron

cron을 이용하여 주기적으로 실행하는 작업은 시스템 운영에 필요한 작업과 사용자의 필요에 의한 작업으로 나눌 수 있다. 시스템 운영에 필요한 작업은 root 권한으로 /etc/crontab에 등록해서 주기적으로 수행할 수 있고, 사용자는 crontab이라는 명령을 수행해서 등록할 수 있다.

 

minute

hour

day_of_month

month

day_of_week

user-name

command

 

 

필드

설정 값 및 내용

minute

(minute)을 나타내고, 0~59로 설정한다.

hour

(hour)을 나타내고, 0~23로 설정한다.

day_of_month

(day_of_month)을 나타내고, 0~31로 설정한다.

month

(month)을 나타내고, 1~12로 설정한다.

day_of_week

요일(day_of_week)을 나타내고, 0~7로 설정한다. 07은 일요일에 해당하고, 1은 월요일, 2는 화요일, 3은 수요일, 4는 목요일

user-name

사용자 이름을 명기한다. 일반적으로 생량한다.

command

실행할 명령어를 기입한다. 명령어 앞에 사용자 이름을 명기해도 된다.

 

=>각 필드는 위의 표에 명기된 설정 값 이외에 ‘*’는 모든 모든(all)’를 의미하고, ‘-’는 연결된 설정 값을 지정할 때 사용하고, ‘,’는 연결되지 않는 값을 나열할 때 사용하고, ‘/’는 연결된 설정 값 범위에서 특정 주기로 나눌 때 사용한다.

 

 

리눅스 마스터1급 서머리 정리 1일차

 

1.사용자 계정 (useradd, usermod, groupadd, groupmod,passwd, chage, su, userdel)

 

useradd 관련파일

1)/etc/default/useradd 간단 정보-> 연관설정

-/etc/passwd

-/etc/shadow

-/etc/group

-/home

-/var/spool/mail

-/etc/skel (사용자 환경설정파일)

 

2)/etc/login.defs 상세정보

패스워드 최소숫자, 최대 숫자, 복잡성 ....

 

*옵션

-c

도움말

-d

홈디렉터리

-s

로그인쉘

-g

GID(기본그룹)

하나의 그룹에만 소속된다

-G

2차 그룹

-e

--일 형식으로 숫자로 만료인 지정

-f

10, 20, 15, 30일 형식으로

숫자로 만료일 지정

-k -m

skel 디렉토리 지정

-L

lock 계정잠금

-U

unlock 계정잠금 해제

 

 

*사용자의 모든 정보와 계정을 삭제 r 옵션

 

*passwd 패스워드 변경

-l lock

-u unlock

 

*chage 암호관련 정보 변경 /etc/shadow를 수정할 수 있다.

옵션은 대문자로

 

파일 위치 찾기 명령

find / -name 파일명

 

--------------------------------------------------------------------------------------

 

리눅스 마스터1급 서머리 정리 2일차

 

FSCK 명령어(CHKDSK)

반드시 마운트가 해제되어야 한다.

가능하면 재부팅할 때 검사를 진행한다.

 

-t 파일시스템 타입지정

-A /etc/fstab참고

-N 내용만 출력. 실제 작업진행하지 않음

-P 루트파일시스템을 점검

-R 루트파일시스템을 제외

-T 제목 출력 제외

-f 에러가 없으면 진행 안 함

-a 에러를 자동으로 수정

 

 

----------------------------------------------------------------------------------------------

 

시그널의 종류

1) SIGHUP(HUP) : 재시작. 프로세스의 설정 파일을 다시 읽는데 사용된다.

프로세스 실행중에 사용자가 로그아웃할 경우 프로세스도 종료한다.

==> nohup

# nohup 명령어 & (사용자가 로그아웃하더라도 프로세스는 결과때까지 실행된다)

2) SIGINT(INT) : 인터럽트 (Ctrl+C)

3) SIGQUIT(QUIT) : 종료

9) SIGKILL(KILL) : 강제 종료. 이 시그널은 잡히지 않는다.

15) SIGTERM(TERM) : 소프트웨어 종료, 일반적으로 kill 시그널이 전송되기 전에 전송된다.

잡히는 시그널이기 때문에 종료되는 것을 트랙할 수 있다.

19) SIGSTOP(STOP) : 정지. 이 시그널 역시 잡을 수 없다.

20) SIGTSTP(TSTP) : 키보드에 의해 발생하는 시그널로 Ctrl+Z로 생성된다.

 

 

*프로세스 작업

포그라운드 명령어만 실행 ps fg%작업번호 = fg 작업번호 CTRL+C백그라운드 명령어뒤에 & 기호 사용 jobs bg%작업번호 = bg 작업번호 포그라운드전환

pkill명령어

 

kill 9 PID, Kill s PID

Kill 9 PID, pkill 9 u jalin

 

프로세스 관련 추가

ps(process status)

=>동작 중인 프로세스의 상태를 출력해 주는 명령이다.

 

옵션

의미

a

터미널과 연관된 프로세스를 출력하는 옵션이다.

u

프로세스의 소유자를 기준으로 출력한다.

x

데몬 프로세스터럼 터미널에 종속되지 않는 프로세스를 출력한다.

e

해당 프로세스에 관련된 환경 변수 정보를 함께 출력한다.

f

프로세스간의 상속관계를 트리구조로 보여준다

-f

유닉스 스타일로 출력해 주는 옵션으로 UID, PID, PPID 등이 함께 표시된다.

 

 

 

 

top

=>동작중인 프로세스의 상태를 실시간으로 화면에 출력해 주는 명령으로 프로세스의 상태뿐만 아니라 CPU, 메모리, 부하 상태 등도 확인할 수 있다.

 


top 명령 실행 후 옵션

 

: cpu 갯수별 사용량 보기 ( multi core )

shift + m : 메모리 사용량이 큰 순서로 정렬

shift + p : CPU 사용량이 큰 순서로 정렬

shift + t : 실행시간이 큰 순서로 정렬

k : 프로세스 kill, k 입력후 종료할 pid 입력, kill signal9 를 입력.

c : 명령인자 표시/비표시

spacebar : refresh

: 입력한 유저의 프로세스만 표시 

q : top 종료

kill

=> 프로세스에 특정한 시그널을 보내는 명령으로 옵션 없이 실행하면 프로세스에 종료 신호(15, TERM, SIGTERM)를 보낸다. 보통 중지시킬 수 없는 프로세스를 종료시킬 때 많이 사용한다.(PID나 작업번호를 지정하여 종료시킴)

 

[사용법]

# kill [option] [signal] [PID 또는 % job_number]

 

killall

=> 같은 데몬의 여러 프로세스를 한 번에 종료시킬 때 사용하는 명령으로 프로세스명을 사용한다. 기본적인 사용법은 kill 명령과 유사하나 시그널을 지정하지 않으면 종료 시그널(15, TERM, SIGTERM)이 전송된다.

 

jobs

=> 백그라운드로 실행중인 프로세스나 현재 중지된 프로세스의 목록을 출력해 주는 명령이다.

nice

=> 프로세스의 우선순위를 변경하는 명령으로 NI 값을 설정할 때 사용한다. 프로세스에 설정되어 있는 NI의 기본값은 0이고, 지정 가능한 범위는 20 ~ 19까지인데 값이 작을수록 우선순위가 높다.


 

[사용법]

# nice [option] 프로세스명

 

renice

=> 실행중인 프로세스의 우선순위를 변경할 때 사용하는 명령으로 프로세스ID(PID), 사용자 이름, 프로세스의 그룹ID를 이용하한다.

 

 

nohup

=> 사용자가 로그아웃하거나 작업 중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스로 작업될 수 있도록 해 주는 명령이다. nohup는 실행한 명령을 자동으로 백그라운드로 보내지 않고, 사용자가 명령행 뒤에 ‘&’를 명시해야 한다.


S/W 설치

 

rpm

-레드햇사에서 만든 패키기 관리 기법으로 프로그램을 .rpm 형태의 파일로 배포하고, rpm 명령을 사용하여 손쉽게 설치 및 갱신, 제거, 검증, 질의 등의 관리를 할 수 있다. 배포되는 파일의 형식은 다음과 같다

 

패키지 이름-버전-릴리즈-아키텍처.rpm

 

[rpm 파일 구성 설명]

구성

설명

패키지 이름

어떤 패키지인지를 알려주는 패키지의 이름을 나타낸다.

버전

패키지의 버전을 의미한다.

릴리즈

한 버전의 패키지를 몇 번 빌드했는지를 알려준다.

아키텍처

패키지가 사용 가능한 시스템을 의미한다.

 

 

(1)rpm 사용법

rpm 명령의 사용법은 설치 및 갱신, 제거, 질의, 검증 모드와 소스 rpm(.src .rpm)의 리빌드(rebuild) 모드 등 총 5가지로 나눌 수 있다.

 

[사용법]

$ rpm [option] [패키지_파일명]

 

(2) 설치 및 갱신 (install & upgrade) 모드

=> 새로운 패키지를 설치하거나 갱신(upgrade)을 할 수 있다.

[주요 옵션]

옵션

설명

-i

새로운 패키지를 설치할 때 사용한다. 기본적으로 이전 버전의 같은 패키지가 있을 경우 설치가 되지 않는다. (--install)

-U

기존의 패키지를 새로운 버전의 패키지로 업그레이드할 때 사용한다.

만약 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있는데

이 경우에는 i 옵션과 같다고 볼 수 있다.(--upgrade)

-F

이전 버전이 설치되어 있는 경우에만 설치한다. (--freshen)

-v

메시지를 자세히 보여준다.

-h

설치 상황을 ‘#’ 기호로 표시해 준다.

--force

기존 버전이 설치되었을 경우처럼 강제로 설치할 때 사용한다.

--nodeps

의존성 관계를 무시하고 설치한다. rpm 설치 시에 의존성 관계에 있는 패키지가 존재하지 않을 경우에는 설치가 되지 않는데 그런 경우 강제로

설치할 때 사용한다.

--vv

메시지를 아주 자세히 보여준다.

--test

실제로 파일에 기록하는 작업을 제외한 대부분을 테스트할 때 사용한다.

--rebuilddb

특정한 패키지 설치 후에 rpm 패키지를 검색했으나 나타나지 않을 때

rpm 데이터 베이스를 업데이트할 때 사용한다.

 


[사용 예]

$ rpm Uvh 패키지명

=> 해당 패키지를 업그레이드 설치해 주고, 메시지와 진행상황을 ‘#’ 기호로 출력한다.

 

제거(erase) 모드

설치된 패키지를 제거한다. 패키지를 제거할 때는 e 옵션을 사용하는데, 다른 패키지에 대한 의존성이 발생한 경우에는 제거되지 않는다. 의존성이 발생한 패키지를 제거하기 위해서는 먼저 의존성 관련 패키지를 제거하거나, 추가로 nodeps 옵션을 지정해야 한다.

 

 

질의(query) 모드

-패키지 관련 정보를 알아내기 위해 q 옵션을 사용한다. -q 옵션만 사용하면 패키지 설치 유무나 간단한 정보만 출력한다.

 

[주요 옵션]

옵션

설명

-q

질의 시에 꼭 사용해야 하는 옵션이다. 패키지를 찾으면 패키지 이름과 버전만 표시한다.

-i

설치된 패키지의 정보를 출력한다.

-l

패키지에서 설치한 모든 파일 정보를 출력한다.

-f 파일명

지정한 파일을 설치한 패키지 이름을 출력한다.

-c

해당 패키지의 설정 파일이나 스크립트 파일을 출력한다.

-d

해당 패키지의 문서 파일을 출력한다.

-R

어떤 패키지에 의존하고 있는지를 보여준다. , 해당 패키지가 설치되거나 동작시에 필요한 패키지 목록을 보여준다.(--requires)

 

[사용 예]

 

$ rpm qa | grep mail

=> 시스템에 설치된 모든 패키지 중에 mail이라는 문자열이 들어있는 패키지를 출력한다.

 

$ rpm ql sendmail

=> sendmail 패키지가 설치한 파일 목록을 출력한다.

 

$ rpm qc sendmail

=> sendmail 패키지 관련 환경 설정 파일이나 실행 데몬 스크립트를 출력한다.

 

검증(Verify) 모드

검증 모드는 rpm 데이터베이스에 저장되어 있는 패키지의 메타데이터(metadata) 정보를 이용하여 변경된 정보를 찾아내는 모드이다. 검증 모드는 V(--verify) 옵션을 사용하고 파일의 크기, 허가권, 소유권, 파일 형식 등에 대한 변경 정보를 출력한다.

 

리빌드(rebuild) 모드: rpmbuild

=> rpm 소스 파일인 .src.rpm 파일을 패키지 파일로 만드는 모드로서 rpmbuild라는 명령어를 사용한다.

 

[사용 예]

# rpmbuild rebuild 패키지명

=> root가 실행했을 경우에 /root/rpmbuild 디렉터리 안에 생성한다.

 

데비안 패키지 관리

데비안 리눅스는 dpkg(Debian Package)라는 데비안 패키지 관리 도구를 사용하는데, 관련 프로그램을 .deb 형태의 파일로 배포하여 설치, 삭제 등의 관리를 한다.

[검증 코드]

옵션

설명

S

파일 크기(File Size) 변경

M

파일 모드(Permission & File Type) 변경

5

메시지 다이제스트(Message Digest) 변경(보통 MD5 값 변경)

D

장치 파일의 메이저 및 마이너 번호 불일치

L

링크 파일 경로 불일치

U

소유자 변경

G

그룹 소유권 변경

 

[주요 옵션]

옵션

설명

-V

검증 시 사용하는 기본 옵션이다.(--verify)

-a

모든 패키지를 검사할 때 사용한다.

 

[사용 예]

$ rpm Va

=> 시스템에 설치된 모든 패키지를 검증한다.

 

 

기출 문제

rpm rebuilddb

=> RPM 패키지 관리 데이터베이스 문제 발생시 데이터베이스 다시 작성

 

rpm ivh 패키지명, rpm Uvh

=> 설치중 메시지 출력, 진행과정으로 # 표시하며 설치

 

 

S/W 설치

 

yum(Yellowdog Updater, Modified)

-yumrpm 기반의 시스템에서 패키지를 손쉽게 설치해 주고 자동으로 업데이트를 수행하는 명령행 기반의 유틸리티이다. 특히, rpm 패키지 설치 시에 가장 많이 발생하는 의존성 문제를 자동으로 해결해 준다. yum은 소프트웨어 저장소에 관련 패키지들을 모아두고, 네트워크를 통해서 의존성을 검사하여 설치 및 업데이트 등을 수행한다.

 

[command]

명령

설명

info [항목]

전체 패키지에 대한 정보를 출력한다. 설치가 되어 있는 경우에는

installed, 업데이트가 가능한 항목은updates라고 나타난다.

info [패키지명]

패키지에 대한 정보를 출력하는 명령이다.

check-update

업데이트가 필요한 패키지를 출력해 준다.

update [패키지명]

패키지를 업데이트할 때 사용한다.

search [문자열..]

문자열이 포함된 패키지를 찾아준다.

remove 패키지명

패키지를 삭제할 때 사용한다.


소스 설치법의 개요

일반적인 순서 압축 풀기 -> 디렉터리 이동 -> configure -> make -> make install

따라서 tar를 비롯한 압축 도구, GNU C 컴파일러인 gcc, 의존성 검사 도구인 make 등의 응용 프로그램이 필요하다.

 

cmake는 소스 컴파일 시 사용되는 Make의 대체프로그램으로 멀티플랫폼을 지원하기 위한 목적으로 등장한 오픈소스 프로젝트이다.

 

tar(tape archive)

[사용법]

$ tar [option] [파일명]

=>옵션 사용 시 기호를 사용하지 않아도 되지만, 인자값이 있는 옵션을 여러 개 지정하는

경우에는 기호를 사용해야 한다.

 

옵션

의미

-c

지정한 파일이나 디렉터리를 하나로 묶어 새로운 tar 파일을 생성한다.

-x

생성된 tar 파일을 푼다

-v

어떤 명령을 실행할 때 대상이 되고 있는 파일들을 보여준다.

-f 파일명

작업 대상이 되는 tar 파일의 이름을 지정한다.

파일명 대신 ‘-’를 쓰면 표준 입출력이 된다.

-h

심볼릭 링크가 기리키고 있는 원본 파일을 저장한다.

-p

파일이 생성되었을 때의 권한을 그대로 유지하게 해준다.

-z

gzip 관련 옵션으로 압축 파일인 tar.gz.에 사용한다.

-j

bzip2 관련 옵션으로 압축 파일인 tar.bz2에 사용한다.

-J

xz 관련 옵션으로 압축 파일인 tar.xz에 사용한다.

 

[사용 예]

$ tar cvf posein.tar *.c

=>현재 디렉터리의 .c로 끝나는 모든 파일을 posein.tar 파일을 묶는데, 진행 결과를 출력한다.

 

$ tar cvf /Backup/home.tar.gz /home exclude=/home/ihd

 

리눅스 커널 모듈은 C 컴파일러로 만들어진 오브젝트 파일로서 ‘*.ko’형태로 생성되고, 각 시스템에서 가능한 모듈은 /lib/modules/커널버전/kernel’ 디렉터리 안에 생성되어 있다.

 

gzip, gunzip => gzip압축하면 .gz가 붙고, 압축 해제는 gunzip 명령을 사용한다.

zip, unzip => zip압축하면 .zip가 붙고, 압축 해제는 unzip 명령을 사용한다.

 bzip2, bunzip2 => bzip2압축하면 .bz2가 붙고, 압축 해제는 bunzip2 명령을 사용한다.


xz, unxz => xz압축하면 .xz가 붙고, 압축 해제는 unxz 명령을 사용한다.

=>gzip bzip2와 비교하여 매우 높은 압축률을 자랑한다.

 

gcc(GNU Compiler Collection)

gccGNU 프로젝트에 의해 만들어진 일종의 컴파일러 모음이다.

 

[사용법]

$ gcc [option] 파일명


 

문제유형

기출정보

해결방안

구분

유형상세

유형

설명

커널 컴파일

 

depmod

커널 컴파일 단계에서 설치된

모듈 사이의 의존성 검사

find

/-name dep

 

modules.dep

모듈이 생성된 디렉토리안에

모듈간 의존성 목록 파일명

 

 

make mrproper

모든 설정과 커널의 소스를 초기 상태 돌리기 위해 사용하는 명령

 

 

make config

옵션 설정 중 텍스트 문답 방법

명령어(확장된 메뉴형식 방법,

X윈도우 형식, 텍스트문답 방법

menuconfig,

xconfig

 

/etc/modprobe.conf

부팅 시에 자동으로 로드되게

설정하는 파일

 

 

modprobe

모듈의 로드를 위한 명령어

(or insmod)

 

커널 컴파일

설정 이후의

과정

make clean

이전 생성된 파일 삭제

 

make bzImage

커널 이미지 생성(bzip2 형식)

 

make modules

모듈 컴파일, 커널 환경 설정에서 모듈로 설정한 기능들을 컴파일

 

make modules_install

모듈 설치, 컴파일된 모듈을 설치

 

 

/lib/modules

모듈 설치 후 모듈 파일이 생성되는

디렉토리

 

 

insmod

리눅스 커널에 모듈을 탑재하기

위하여 사용하는 명령어

 

lsmod

리눅스 커널에 탑재된 모듈을

확인하는 명령어

 

 

 

리눅스 커널 모듈은 C 컴파일러로 만들어진 오브젝트 파일로서 ‘*.ko’형태로 생성되고, 각 시스템에서 가능한 모듈은 /lib/modules/커널버전/kernel’ 디렉터리 안에 생성되어 있다.

 

모듈 관련 명령어

1)lsmod : 리눅스 커널에 적재된 모듈 정보를 출력하는 명령으로 모듈명, 크기, 다른 모듈에서 사용 중인 수, 사용 중인 모듈 순으로 출력한다.

 

2)insmod : 커널에 모듈을 적재하는 명령으로 해당 모듈을 자동으로 검색하고 삽입된다. 이 명령을 사용하기 위해서는 해당 모듈 파일이 존재하는 디렉터리까지 이동해야만 하고, 의존성이 있는 모듈인 경우에는 적재를 할 수 없다.

[사용법]

#insmod 모듈 파일명

 

3)rmmod : 커널에서 모듈을 제거하는 명령으로 다른 모듈에 의해 사용 중인 모듈은 제거할 수 없다

 

4)modprobe: 리눅스 커널에 모듈을 적재하거나 제가하는 명령이다. insmodrmmod 명령은

다른 모듈 에 의존되어 있는 경우에는 사용 불가하나 modprobe는 단일 모듈, 의존성이 있는

여러 모듈을 적재할 수 있다. 만일 모듈이 다른 모듈에 의존하고 있을 경우 필요한 모듈을 먼저 적재한다

 

-l 사용 사능한 모듈 정보를 출력한다.

-r 모듈을 제거할 때 사용하는 옵션으로 의존성이 있는 모듈들을 찾아서 사용되지 않는다면 자동으로 제거한다.

-c 모듈 관련 환경 설정 파일의 내용을 전부한다.

 

모듈 의존성 파일:modules.dep

모듈 간의 의존성을 기록한 파일로 /lib/modules/커널버전디렉터리 안에 위치한다. 이 파일에는 모듈 파일명이 기록되고, 콜론(:) 이후에 의존성이 있는 모듈 파일명이 차례로 나열된다. 모듈간의 의존성이 변경되면 modules.dep 파일의 내용이 변경되어야 modprobe 명령이 정상적으로 동작한다.

 

커널(kernel)

리눅스에서 커널은 시스템 자원을 소유하고 관리하는 역할을 담당한다.

 

커널 컴파일(compile): 커널 소스를 다운로드하여 사용하는 시스템에 최적화된 커널을 만드는 과정이다.

커널 컴파일을 하기 위해서는 C 컴파일러인 gcc, 어셀블러, 링커, make 유틸리티 등의 개발도구가 설치되어야 한다. 관련 도구가 설치가 되어 있다면, 설치하려는 리눅스 커널 버전의 소스를 /usr/src/kernels 디렉터리에 다운로드한다.

 

커널 소스 파일 압축해제 -> 커널 소스의 설정 값 초기화(make mrproper) -> 커널 컴파일 옵션 설정 작업(make menuconfig) -> 커널 이미지 파일 생성 작업(make bzImage) -> 커널 모듈 생성을 위한 컴파일 작업(make modules) -> 컨널 모듈 설치 작업(make modules_install) -> 커널 모듈 파일 복사, grub.conf 파일 수정(make install) -> 새로운 커널 사용을 위한 시스템 재부팅

 

커널 소스 파일은 tar 명령의 압축 해제 옵션을 이용한 후에 관련 디렉토리로 이동

make mrproper 명령은 기존에 설정된 값을 초기화하는 명령으로 오브젝트 파일 뿐만 아니라 설정된 환경 파일인 .config 파일까지 지운다. 커널 컴파일 옵션 설정 작업은 다양한 도구들을 이용할 수 있고, 설정 규칙은 y, m, n으로 나눈다. y(yes)는 선택서 커널에 포함시킨다는 의미이고, m(module)은 모듈로 생성한다는 의미를 나타내고, n(no)를 선택하지 않는다는 의미이다.

 

make bzImage 명령은 커널 이미지를 생성할 때 bzip2로 압축해서 생성한다.

make modules 명령은 커널 옵션 설정 시 ‘m’으로 선택한 항목들을 모듈 만드는 과정

make modules_install은 모듈 관련 디렉터리인 /lib/modules/커널버전 디렉터리 안에 복사하는 과정이다.

make install은 커널 모듈 파일 복사 및 grub.conf 파일 자동 수정 작업

 

 

 

주요 도구

설명

menu config

텍스트 기반의 설정 도구로 터미널 환경에 y,m,n으로 설정한다.

make menuconfig

텍스트 기반의 컬러 메뉴를 제공하고, 커서를 이용해서 이동이 가능하다. 가장 보편적으로 사용하는 도구이다.

make clean

생성된 오브젝트 파일을 제거하고 다시 configure할 때 쓰이는 명령이다. 커널 컴파일할 때도 설정된 작업을 초기화하기 위해 make clean 명령을 사용할 수 있으나, 오브젝트 파일만을 지울 뿐 환경 설정한 내용이 저장되는 .config 등은

지우지 못하므로 make mrproper를 것이 좋다.

 

주변 장치 설정

디스크 확장 절차

 

디스크 인식 여부 확인: fdisk l 명령을 이용해서 확인할 수 있다

파티션 작업: ‘fdisk 장치명명령을 실행한 후에 원하는 용량만큼 할당한다.

시스템 재부팅: fdisk 명령을 실행한 후에는 반드시 재부팅해야 한다.

파일 시스템 생성: ext4 파일 시스템으로 생성한다.

=> mkfs.ext4 /dev/sdb1

디렉터리 생성: 마운트 포인트에 해당하는 /backup 디렉터리를 생성한다.

마운트 작업

# mount t ext4 /dev/sdb1 /backup

마운트 및 용량 확인

# mount

# df -h

/etc/fstab 파일 등록: vi 편집기를 이용하여 아래의 내용을 추가한다.


프린트 관련 명령어

 

BSD 계열 명령어 lpr, lpq, lprm, lpc

System V 계열 명령어 lp, lpstat, cancel

 

프린트 관련 명령어

lpr 프린터 작업을 요청하는 명령

lpq 프린터 큐에 있는 작업의 목록을 출력하는 명령

lprm 프린터 큐에 대기 중인 작업을 삭제하는 명령

lpstat 프린터 큐의 상태를 출력해 주는 명령이다.

리눅스의 프린터 설정에 관련된 파일이 저장된 곳=> /etc/printcap

 

스캐너 관련 명령어

 

sane-find-scanner

USB SCSI 스캐너와 관련 장치 파일을 찾아주는 명령어이다.

 


----------------------------------------------------------------------------------------------

 

커널모듈

 

환경설정 /etc/modprobe.conf

 

명령어 modprobe(-i, -l, -r 옵션 사용)

 

수동명령어 커널 적재(설치, 로드, 삽입) --- --> insmod

커널 확인(목록) -------> lsmod

커널 제거(삭제) ------------------> rmmod

 

모듈의존성 ---------------------------------------> depmod

 

----------------------------------------------------------------------------------------------

 

FDISK 는 명령어로 확인

 

fdisk -l 명령으로 장치명을 알아낸다.

 

fdisk 장치명

 

헥사코드값을 표로 보여준다.

 

리눅스파티션 83

스왑파티션 82

LVM 8e

RAID fd

 

----------------------------------------------------------------------------------------------

 로그 관련파일 /etc/syslog.conf

 

메시지타입/메시지우선순위 저장위치

kern* /dev/console

 

*.warn /var/log/messages

 

----------------------------------------------------------------------------------------------

 

로그 순환 관리 logrotate

 

vi /etc/logrotate.conf

 

/var/log/messages { 순환관리할 로그파일명

( ) 순환주기 => (daily)/(weekly)//

create ( ) root root 로그파일권한

( ) 5 순환개수

}

----------------------------------------------------------------------------------------------

시스템 로그 분석 및 관리

 

시스템에서 일어나는 모든 사건이나 이벤트 등은 각 서비스별로 기록되는데, 이러한 기록들을 로그(log)라 부른다.

 

로그 기록과 관련된 패키지로 리눅스 초기에는 syslog라는 패키지를 사용하였다. syslogd라는 데몬이 /etc/syslog.conf 설정 파일을 기반으로 서비스별 로그 파일을 /var/log 디렉터리에 생성하였다.

 

[주요파일]

파일명

설명

/etc/rc.d/init.d/rsyslog

rsyslogd 데몬을 동작 시키는 스크립트로 start, stop, restart

등의 인자값을 사용한다.

/etc/rsyslog.conf

rsyslogd 데몬의 환경 설정 파일이다.

/etc/sysconfig/rsyslog

rsyslogd 데몬이 실행과 관련된 옵션이 설정되는 파일이다.

/sbin/rsyslogd

실제 rsyslogd 데몬 실행 명령이다.


 

/etc/rsyslog.conf 파일

[기본 구성 형식]

facility.priority action

=>facility는 일종의 서비스를 의미하는데, 메시지를 발생시키는 프로그램의 유형이라고 볼 수 있다. priority는 위험의 정도를 나타내는데, 설정한 수준보다 높아야 메시지를 보낸다. 설정한 값 앞에 =을 사용할 경우에는 해당 레벨의 위험도와 같은 경우에만 메시지를 기록하고, !는 제외시킬 때 사용한다. action은 메시지를 보낼 때 목적지나 행동들에 관한 설정으로 보통 파일명을 적는다.

 

- facility: 메시지를 보내는 서브 시스템의 이름이다.

- priority: 메시지를 받는 파일, 장치, 컴퓨터나 사용자의 이름이다.

 

) *.emeg

=> 모든 서비스들에 대한 비상 수준의 메시지들을 모든 로그 파일에 기록하도록 한 것이다.

 

 [facility의 종류]

facility

설명

cron

cron, at과 같은 스케줄링 프로그램이 발생한 메시지

auth,security

login과 같이 인증프로그램 유형이 발생한 메시지

authpriv

ssh와 같이 인증을 필요로하는 프로그램 유형이 발생한 메시지로 사용자

추가 시에도 메시지가 발생함

daemon

telnet. ftp 등과 같이 여러 데몬이 발생한 메시지

kern

커널이 발생한 메시지

lpr

프린트 유형의 프로그램이 발생한 메시지

mail

mail 시스템이 발생한 메시지

mark

syslogd에 의해 만들어지는 날짜 유형

news

유즈넷 뉴스 프로그램 유형이 발생한 메시지

syslog

syslog 프로그램의 유형이 발생한 메시지

user

사용자 프로세스

uucp

UUCP(Unix to UNIX Copy Protocol)이 시스템이 발생한 메시지

local0~local7

여분으로 남겨둔 유형

*

모든 facility를 의미

 

[priority의 종류]

 

priority

설명

none

지정한 facility를 제외, 보통 앞에 다른 facility에 대한 설정을 하고

; 뒤에 특정한 facility를 제외할 때 사용

debug

프로그램을 디버깅할 때 발생하는 메시지

info

통계, 기본 정보 메시지

notice

특별한 주의를 필요로하나 에러는 아닌 메시지

warning, warn

주의가 필요한 경고 메시지

error, err

에러가 발생하는 경우의 메시지

crit

크게 급하지는 않지만 문제가 생기는 단계의 메시지

alert

즉각적인 조정을 해야 하는 상황

emerg, panic

모든 사용자들에게 전달해야 할 위험한 상황

 

 

로그 파일 관리: logrotate(로그파일의 크기를 제한하고 관리하기 위한 프로그램)

 

로그 파일은 계속적으로 덧붙여지면서 쌓이는 형태로 이를 방지하기 위해서 로그 파일을 여러 개로 분할해 주는 프로그램의 logrotate이다. logrotate는 로그파일의 자동 로테이션 기능, 압축 기능, 제거 등을 지원한다. 각각의 로그 파일은 하루, 일주일, 한달 단위로 로테이션을 할 수 있다. 시스템과 관련된 기본적인 설정은 /etc/logrotate.conf에서 제어하고, 응용 프로그램은 /etc/logrotate.d 디렉터리 내에 위치하여 로그 파일을 관리하고 있다.

 

/etc/logrotate.conf의 주요설정

weekly => 로그 파일을 일주일마다 로테이트 한다.

rotate 4 => 최대 4번까지 rotate를 하는 설정, 4주 동안 백업한 로그를 유지하도록 지정

create => 로테이트를 한 후에 비어 있는 로그 파일을 생성하도록 설정하는 항목이다.

오래된 백업 로그 파일들 이후에 새로운 로그 파일들을 생성할 것인지 설정

/var/log/wtmp ~ => 로그 파일명을 명기하면 별도로 지정이 가능하다. /var/log/wtmp는 한 달마다 로테이트하지만, 파일 크기가 1MB가 되면 그 이전이라도 로테이트를 실행한다.

 


로그 관련 주요 파일

1) /var/log/messages

시스템에서 발생하는 표준 메시지가 기록되는 파일로 대부분의 로그가 이 파일에 쌓이고, root만이 읽을 수 있도록 설정되어 있다.

 

2) /var/log/secure

인증에 기반한 접속과 관련된 로그가 기록되는 파일로 보통 login(telnet ssh), tcp_wrappers, xinetd 관련 로그가 쌓인다.

 

3) /var/log/dmesg

시스템이 부팅할 때 출력되었던 로그가 기록되는데, 보통 커널 부트 메시지 로그라고 한다.

/bin/dmesg =>dmesg(기출문제) 파일의 내용을 확인하는 명령어

 

4) /var/log/maillog

sendmail, dovecot 등 메일 관련 작업이 기록되는 로그 파일이다.

 

5) /var/log/xferlog

FTP 접속과 관련된 작업이 기록되는 파일

 

6) /var/log/boot.log

부팅시 발생되는 메시지가 기록되는 파일로 보통 부팅 시 동작하는 데몬 관련 정보가 기록된다.

 

7) /var/log/lastlog

telnet이나 ssh를 이용해서 접속한 각 사용자의 마지막 정보가 기록되는 파일이다. 바이너리 파일로 lastlog라는 명령으로 확인한다.

 

8) /var/log/wtmp

콘솔, telnet, ftp 등 이용하여 접속한 사용자 기록, 시스템을 재부팅한 기록 등의 로그가 쌓이는 파일이다. 바이너리 파일로 last라는 명령으로 확인한다.

 

9) /var/log/btmp

wtmp와 반대되는 로그로 접속이 실패한 경우를 기록한다. lastb라는 명령으로 확인한다.

 

[SSH 클라이언트 명령어] : ssh

리눅스에서는 openssh-clients 패키지를 설치하면 ssh 명령을 이용해서 접속할 수 있고, 윈도우에서는 Xshell 등과 같은 프로그램을 이용해야 한다.

 

[사용법]

$ ssh [option] 호스트명 or IP 주소

$ ssh 계정 이름@호스트네임

=> -l 옵션 대신에 사용하는 방법으로 클라이언트 계정과 서버의 계정이 다르면 계정 이름을 명기해야 한다.

$ ssh 호스트네임 명령

=> rsh와 같이 원결 셸을 사용할 수 있는데, 접속 없이 명령만 내릴 때 유용하다.

 

옵션

설명

-l

다른 계정으로 접속할 때 사용된다.

-p

ssh 서버의 포트 번호가 22번이 아닌 경우 p 옵션을 사용해서

바뀐 포트를 지정할 때 사용한다.

 

인증키를 이용한 SSH 서버 접속: ssh-keygen

SSH 서버를 접속할 때 패스워드를 입력하여 접속하지만 인증키를 이용하여 접속할 수 있다. SSH 클라이언트에서 ssh-keygen 명령을 이용해서 비밀키와 공개키를 생성하고, SSH 서버에 공개키를 복사하면 된다.

 

ssh를 사용할 때 인증키를 사용하면, 로그인 할 때 마다 암호를 직접 입력하는 것보다 더욱 안전하며, (ssh-keygen)을 이용하여 생성한다. 그리고, ssh를 이용하요 생성한다. 그리고, ssh를 이용하여 파일을 복사할 수 있는데, 이 때 사용하는 명령어는 (scp)이며, ssh 접속을 다른 프로그램이 사용할 수 있도록 포트 포워딩 해주는 것은 (터널링)이라고 한다.

 

인증키를 원격의 서벙 복사할 때 사용하는 scp

예를 들어 복사하려는 파일명이 ‘dumb’라고 하고 접속하려는 원격 서버의 주소는 www.foobat.com이라고 하고 쉘 계정을 sulinux2라 한다면 dumb라는 파일을 www.foobar.com sulinux2 계정 홈디렉터리에 복사하는 방법은 아래와 같다.

 

$ scp dumb sulinux2@www.foobar.com; .

 

ssh 터널링이란, ssh 접속을 다른 프로그램이 사용할 수 있도록 Port Forwarding해주는 것을 말한다. ssh 터널링을 이용하여 암호화접속을 사용하지 않는 네트워크 접속을 보다 안전하게 해준다.

 

 

 

PAM(Pluggable Authentication Module)

=>PAM을 구성하는 설정 파일은 /etc/pam.d/etc/pam.conf 파일이 있다.

 

 

1) PAM은 사용자를 인증하고 그 사용자의 서비스에 대한 접근을 제어하는 모듈화된 방법을 말한다. PAM은 응용 프로그램들에게 사용자 인증 방법을 선택할 수 있는 공유 라이브러리의 묶음을 제공한다. 리눅스에서 PAM 프로젝트의 목적은 소프트웨어 개발과 안전한 권한 부여 및 인증 체계를 분리하는데 있다. PAM은 특정 서비스에 대한 사용자 또는 그룹들의 허가 목록 파일, 특정 서비스에 대한 사용자 또는 그룹들의 거부 목록 파일, 사용자의 패스워드 길이 제한 등에 사용되고 있다.

 

2) PAM의 구성

PAM에서 제공하는 라이브러리는 /lib/security에 위치하고 동적으로 로드 가능한 오브젝트 파일(.so) 형태로 되어 있다. PAM을 이용하는 서비스들은 /etc/pam.d 디렉터리 안에 설정되어 있고, 특별히 지정되지 않는 서비스에 대한 인증은 /etc/pam.d/other에서 관리한다.

 

[PAM 설정 파일의 구성]

type control module_name module-arguments

 

type: PAM에 어떤 타입의 인증이 사용될 것인지를 알려주는 항목으로 같은 타입의 모듈이

쌓일 수도 있고, 사용자에 인증되기 위한 다중 요구사항을 만족하도록 요청할 수 있다.

accout, auth, password, session

  

control: 통제를 담당하는 부분으로 PAM에 무엇을 해야 할 지를 알려준다.

module_name:사용하는 모듈명을 명기하는 부분으로 /lib/security에 있는 모듈명을 기입한다.

module-argument:지정한 모듈이 사용하는 인수를 기입한다.

 


PAM의 주요 모듈

pam_securetty.so

=> 접속하는 계정이 root인 경우 /etc/securretty 파일에 기록된 터미널을 통하는 경우에만 허가하도록 한다. /etc/pam.d/login /etc/pam.d/remote 파일에 설정되어 있고, 적용받는 관련 서비스는 텔넷이다.

 

pam_lisfile.so

=>임의의 파일에 대해 서비스를 허가하거나 거부하는 방법을 제공한다. 레드헷 계열인 경우에는 /etc/pam.d/vsftpd 파일에 설정되어 ftp 사용자 거부 목록 파일로 이용되고 있다.

 

pam_nologin.so

/etc/nologin 파일이 존재하면 root만 로그인할 수 있고, 다른 사용자는 에러 메시지와 함께 거부할 때 사용한다. 로그인과 관련된 서비스인 login, remote, sshd 등에 설정되어 있어서 대부분 영향을 받는다.

 

pam_deny.so

접근을 무조건 거부할 때 사용하고, 응용 프로그램에게 항상 실패를 리턴한다. other, system-auth 등에 사용된다.

 

pam_wheel.so

=> root 권한을 얻을 수 있는 사용자를 wheel이라는 그룹으로 묶어서 사용하도록 지원하는 모듈이다. su 명령과 관련된 /etc/pam.d/su에 사용하면 매우 유용한다.

 

 

 

tripwire

침임자가 시스템 침입에 성공하면 향후 접속을 용이하게 하기 위해 백도어 프로그램인 트로이 목마나 루트킷 등의 프로그램을 설치하는 경향이 있다.

 

tripwire/etc/tripwire 디렉터리에 설치된다. 디렉토리에 생성되는 파일

twcfg.txt : 설치를 위한 환경 설정 파일

twpol.txt : 정책파일

twinstall.sh : 설치 스크립트 2.4부터 tripwire-setup-keyfiles 명령어로 변경된다.

 

- 무결성 검사하기

=> # /usr/sbin/tripwire check

 

- 데이터베이스 갱신

=> # /usr/sbin/tripwire update

# /usr/sbin/tripwire m u

 

COPS(Computer Oracle and Password System)는 리눅스 시스템에 대한 보안 감시 활동을 위한 프로그램이다.

백업

 

rsync(remote synchronous)

네트워크로 연결된 원격지의 파일들을 동기화하는 유틸리티로 예전에 사용하던 rcp(remote copy)에 비해 처리속도도 빠르고 다음과 같은 기능을 제공한다.

 

링크된 파일이나 디바이스 파일도 복사하고, 그룹을 포함한 소유권 및 허가권도 유지하여 복사할 수 있다.

sshrsh을 이용하여 전송 가능하고 root 권한이 필요하지 않다.

익명 사용자 및 인증되 사용자를 지원하여 미러링에 이상적이다.

로컬 시스템의 백업 시에는 별다른 서버 설정 없이 사용이 가능하다.

 

[사용법]

$ rsync [option] source destination

 

[주요 옵션]

옵션

의미

-r

하위 디렉터리까지 실행한다.(--recursive)

-i

심볼릭 링크를 그대로 보존한다.

-p

퍼미션을 그대로 보존한다.

-t

타임스태프를 그대로 보존한다.

-g

그룹 소유권을 그대로 보존한다

-o

소유권을 그대로 보존한다.(root만 가능)

-D

디바이스 파일을 그대로 보존한다.(root만 가능)

-H

하드 링크를 그대로 보존한다.

-a

-rlptgoD를 한번에 실행할 때 사용하는 옵션이다.

-v

진행 상황을 자세히 출력한다.

-u

업데이트된 내용만 전송한다.

-z

전송할 때 압축한다.

-b

백업할 때 동일한 파일이 존재하는 경우에 ~를 붙여서 백업 파일을 생성

-e

원격지에 접속할 때 사용할 프로토콜을 지정하는 옵션이다.

일반적으로 ssh를 사용해서 최근에는 명기하지 않아도 된다.

 

 

[centos] -> 사용할 rsync 서비스 이름

path= 데이터 원본 경로

 

[백업 용어]

예약어

설명

ALL

모든 서비스 또는 모든 호스트를 나타냄

LOCAL

같은 도메인에 있는 모든 호스트로 “.문자를 포한하지 않는

모든 호스트

KNOWN

이름이 KNOWN인 호스트 또는 이름(주소)을 알고 있는 호스트

UNKNOWN

이름이 UNKNOWN인 호스트 또는 이름(주소)을 모르고 있는 호스트것을 의미

 

 

dd(data dumper)

파티션이나 디스크 단위로 백업할 때 사용하는 유틸리티로 사용하기는 쉬우나 많은 시간이 소요된다.

 

[사용 예]

# dd if=/dev/sda 1 of=/dev/sdb1 bs=1k

=> 블록 사이즈 1KB 단위로 하여 /dev/sda1/dev/sdb1으로 백업한다.

 

# dd if=/dev/sda 1 of=/dev/sdb1 bs=1M

=> 블록 사이즈 1MB 단위로 하여 /dev/sda1/dev/sdb1으로 백업한다.

 

dd 주요 옵션

if=FILE : 표준 입력을 대신할 파일 입력을 지정한다.

of=FILE : 표준 출력을 대신할 파일 출력을 지정한다.

 

 

백업 용어 정리

- 제로 데이 백업(A Day-zero Backup): 시스템을 설치한 후 사용자들이 사용해 보기 전에 시스템의 모든 파일들과 프로그 램들을 백업한다.

 

- 풀 백업(A Full Backup) : 일반적인 기준에 의하여 주기적으로 시스템의 모든 파일들과 프로그램 들을 백업한다.

 

변경분 백업(A Incremental Backup): 앞선 백업에서 변경된 부분만을 골라 주기적으로 백업한다.

어플리케이션등 새로 추가 되거나 변경 삭제되는 것과 같이 특정한 이벤트 후나 주기적으로 이전 백업 후 변경된 파일들만 백업하는 겻이다.

 

단순 백업: 모든 것은 한꺼번에 백업하고 그 다음부터는 앞선 백업에서 변경된 부분만을 골라서 백업한다. Full Backup(시스템내의 모든 파일 백업)을 진행 후 그 이후부터 Incremental Backup(시스템내의 변경분에 대한 백업)을 진행하는 것

 

다단계 백업: 좀더 적은 비용을 들이면서도 백업 보장 기간을 늘리기 위해 백업한다.

CPIO(copy input to output)

=> 파일을 아카이브 형태로 복사하는 프로그램이나 주로 백업을 위하여 테이프 드라이브에 저장을 하거나 커널에 익스텐션 모듈을 인식하기 위해 사용된다. 그 외에도 여러 가지 기능으로 다양한 용도로도 사용된다.

 

=> tar와 비슷한 유틸리티로 많은 양의 데이터에 대해서는 tar보다 빠르다. 장치 파일이나 네트워크 파일 등의 특수 파일도 백업이 가능하고 백업본의 크기도 작고, 백업본에 손상된 부분이 있더라도 손상된 부분을 제외하고 나머지 부분을 복구한다.

 

rdist

=> 시스템 관리 및 전체 노드의 저장장치를 항상 동일하게 유지시키는 데 사용한다. /etc/passwd, /etc/shadow, /etc/group 등을 전체 노드가 항상 일치하도록 하는데 사용되고 있다.

 

tar

-f 옵션 : tar 파일의 내용을 사용할 때에는 반드시 사용(저장파일 및 장치를 지정)



TCP Wrapper

 

TCP Wrappertcpd라는 데몬이 슈퍼데몬인 inetd에 의하여 수행되는 서비스들의 접근을 제어하도록 하는 프로그램이다. 접속을 허락한 호스트만 접속할 수 있도록 하거나 원하지 않는 호스트의 접근을 막도록 해주는 접근 제어를 담당한다. 주로 TCP 연결을 기반으로 하고 inetd에 의해 관리되는 telnet, ftp, rlogin, rsh 등을 감시하고 필터링 할 수 있다.

 

TCP wrapper는 접근이 허가된 호스트의 목록 파일인 /etc/hosts.allow 파일과 접근이 금지된 호스트의 목록 파일인 /etc/hosts.deny 파일을 이용한다.

 

이 두 파일의 검색 순서는 /etc/hosts.allow를 먼저 읽어 들여서 등록된 호스트를 허가하고

/etc/hosts.deny에 설정된 호스트를 금지시킨다. , /etc/hosts.allow 파일에 등록되면, /etc/hosts.deny 파일에 상관없이 허가된다.

 

관련 파일 작성 규칙

 

/etc/hosts.allow /etc/hosts.deny 파일 설정 시에 새로운 줄(줄 바꿈)은 무시되고 줄을 연장 할 때는 백슬래시()를 사용해야 한다. 빈 줄 혹은 ‘#’으로 시작되는 줄은 주석으로 간주되고, 기본적인 형식은 다음과 같다.

 

daemon_list : clent_list [ :shell_command]

 

daemon_list

한 개 이상의 데몬(서버 프로그램) 프로세스 혹은 예약어(와일드카드)를 쓸 수 있다. 여기서 주의할 점은 텔넷 관련 정책을 세울 경우에 telnet이라는 서비스명이 아닌 in.telnetd와 같은 실행 데몬명을 적어야 한다. 여러 데몬을 명기할 때는 쉼표(,)로 구분한다.

[예약어]

 

[설정 예]

# vi /etc/hosts.deny

ALL : ALL

 

client_list

한 개 이상의 호스트 이름, 주소, 패턴 혹은 예약어(클라이언트 이름 혹은 주소가 일치하는 것)를 쓸 수 있다. 일반적으로 IP주소나 도메인을 기입하고, 사용 가능한 네트워크 주소 대역 및 도메인 대역은 다음과 같다.

 

[사용 가능한 예]

192.168.1

192.168.1.0/255.255.0

.example.com

 


패턴형식 : '.'의 위치에 유념해야 하고, ALL':'은 공백이 있어야 한다.
    1)모든 서비스를 모든 호스트에 대해 거부 : /etc/hosts.deny파일에 적는다.
      ALL : ALL
    2) 특정 호스트에 특정서비스 접근 허용 : /etc/hosts.allow파일에 적는다.
      ALL : localhost, .aaa.com   => localhostaaa.com의 모든 호스트들에게 모든 서비스를
                                    허용한다는 뜻이다.
      in.telnetd : 192.168.0.2 => 192.168.0.2에서 텔넷 접속에 대해서만 접근을 허용한다.
      ALL : .aaa.com EXCEPT killer.aaa.com => killer.aaa.com를 제외한 aaa.com의 모든 호스트들
                                             에게 모든 서비스를 허용한다.
      ALL EXCEPT in.ftpd : .aaa.com EXCEPT bad.aaa.com => bad.aaa.com를 제외한 aaa.com의 모든
      호스트들에게 ftp서비스를 제외한 모든 서비스를 허용한다.
      in.telnetd, in.figerd : 233.234.235., .aaa.com => 233.234.235.* 네트워크에 속한 모든 호
                                                       스트와 .aaa.com에 속하는 모든 호스트들
                                                       은 텔넷서비스와 finger서비스를 허용함.
      ALL : ALL : DENY => 그외의 모든 네트워크 호스트는 어떠한 서비스도 받을 수 없다. 만약에
                         hosts.allow를 이렇게 설정해 놓으면 별도로 hosts.deny파일이 필요없다.
      ALL : 192.168.0.0/24 => IP/넷마스크를 이용하여 설정하는 방법으로 192.168.0.0부터 192.16
                             8.0.255까지 모든 서비스에 대하여 허가한다.

xinetd

 

(1) xinetd의 개요

xinetd는 리눅스 커널 2.4버전부터 슈퍼 데몬인 inetd를 대체하기 위해 등장하였다. inetd는 접근 제어를 위해 TCP Wrapper를 이용했지만, xinetd는 환경 설정 파일을 이용해서 자체적으로 접근 제어가 가능하다. 또한 IP 주소 당 접속 수 제한, 시간대별 서비스 제한, Dos 공격에 대비한 설정 등을 추가로 제공한다.

 

(2) xinetd의 구성

grep V ‘^#’ /etc/httpd/conf/httpd.conf

 

구성 요소

설명

/etc/xinetd.conf

xinetd 데몬의 전체적인 환경 설정을 담당하는 파일로 이 곳에 설정하면 xinetd 데몬에서 관리하는 전체 서비스에 영향을 준다

/etc/xinetd.d

xinetd 데몬에 의해 관리 및 제어되는 서비스 파일들이 위치하는 디렉터리이다. 이 디렉터리 안에 telnet. rlogin, rsh, rsync 등의 관련 서비스 파일을 생성하면 된다.

/etc/rc.d/init.d/xinetd

xinetd 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자 값을 사용해서 제어한다.

 

 

xinetd의 전체적인 환경은 /etc/xinetd.conf 파일에 설정하지만, 관련 서비스에 대한 자세한 설정은 /etc/xinetd.d 디렉터리 안에 파일을 생성하고 값을 부여한다. 대부분의 설정 항목들은 xinetd.conf에서 사용하는 것들을 그대로 사용할 수 있다.

 

port는 서비스를 활성화 할 경우 xinetd가 리스닝을 할 포트에 대한 지시자이다.

only_from은 설정된 호스트를 제외한 다른 접속은 모두 거절하라는 지시자이다.

 

ps aux ==> 실행되어 있는 프로세스 확인

netstat nlp ip ==> 실행되어 있는 서비스 확인


 

flags = REFUSE

서비스 운영과 관련된 설정으로 REFUSE는 계속적으로 재사용한다는 의미이다.

socket_type = stream

네트워크 소켓 타입을 지정하는 항목으로 속성값에는

stream, dgram, raw, seqpacket4가지 항목이 있다.

wait = no

서비스가 단일 스레드(thread)인지 다중 스레드인지 결정하는 항목. yes인 경우에는 오직 하나의 서비스만 작동하게 되며, no인 경우에는 다중 스레드로 동작하여 새로운 서비스 요청을 받아들이게 된다.

user = root

서버 프로세스의 UID를 지정하는 항목이다.

server = /usr/sbin/in.telnetd

해당 서비스를 실행하는 데몬 파일의 경로를 지정하는 항목이다.

log_on_failure += USERID

로그에 관련된 설정으로 /etc/xinetd.conf에 지정된 설정에 +또는 를 이용하여 추가로 지정할 때 사용한다.

disable = no

해당 서비스의 실행 유무를 지정하는 항목. no로 설정하면 해당 서비스를 사용하는 것이고, yes이면 해당 서비스를 사용하지 않는다

access_times = 01:00~07:00

지정된 시간에만 서비스를 이용할 수 있게 설정하는 항목이다.

redirect

해당 서비스를 다른 서버로 포워딩할 때 사용하는 항목이다.

port = 8080

해당 서비스의 포트 번호를 지정할 때 사용하는 항목이다.

nice = 10

서버의 우선순위를 지정하는 항목으로 20 ~ 19까지 지정할 수 있다.

only_from = 192.168.1.0/24

redirect = 192.168.0.15:23

=>192.168.1.0/24 대역에서 telnet으로 들어온 연결을 다른 호스트(192.168.0.15)23번으로 보낼수 있도록

 

intances = 5

=> 최대 동시 접속수는 5

 

 

Apache

아파치 2.x 버전에서는 스레드 기능을 추가하였는데, 스레드는 하나의 프로세스가 다수의 클라이언트 요청을 처리하는 방법이다. 아파치에서는 이러한 방식은 MPM(Multi-Processing Module)이라 부른다.

 

[주요 MPM 모듈]

Prefork 프로세스를 제어하는 부모 프로세스는 클라이언트의 요청이 들어올 경우를 대비해 대가히고 있다가 자식 프로세스의 생성 여부 등을 관리하는 방식이다.

 

worker 초기에 시작하는 프로세스의 개수를 지정하고, 페이지 요청이 들어오면 스레드로 처리

하는 방식이다.

 

Apache, PHP, MySQL 연동 설치

 

configure -> make -> make install 방법을 사용하지만,

MySQL‘cmake -> make install 방법을 사용한다.

 


Apache 2.2 환경 설정의 개요

주 환경 설정 파일인 http.conf 파일 설정

# vi /usr/local/apache/conf/httpd.conf

추가 환경 설정 파일 설정: httpd.conf 파일에서 관련 항목의 주석을 제거하고 설정

# vi /usr/local/apache/conf/extra/httpd-vhost.conf

아파치 데몬 시작 또는 재시작

# /usr/local/apache/bin/apachectl start

# /usr/local/apache/bin/apachectl stop

Apache HTTP Server 설치하기

 

환경 설정 하기

./configure --prefix=/usr/local/apache2 enable-mods-shared=all

=> --prefix아파치가 설치될 디렉터리를 지정하는 것이고, enable-mods-shared=all 는 관련 모듈을 전부 동적 모듈로 지정하는 것이다. 동적 모듈들은 httpd.conf 파일에서 LoadModule 지시어를 사용하여 동적으로 읽어 들여야 한다.



*DSO설정확인

# vi /usr/local/apache2/conf/httpd.conf

 

httpd.conf

  

=>특정 디렉터리를 제어할 때 사용하는 지시자를 <Direct /> ~ </Directory>의 형태로 작성하며, 각 디렉터리에 대한 권한 등의 여러 설정할 수 있다. 사용되는 설정 항목으로는 Options, AllowOverride, Order가 있다.

 

Options-CGI, SSI, 디렉터리의 심볼릭 링크 사용 여부를 설정하고

AllowOverride-사용자 인증에 관련된 요소로 웹 클리이언트가 특정 디렉터리에 접근할 때 해당

디렉터리에 있는 유저 인증 파일인 .htaccess 파일을 읽게 되는데,

여기에 None을 설정하면 아파치 서버는 이 파일을 무시하게 된다.

Order는 해당 디렉터리에 접근하는 호스트 인증을 담당한다.

 

 

DocumentRoot "/usr/local/apache2/htdocs"

 

=>아파치 서버가 접근하는 각 디렉토리에 어떠한 서비스와 기능들을 허용하고 삭제할 것인가를 지정한다.

 

<Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

</Directory>

 

 

 

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

 

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.example.com/subscription_info.html

=>존재하지 않는 페이지에 대한 요청받을 경우나 해당 디렉터리의 퍼미션이 없는 경우와 같이 에러 페이지에 대한 요청을 처리하는 부분이다.

 

httpd-userdir.conf

=>사용자들이 개인 홈페이지를 이용하려고 할 때 사용하는 파일로 외부 클라이언트들이 접근할 때는 계정 앞에 ~(tide)를 붙인다.

 

httpd-vhosts.conf

=>IP 주소 하나에 여러 도메인을 사용하는 버추얼 호스트 설정할 때 사용하는 파일이다.

 

[]

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"

ServerName dummy-host.example.com

ServerAlias www.dummy-host.example.com

ErrorLog "logs/dummy-host.example.com-error_log"

CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

 

<VirtualHost *:80>

=>가상 호스트를 지정하는 태그이다. 이 태그 안에 가상 호스트 관련 설정을 하면 된다.

ServerAdmin webmaster@dummy-host.example.com

=>해당 도메일을 관리하는 관리자 이메일을 주소를 적는 부분이다.

DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com“

=>기본 웹 문서가 위치하는 디렉터리를 적는다.

ServerName dummy-host.example.com

=>도메인을 적는다.

ServerAlias www.dummy-host.example.com

=>지정한 기본 도메인이외에 또 다른 호스트네임 도메인을 적을 때 사용할 수 있다.

조회하는 서브 도메인에 대하여 resolving이 되어야 한다. 보통 ServerName 항목과 연동해서 사용 한다.

 

ErrorLog "logs/dummy-host.example.com-error_log“

=>에러로그를 기록할 파일을 적는다.

 

CustomLog "logs/dummy-host.example.com-access_log" common

=>접속기록 등 일반적인 로그를 기록할 파일을 적는다.

</VirtualHost>

 

에러코드

 

[HTTP 상태 코드]

1xx 조건부 응답 코드

이 상태의 상태 코드는 상태-라인과 선택적 헤더만을 포함하는 임시의 응답을 나타내고 빈 라인에 의해서 종결되는 코드입니다.

100(계속): 서버는 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타냄

101(프로토콜 전환): 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중

102(처리)

2xx 응답이 성공한 상태

2로 시작하는 상태 코드는 클라이언트의 요청이 정상적으로 처리되는 것을 나타냅니다.

200(성공): 서버가 요청을 제대로 처리했다는 뜻

201(작성됨): 성공적으로 요청되었으며 서버가 새 리소스를 작성했다는 뜻

202(허용됨): 서버가 요청을 접수했지만 아직 처리 중

203(신뢰할 수 없는 정보): 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하는 중

204(콘텐츠 없음): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음

205(콘텐츠 재설정): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는 것

206(일부 콘텐츠): 서버가 GET 요청의 일부만 성공적으로 처리

207(다중 상태)

208(이미 보고됨)

 

3xx 리다이렉션 완료 상태

300(여러 선택항목): 서버가 요청에 따라 여러 조치를 선택할 수 있음

301(영구 이동): 요청한 페이지를 새 위치로 영구적으로 이동

302(임시 이동): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다는 뜻

303(기타 위치 보기): 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시

304(수정되지 않음): 마지막 요청 이후 요청한 페이지는 수정되지 않음

305(프록시 사용): 요청자는 프록시를 사용하여 요청한 페이지만 액세스 가능

307(임시 리다이렉션): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다는 뜻

308(영구 리다이렉션)

 

4xx 요청 오류 상태

4로 시작하는 상태 코드를 만나면 짜증부터 확나게 됩니다. 그래서 'http 403 에러' 등등의 검색어를 많이 이용하시죠. 이렇듯 4로 시작하는 에러는 오류를 나타내주는 코드입니다.

400(잘못된 요청): 서버가 요청의 구문을 인식하지 못했을 때

401(권한 없음): 이 요청은 인증이 필요하며 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있을 때

403(금지됨): 서버에 접속 할 수 있는 권한이 없을 경우

404(찾을 수 없음): 서버에 페이지가 존재하지 않을 경우

405(허용되지 않는 방법): 요청에 지정된 방법을 사용할 수 없음

406(허용되지 않음): 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음

407(프록시 인증 필요): 이 상태 코드는 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용하여 인증해야 함

408(요청 시간초과): 서버의 요청 대기 시간 초과

409(충돌): 서버가 요청을 수행하는 중에 충돌이 발생

410(사라짐): 서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시

411(길이 필요): 서버는 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락 않음

412(사전조건 실패): 서버가 요청자가 요청 시 부과한 사전조건을 만족하지 않음

413(요청 속성이 너무 큼): 요청이 너무 커서 서버가 처리 불가능

414(요청 URI가 너무 긺): 요청 URL이 너무 길어 서버가 처리 불가

415(지원되지 않는 미디어 유형): 요청이 요청한 페이지에서 지원하지 않는 형식

416(처리할 수 없는 요청범위): 요청이 페이지에서 처리할 수 없는 범위

417(예상 실패): 서버는 Expect 요청 헤더 입력란의 요구사항을 만족할 수 없음

420(Enhance Your Calm, 트위터)

422(처리할 수 없는 엔티티)

423(잠김)

424(실패된 의존성)

424(메쏘드 실패)

425(정렬되지 않은 컬렉션)

426(업그레이드 필요)

428(전제조건 필요)

429(너무 많은 요청)

431(요청 헤더 필드가 너무 큼)

444(응답 없음, Nginx)

449(다시 시도, 마이크로소프트)

450(윈도 자녀 보호에 의해 차단됨, 마이크로소프트)

451(법적인 이유로 이용 불가)

451(리다이렉션, 마이크로소프트)

494(요청 헤더가 너무 큼, Nginx)

495(Cert 오류, Nginx)

496(Cert 없음, Nginx)

497(HTTP to HTTPS, Nginx)

499(클라이언트가 요청을 닫음, Nginx)

 

 

5xx 서버 오류 시 상태 코드

서버가 클라이언트의 요청을 수행하지 못했을 경우에 나타나게 됩니다.

500(내부 서버 오류): 서버에 오류가 발생하여 요청 수행 불가

501(구현되지 않음): 서버에 요청을 수행할 수 있는 기능이 없음

502(불량 게이트웨이): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았을 경우

503(서비스를 사용할 수 없음): 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용 불가

504(게이트웨이 시간초과): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했을 경우

505(HTTP 버전이 지원되지 않음): 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않음

506(Variant Also Negotiates)

507(용량 부족)

508(루프 감지됨)

509(대역폭 제한 초과)

510(확장되지 않음)

511(네트워크 인증 필요)

598(네트워크 읽기 시간초과 오류, 알 수 없음)

599(네트워크 연결 시간초과 오류, 알 수 없음)

 


[Options 항목]

 

항목

설명

NONE

어떤 옵션도 이용할 수 없으므로 모든 접근을 거부

ALL

MultiView 옵션을 제외한 모든 옵션을 부여(기본값)

FollowSymLinks

디렉터리의 심볼릭 링크 사용을 허용

서버가 디렉토리안의 심볼릭링크를 허용할 것인가를 결정

HTTP(Hyper Text Transport Protocol)

indexes

웹사이트를 접속할 때 index.html 파일이 없는 경우 웹서버 소스로 파일들을 보여줄 것인지를 결정한다. 주로, 웹서버에서 FTP 목록을 보여줄 때 사용한다.

includes

서버측의 SSL 허용여부.

ExecCGI

디렉토리 아래에 있는 CGI 스크립트 실행 허가

includeNOEXEC

SSL은 허용하지만 #exex #include 명령을 실행 불가

SymLinksOwnerMatch

대상 파일 또는 디렉토리가 심볼릭 링크 소유권자와 같은 소유권을 보유할 때 심볼릭 링크를 따르도록 지정

MultiViews

클라이언트 브라우저에 따라 내용을 다르게 보내는 기능

 

[AllowOverride 항목] Override 접근제한

항목

설명

NONE

AllowOverride를 사용하지 않음. , 유저 인증 파일을 사용하지 않음

ALL

httpd.conf 파일의 AccessFileName 지시자로 설정한 파일을 사용하고

관련 지시자를 사용할 수 있음

AuthConfig

AccessFileName 지시자에 명시한 파일에 대해서 사용자 인증 지시자 사용을 허락

 

 

 

[Order 항목]

Order 명령은 해당 디렉터리에 대해 IP 주소 및 도메인에 대한 필터링 순서를 정한다.

설정 순서는 표기법에 따른다.

 

Allow는 호스트 접근을 허락하면, Deny는 접근을 불허한다.

Allow from all 모든 호스트로부터의 접근을 허락한다는 뜻이며,

Deny from all모든 호스트로부터의 요청을 모든 호스트부터의 요청을 거부한다는 뜻이다.


=>order allow,deny 이면 allow 먼저 다음 deny 설정

order deny,allow 이면 deny 먼저 다음 allow 설정

 

Apache 웹 서버 동작 확인

1)httpd.conf 설정

/usr/local/apache/conf/httpd.conf 파일을 설정해야 한다.

 

 

[주요 항목 설명]

 

ServerName: 서버의 도메인 이름을 적는 부분으로 처음 설치 시에는 주석처리(#)가 되어 있으므로 맨 앞부분의 #을 없애고 활성화시킨다. 도메인이 없으면 IP 주소를 적는다.

 

DocumentRoot: 웹 문서인 HTML 문서가 위치하는 경로를 나타낸다. 특별히 변경할 이유가 없다면 기본 설정값으로 사용해도 된다.


Directory Index:여러 웹 문서 중에 처음으로 인식하는 인덱스 문서를 지정하는 부분이다. 기본값으로 index.html이 설정되어 있고, 필요하면 추가로 index.htm, index.php 등을 적어주면 된다.

 

2) 웹 문서 만들기

httpd.conf 파일의 DocumentRoot 항목에서 확인한 디렉터리인 /usr/local/apache/htdocsindex.html 파일을 간단히 생성한다.

 

3) 웹 데몬 시작하기

apachectl 명령으로 웹 데몬을 시작한다.

# /usr/local/apache/bin/apachectl start

 

Apache 웹 접근 통제

아파치 웹 서버의 기본적인 설정은 모든 클라이언트의 접근이 허락되어 있다. 그러나 접근 통제가 필요한 경우에는 클라이언트의 IP 주소나 도메인에 대해 Order, Allow, Deny 지시자를 이용해서 제어할 수 있다. OrderAllow Deny 지시자의 순서를 지정하는데, 콤마(,)로만 분리해야 하고, 중간에 공백이 들어가서는 안된다.


http-info.conf

웹 브라우저를 이용하여 웹 서버의 상태 정보를 파악할 때 사용하는 파일이다.

 

=> 서버 상태 정보를 허용할 호스트를 설정한다. 이 설정을 하면 웹 브라우저를 이용하여 http://localhost/server-status라고 입력하면 웹 서버의 상태를 파악할 수 있다.

 

=> 웹 서버의 환경 설정을 보고 받을 수 있는 호스트를 설정한다. 이 설정을 사용하려면 mod_info.c가 로드되어 있어야 한다. http://localhost/server-info라고 입력하면 서버의 환경 설정을 확인할 수 있다.

 

httpd.conf 파일에 인증할 디렉터리 관련 설정

 

인증할 디렉터리에 관련 정보를 담고 있는 .htaccess 파일 생성


 

지시자

설명

AuthType

인증 형태를 지정한다. Basic 또는 Digest를 선택할 수 있다.

AuthName

웹 브라우저 인증 창에 표시되는 메시지를 설정한다.

AuthUserFile

사용자 계정 파일명을 설정한다.

Require

접속을 허가할 사용자를 설정한다. 사용자 계정 파일에 등록된 사용자 전부를 허가하려면 ‘Require valid-user’라고 설정하고, 특정 계정만

허가하려면 ‘Require user posein yuloje’ 형태로 지정한다.

 

httpd.conf:아파치 웹 서버의 기본적인 설정을 담당하는 파일

ServerRoot “/usr/local/apache”

Listen 80 아파치 웹 서버의 포트를 설정한다.

ServerName www.posein.org => 서버의 도메인 이름을 적는다.

Document “/usr/local/apache/htdocs”=>웹 문서가 위치하는 디렉터리를 나타낸다.

 

Options=>CGI, SSI, 디렉터리의 심볼리 릭킁 사용 여부 등을 설정

AllowOverride=>사용자 인증에 관련된 요소

Order=>해당 디렉터리에 접근하는 호스트 인증을 담당

 

<lfModule mpm_prefork_module>

StarvtServers 5 =>웹 서버 가동 시 처음에 실행시킬 프로세스의 수

MinSpareServers 5 =>최소로 유지해야 할 여분의 프로세스의 수

MaxSpareServers 10 =>최대로 제한되어야 할 여분의 프로세스의 수

MaxClients 150=>클라이언트들이 동시에 접속할 수 있는 최대의 수

MaxRequestsPerChild 0=>자식 프로세스가 죽기 전에 처리할 수 있는 요청의 개수. 0이면 제한이 없음을 나타냄

</lfModule>

Apache 웹 서버 실행

httpd 명령을 이용한 실행=>아파치 웹 데몬을 실행하는 명령

 

# /usr/local/apache/bin/httpd & =>웹 데몬을 구동한다

# /usr/local/apache/bin/httpd -t=> httpd.conf 파일의 문법적 오류를 검사

# /usr/local/apache/bin/httpd -S=> 설정된 가상 호스트 정보를 출력한다

 

Apache 필요한 경우에 클라이언트의 IP주소나 도메인에 대해 Order, Allow, Deny 지시자를 이용해서 제어

 

 

Order Deny,Allow

Deny from 주소

Allow from 주소

Deny 지시자가 Allow 지시자보다 먼저 검사되는데보통 대부분의 접근을 막고

Allow 지시자가 지정한 주소만 접속을 허가할 때 사용한다.

 

Order Allow,Deny

Allow from 주소

Deny from 주소

Allow 지시자가 Deny 지시자가 먼저 검사된다. 보통 대부분의 접근을 허가하고

Deny 지시자에 지정한 사용자만 접속을 거부할 때 사용한다.

 

Order Mutual-failure

Allow from 주소

Deny from 주소

Allow 지시자에 있고 Deny 지시자에는 없는 호스트만 접근을 허용한다.

-iptables 사용하기

iptabkes를 이용하여 정책을 설정할 때 가장 중요한 것은

실질적인 룰(Rule)에 해당하는 매치(Match)와 타켓(Target)이다

-타겟은 iptables에서 패킷이 규칙과 일치할 때 취하는 동작

-매치는 iptables가 규칙 타겟에 의해 명시되는 동작에 따라 패킷을 처리하기 위해서

만족해야 하는 조건들이다.

[사용법]

#iptables [-t table] action chain match [-j target]

->테이블의 기본 설정은 Filter이고, 다른 테이블 지정할 때에는 t 옵션을 사용해서 사용한다.

-액션(Action)은 사슬을 지정, 설정, 제어할 때 사용하는데,

주로 N, -A와 같은 대문자 옵션을 사용한다

-사슬(Chaing)을 설정하고 하는 사슬을 명기하는데 INPUT, OUTPUT과 같이 입력하면 되고

대소문자를 구분한다.

-마지막으로 실질적인 룰에 해당하는 매치와 지정하면 된다.

--매치는 d, -p와 같은 옵션을 사용해서 설정하고,

--타겟은 j(--jump) 옵션을 사용하여 설정한다.

 

[주요 액션]

Action

설명

-N

새로운 사용자 정의 사슬을 만든다.

-X

비어있는 사슬을 제거한다. , 기본 사슬은 제거할 수 없다.

-P

사슬의 기본 정책을 설정한다.

-L

사슬의 기본 정책을 나열한다.

-F(--flush)

사슬로부터 규칙을 제거한다.

-Z(--zero)

사슬내의 모든 규칙들의 패킷과 바이트의 카운트를 0으로 만든다

-A

사슬에 새로운 규칙을 추가한다

-I

사슬에 규칙을 맨 첫 부분에 삽입한다.

-R

사슬의 규칙을 교환한다

-D

사슬의 규칙을 제거한다


[주요 매치]

Match

설명

-s

출발지 IP 주소나 네트워크와 매칭, 도메인, IP주소,

넷마스크 값을 이용하여 표기(--source, --src)

-d

목적지 IP 주소나 네트워크와 매칭, 도메인, IP주소,

넷마스크 값을 이용하여 표기(--destination, --dst)

-p

특정 프로토콜과 매칭, TCP, UDP, ICMP와 같은 이름을 사용하고 대소문자는 구분하지 않음. 이 옵션을 사용하지 않으면 모든 프로토콜이 대상이 됨.(--protocol)

-i

입력 인터페이스와 매칭

-o

출력 인터페이스와 매칭(--out-interface)

!

아닌(NOT)의 의미로 사용하는데, 특정 매칭을 제외할 때 사용

-m

좀 더 세밀하게 제어할 때 사용하는 매칭 옵션

-state

연결 상태와 매칭, INVALID, ESTABLISHED, NEW, RELATED를 사용

-string

사슬의 규칙을 교환한다


[주요 타켓]

Target

설명(iptables에서 패킷이 규칙과 일치할 때 취하는 동작)

ACCEPT

패킷을 허가하는 것으로 본래 라우팅대로 진행

DROP

패킷을 거부하는 것으로 더 이상 어떤 처리도 수행되지 않고 버림

LOG

패킷을 syslog에 전달하여 기록,

일반적으로 /var/log/message에 저장

REJECT

패킷을 버리고 동시에 동시에 적당한 응답 패킷을 전달. 예를 들면 TCP인 경우 TCP 재설정(Reset) 패킷,

UDP인 경우 ICMP 포트 도달 불가 메시지를 전송

RETURN

호출 사슬 내에서 패킷 처리를 계속 진행

 

#iptables L

=>기본 테이블인 Filter의 모든 사슬에 설정된 정책 정보를 출력한다.

 

#iptables F

=>기본 테이블인 Filter의 모든 사슬에 설정된 정책을 모두 제거한다.

 

#iptables A INPUT s 192.168.12.22 d localhost j DROP

=>INPUT 사슬에 발신지가 192.168.12.22이고, 도착지가 localhost인 패킷을 거부(DROP)

시키는 정책을 추가한다.

 

#iptables A INPUT s 192.168.1.0/24 j ACCEPT

=>INPUT 사슬에 발신지가 192.168.1.0 네트워크 대역에 속한 호스트들을 허가하는 정책을 추가한다.

 

#iptables D INPUT s 192.168.5.13 p icmp j DROP

=>INPUT 사슬에 설정한 관련 정책을 삭제한다.

 

iptables의 확장 사용하기

iptablesp옵션 뒤에 프로토콜을 지정한 뒤에 추가적으로 사용할 수 있는 옵션이 제공된다.

 

1)TCP의 확장

먼저 p tcp로 프로토콜을 지정하고 추가로 지정할 옵션을 사용한다.

[주요 옵션]

옵션

의미

--sport

발신지에서의 하나의 포트 또는 포트범위를 지정. /etc/services에 기록된 포트 이름을 지정하거나 포트 번호로 지정할 수 있고,

범위는 :(콜론)를 사용해서 표기(--source-port)

--dport

도착지의 포트를 지정하는 것으로 설정 방법은 sport 옵션과 동일

(--destination-port)

--tcp-flags

TCP flag를 지정하는 옵션, SYN, ACK, FIN, RST, URG, PSH, ALL, NONE를 지정할 수 있음

--syn

--tcp-flags SYN, RST, ACK, FIN SYN과 같다.

 

2)UDP의 확장

먼저 p udp로 프로토콜을 지정하고 추가로 지정할 옵션을 사용한다. 위에 열거된 TCP의 확장 옵션 중에 sport dport를 지원한다.

 

3)ICMP의 확장

먼저 p icmp로 프로토콜을 지정하고 icmp-type 추가 옵션으로 지정한다. 많이 사용하는 ICMP 타입값에는 echo-request(8), echo-reply(0), destination-unreachable(3) 등이 있고, 관련 정보는 ‘iptables p icmp h’를 입력하면 확인할 수 있다

 

[주요 옵션]

옵션

의미

--icmp-type

숫자값 형태의 ICMP 타입값 또는 코드로 지정

 

 

[iptables를 이용한 설정 예]

들어오는 모든 패킷을 거부하고, 192.168.12.22로부터 들어오는 패킷에 대해서만 허가하기

#iptables P INPUT DROP

#iptables A INPUT s 192.168.12.22 j ACCEPT

 

=>-P 옵션을 사용해서 INPUT 사슬에 DROP으로 지정하면 기본 접근 정책이 거부로 변경된다. 그 후에 허가하려는 호스트를 지정하면 된다.

 

들어오는 모든 패킷을 허가하고 192.168.1.18로부터 들어오는 모든 패킷에 대해서 거부하기

 

#iptables P INPUT ACCEPT

#iptables A INPUT s 192.168.12.22 j DROP

192.168.4.40으로 들어오는 패킷 중에서 tcp 프로토콜관련 패킷만 거부하기

#iptables A INPUT s 192.168.4.40 p tcp j DROP

=>tip 기반 서비스인 telnet, ssh 등은 이용할 수 없다. 그러나 ping 같은 icmp 프로토콜을 사용하는 패킷은 허가된다.

 

포트 번호 20번부터 30번까지를 목적지로 들어오는 패킷들은 거부하고, ssh 포트인 22번 포트만 허용하기

 

#iptables A INPUT p tcp -dport 22 j ACCEPT

#iptables A INPUT p tcp -dport 20:30 j ACCEPT

=>iptables에서 중복된 설정이 있을 경우에는 등록된 것의 설정이 반영된다.

따라서 이 순서대로 설정했을 경우에는 22번 포트의 접속이 거부되므로

순서 설정에 유의해야 한다.

 

-iptables에서 NAT의 분류 및 설정

=>iptables에서 NATSNAT(Source NAT)DNAT(Destination NAT)로 구분한다.

SNAT는 공인 IP 주소 하나로 다수의 컴퓨터가 인터넷 접속이 가능하게 하는 경우

DNAT는 하나의 공인 IP 주소로 다수의 서버를 운영하는 경우

 

SNAT는 패킷의 소스 주소인 발신지를 변경한다는 의미이다. SNAT는 라우팅 경로가 결정된 이후에 설정된다고 하여 NAT 테이블의 POSTROUTING 사슬에 정책 설정을 한다.

 

[설정 예]

#iptables t nat A POSTROUTING o eth0 j SNAT to 203.247.50.3

=>eth0 장치를 통해 나가는 패킷에 203.247.50.3번 주소를 부여한다.

 

#iptables t nat A POSTROUTING o eth0 j MASQUERADE

=>eth0 장치를 통해 나가는 패킷에 할당된 공인 IP 주소를 부여한다. MASQUERADE

유동 IP 주소를 사용하는 경우에 설정한다.

 

DNAT 패킷의 도착지 주소를 변경한다는 의미이다. 패킷의 목적지 주소가 먼저 변경되고

그 변경된 주소로 새로운 라우팅 경로를 찾는다. DNAT는 라우팅 이전 단계에서 적용된다고 하여 PREROUTING 사슬에 정책을 설정한다.

 

[설정 예]

#iptables A PREROUTING t nat p tcp d 203.247.50.3 dport 80 j DNAT to 192.168.1.11:80

=>목적지 주소 203.247.50.380번 포트인 경우에 192.168.1.1180번 포트로 연결한다.

오후 5:03 2016-04-14=>리눅스 수업

 

NO1 Linux

 

DNS, APM 서버구축합니다.

 

 

1. named 그룹과 계정을 생성한다.

 

groupadd -g 475 named

useradd named -u 475 -g named -s /bin/false -d /var/lib/named

 

 

2. 네임서버 홈디렉토리 생성 및 퍼미션설정

 

mkdir /var/lib/named/var/named -p

mkdir /var/lib/named/var/named/master

mkdir /var/lib/named/etc

 

chown named.named -R /var/lib/named/var/named

 

 

3. 네임서버 패키지 다운로드

 

wget ftp://ftp.isc.org/isc/bind9/9.9.2-P2/bind-9.9.2-P2.tar.gz

 

iptables -F

iptables -X

iptables -Z

 

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

iptables -N centos

iptables -A INPUT -j ACCEPT

iptables -L

--------------------------------------------

루프백 핑 허용

iptables -A centos -i lo -j ACCEPT

iptables -A OP

 

 

 

 

 

 

iptables -A INPUT -p 프로토콜 -i 인터페이스 -ㄴ 출발지아이피 -j A/D

 

인트라넷 접속하기

iptables -A centos -s 172.16.4.0/24 -d 172.16.4.0/24 -j ACCEPT

iptables -A OUTPUT -s 172.16.4.0/24 -d 172.16.4.0/24 -j ACCEPT

 

내부----->외부 인터넷 접속 허용하기

iptables -A centos -s 외부주소 -p프로토콜 --sport 포트번호 -j ACCEPT

iptables -A OUTPUT -d 외부주소 -p tcp --deport 80 -j ACCEPT

 

DNS 포트 허용하기

iptables -A centos -p 168.126.63.1 -p udp --sport 53 -j ACCEPT

iptables -A OUTPUT -d 168.126.63.1 -p udp --dport 53 -j ACCEPT

 

-------------------------------------------

1.루프백으로 핑허용하기

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

*사용자 정의 체인 설정하기

iptables -N centos

iptables -A INPUT -j ACCEPT

 

2.eth0 핑허용하기(0번과 8request /reply)

iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT

iptables -A centos -i eth0 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-request -m state --state ESTABLISHED,RELATED -j ACCEPT

 

TCP 프로토콜을 사용하는 경우

클라이언트---------IPTABLES-----------서버

0단계 전원ON LISTEN

1단계 TCP SYN<-----------NEW---------------->

2단계 <-------------------ESTABLISHED<---------SYN/ACK

3단계 ACK---------------->ESTABLISHED---------->

 

chain 규칙

1.IN

2.FORWARD

3.OUTPUT

4.사용자

 

 

 

TCP Wrappertcpd라는 데몬이 슈퍼데몬인 inetd에 의하여 수행되는 서비스들의 접근을 제어하도록 하는 프로그램이다. 접속을 허락한 호스트만 접속할 수 있도록 하거나 원하지 않는 호스트의 접근을 막도록 해주는 접근 제어를 담당한다. 주로 TCP 연결을 기반으로 하고 inetd에 의해 관리되는 telnet, ftp, rlogin, rsh 등을 감시하고 필터링할 수 있다.

 

TCP Wrapper접근이 허가된 호스트의 목록 파일인 /etc/hosts.allow 파일과

접근이 금지된 호스트의 목록 파일인 /etc.hosts.allow 파일을 이용한다. 이 두 파일의 검색 순서는 /etc/hosts.allow를 먼저 읽어 들여서 등록된 호스트를 허가하고, /etc/hosts.deny에 설정된 호스트를 금지시킨다.

 

-관련 파일 작성시 새로운 줄(줄 바꿈)은 무시되고 줄을 연장 할 때는 백슬래시(\)를 사용해야 한다. 빈 줄 혹은 ‘#’으로 시작되는 줄은 주석으로 간주됨

 

daemon_list:한 개 이상의 데몬(서버 프로그램) 프로세스 혹은 예약어(와일드카드)를 쓸수 있다. 여기서 주의할 점은 텔넷 관련 정책을 세울 경우에 telnet이라는 서비스명이 아닌 in.telneted와 같은 실행 데몬명을 적어야 한다. 여러 데몬을 기록할 때는 ,(쉼표)로 구분한다.

 

[예약어]

예약어

설명

ALL

모든 서비스 또는 모든 호스트를 나타냄

LOCAL

같은 도메인에 있는 모든 호스트 “.문자를 포함하지 않는 모든 호스트

KNOWN

이름이 KNOWN인 호스트 또는 이름(주소)을 알고 있는 호스트

UNKNOWN

이름이 UNKOWN인 호스트 또는 이름(주소)을 모르고 있는 호스트

PARANOID

호스트명과 주소가 일치되지 않는 호스트

EXCEPT

리스트 에서 제외한 모든 호스트

 

[설정 예]

#vi /etc/hosts.deny

ALL : ALL

 

client_list

한 개 이상의 호스트 이름, 주소, 패턴 혹은 예약어(클라이언트 이름 혹은 주소가 일치하는 것)를 쓸 수 있다. 일반적으로 IP 주소나 도메인을 기입하고, 사용 가능한 네트워크 주소 대역 및 도메인 대역을 다음과 같다.

 

[사용 가능한 표현 예]

192.168.1.

192.168.1.0/255.255.255.0

.example.com

/etc/xinetd.conf의 주요 항목 설명

 

log_type

어떠한 형태로 로그를 저장할 것인지를 지정하는데, SYSLOGFILE 두 가지 설정이 가능하다. SYSLOGsyslog에 로그를 위임하는 것이고, FILE은 직접 별도의 파일로 지정하는 것이다.

 

log_on_failure

접속에 실패했을 때 기록될 속성값을 지정하는 항목이다.

 

log_on_success

접속에 성공했을 때 기록될 속성값을 지정하는 항목이다.

 

cps

초당 요청받은 수에 대한 제한을 설정하는 항목이다.

)cps = 50 10 =>초당 요청 수가 50개 이상일 경우

 

 

 

 

 

 

PROXY의 개요

프록시 서버란 보통 네트워크 속도가 느린 환경에서 보다 빠른 인터넷을 이용하기 위해 사용한다. 프록시 서버는 자주 방문하는 사이트의 정보를 저장하는 일종의 캐시(Cache) 서버로서 사용자들이

 

주요 파일

설명

/etc/squid/squid.conf

squid 데몬의 환경 설정 파일이다.

/etc/rc.d/init.d/squid

squid 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의

인자값을 사용해서 제어한다.

 

squid.conf 파일의 주요 설정

 

http_port 3128

=> squid 프록시 서버의 포트 번호를 지정하는 항목으로 기본 포트값은 3128이다.

 

cache_dir ufs /var/spool/squid 100 16 256

=> 캐시 정보가 저장될 경로를 지정해 주는 항목으로 ufssquid의 저장 포맷이고, /var/spool/squid가 관련 디렉터리이다. 100은 저장되는 캐시 정보의 크기를 나타내는데 단위는 MB이다. 16은 캐시가 저장되는 첫 번째 하위 디렉터리의 개수이고, 256은 두 번째 하위 디렉터리의 개수이다.

 

프록시 서버의 접근 제어

squid.conf 파일에서 acl 항목을 이용해서 접근 제어를 할 수 있다. acl을 이용하여 특정 IP 주소, 네트워크 대역, 도메인 등을 별칭(alias) 형태로 지정하고, http_access allow http_access deny를 이용하여 접근을 제어한다. 적용되는 룰은 방화벽 설정과 비슷하게 중복 정책인 경우에는 먼저 설정된 정책이 반영된다.

 


DHCP 서버의 개요

 

DHCP 서버란 클라이언트에게 자동으로 IP 주소, Gateway 주소, Name Server 주소 등을 할당해주는 서버를 말한다.


주요 파일

설명

/etc/dhcpd.conf

DHCP 서버의 환경 설정 파일로 rpm 패키지로 설치하면 이 파일이 존재하지 않는다. ‘rpm ql dhcp’ 명령으로 dhcpd.conf.sample을 찾아서 복사하거나 이름을 바꾸어서 생성하도록 한다.

/etc/rc.d/init.d/dhcpd

dhcpd 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자값을 사용해서 제어한다.

 

subnet 150.10.100.0 netmask 255.255.255.224 {

 

range 150.10.100.0 150.10.100.31; =>ip 할당 범위

option routers 150.10.100.1; =>게이트웨이 주소

option subnet-mask 255.255.255.224;

 

option nis-domain "domain.org";

option domain-name "domain.org";

option domain-name-servers 168.126.63.1;

default-lease-time 21600;

max-lease-time 43200;

 

host ns {

next-server marvin.redhat.com;

hardware ethernet 00:0C:29:E5:02:C0;

fixed-address 150.10.100.16; => 맥 어드레스 주소는 150.10.100.16번의 ip에 고정

}

 

 

 

 

항목

설명

range

클라이언트에게 할당한 IP 주소를 시작 주소와 마지막 주소를 기입한다.

range dynamic-bootp

DHCP 클라이언트뿐만 아니라 BOOTP 클라이언트도 함께 할당할 경우에

사용된다.

option domain-name

도메인 명을 지정할 때 사용한다

option

domain-name-servers

네임 서버를 지정할 때 사용하는 항목으로 도메인 또는 IP 주소를 기입한다.

option routers

게이트웨이 주소를 지정할 때 사용한다.

option broadcast -

address

브로드캐스트 주소를 지정할 때 사용한다.

default-lease-time

임대를 요청하는 클라이언트가 특정한 만료 시간을 요청하지 않았을 경우에 할당되는 시간으로 단위는 초(second)이다.

max-lease-time

임대를 요청한 클라이언트가 IP 주소를 가지고 있는 최대 시간으로

단위는 초이다.

 

 

NTP 관리

 

NTP는 컴퓨터간의 시간을 동기화 하는데 사용된다.

 

주요 파일

설명

/etc/ntp.conf

NTP 서버의 환경 설정 파일이다.

/etc/rc.d/init.d/npd

ntpd 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자값을 사용해서 제어한다.

 

/etc/ntp.conf의 설정

 

driftfile /var/lib/ntp/drift

=>지역 시스템의 시간을 정확하게 유지하는 파일을 지정하는 항목으로 시간 오차의 평균값을 저장한다.

 

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

=>restrictNTP 서버에 접근할 클라이언트를 제한할 때 지정한다.

 

server time.kriss.re.kr

server time.bora.net

=> 기준이 되는 NTP 서버를 지정하는 항목이다.

FTP 관리

 

FTPTCP/IP 프로토콜 기반으로 서버와 클라이언트 사이에 파일을 주고 받기 위한 프로토콜이다.

 

vsftpd는 간결하고 안전하며 처리 속도도 매우 빠른 프로그램으로 리눅스 및 유닉스 계열에서 사용할 수 있다.

 

주요 파일

설명

/etc/vsftpd.conf

vsftpd의 서버의 환경 설정 파일이다.

/etc/rc.d/init.d/vsftpd

vsftpd 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자값을 사용해서 제어한다.

/etc/pam.d/vsftpd

vsftpdPAM 관련 설정 파일이다.

/etc/vsftpd/ftpusers

PAM 관련 설정 파일인 /etc/pam.d/vsftpd에 사용되는 파일로 기본 설정이 접근 거부될 사용자 목록으로 이용된다.

/etc/vsftpd/user_list

vsftpd에서 이용하는 사용자 목록 파일로 허가 또는 거부 목록 파일로

사용할 수 있으나, 기본 설정이 userlist_deny=YES이어서 거부 목록

파일로 사용된다.

/etc/logrotate.d/vsftpd

vsftpd의 로그 로테이트 관련 파일이다.

 

vsftpd.conf 파일 분석

 

anonymous_enable=YES

=> 익명 계정의 허가 유무를 지정한다. 기본 설정은 사용 가능하다.

 

local_enable=YES

=> 일반 계정 사용자의 허가 유무를 지정한다. 기본적으로 사용 가능하고, 주석처리나 NO로 지정하면 익명의 사용자만 가능하다.

 

write_enable=YES

=>쓰기가 가능할 것인지를 하는 항목으로 주석처리하게 되면 파일이나 디렉터리 생성이 불가능하게 된다.

 

local_umask=022

=>디렉터리나 파일 생성 시 퍼미션 값을 지정한다.

 

chroot_local_user=YES

=> 접속한 사용자의 홈 데렉터리를 최상위 디렉터리로 지정한다. 이 지시자를 사용하면 모든 접속자에게 적용된다.

 

max_client=50

=> 최대 접속자를 지정하는 항목이다.

 

vsftpd.conflisten_port = 21 => vsfrp 데몬이 외부 접속 요청에 통신할 포트 21

local_umask = 022 => 파일이 생성될 때 파일 퍼미션 적용될 값 umask 022

ftp 데이터 전송에 서용할 포트 20

메일 관련 서비스

 

메일 관련 프로그램의 분류

MTA(Mail Transper Agent) => 우체국 사이의 전달

이메일을 SMTP 프로토콜을 이용해 다른 메일 서버로 전달하는 프로그램을 말하는데, 보통 메일 서버 프로그램을 지칭한다. 대표적인 프로그램에는 sendmail. qmail. postfix, MS Exchange Server 등이 있다.

MUA(Mail User Agent) => 편지, 연필, 종이

사용자가 메일을 읽고 보낼 때 사용하는 프로그램을 말한다.

MDA(Mail Delivery Agent) => 우체부

MDA는 일종의 대리인 역할을 수행하는 프로그램으로 메일박스에 도착한 메일을 대행해서 가져오거나 전달하는 역할을 수행한다. 대표적인 프로그램으로 procmail이 있는데, 스팸 메일을 필터링이나 메일 정룔 등의 역할을 수행한다.

 

sendmail 관련 주요 환경은 /etc/mail/sendmail.cf 파일에서 설정하고, /etc/rc.d/init.d/sendmail 데몬 스크립트를 이용해서 제어한다. sendmailsendmail.cf 파일 이외에도 /etc/mail/local-host-name, /etc/mail/access 등 별도의 파일을 이용해서 관리한다.


/etc/mail/sendmail.cf

이 파일의 기본 설정 규칙은 비어 있는 행과 ‘#’은 무시된다. 설정과 관련된 항목은 C, D, F, H, K, M, O, P, R, S, V로 시작한다.

 

Cwlocalhost

=>Cw은 메일을 수신할 호스트 이름을 명기하는 항목으로 보통 도메인명을 기입한다. 예를 들면 도메인이 ‘posein.org’인 경우에는 Cwposein.org로 설정한다.

 

Fw/etc/mail/local-host-names

=> Fw은 여러 도메인을 사용하는 경우 별도의 파일을 지정하는 항목이다.

 

센드메일(sendmail)관련 주요 파일

(1) /etc/mail/local-host-names

메일 서버에 사용하는 도메인을 설정하는 파일로 한 줄에 도메인 하나씩 기입하면 된다.

 

(2) /etc/mail/sendmail.mc

sendmail매크로 설정 파일sendmail.cf 파일이 삭제되었거나 복원할 경우에 m4라는 매크로 프로세서를 이용하여 새롭게 생성할 수 있다. 참고로 sendmail.cf 파일을 복원하려면 sendmail-cf 패키지를 설치해야 한다.

 

[사용 예]

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

 

(3) /etc/mail/access

메일 서버로 접근하는 호스트나 도메인의 접근을 제어하는 파일로 허가할 호스트나 도메인은 통과(RELAY) 시키고, 허용되지 않으려면 거부(REJECT 또는 DISCARD) 할 수 있다.

 

이 파일은 두 개의 필드로 구성되어 있는데, 첫 번째 필드에는 도메인명, IP 주소, 메일 계정 등을 기입하고, 두 번째 필드에 정책을 적으면 된다. 아울러, 실제 센드메일 데몬이 참고하는 파일은 /etc/mail/access.db 이므로 변경 시에는 makemap hash 명령을 이용한 업데이트가 필요하다.

 


[주요 정책]

정책

설명

RELAY

특정 호스트나 도메인의 접근을 허용한다.

REJECT

메일을 거절하고, 거부 메시지를 보낸다. => 모든 메일 거부

DISCARD

메일을 거부 메시지 없이 무조건 거절한다. => 수신을 무시

OK

DNS 조회가 되지 않는 경우라도 들어오는 메일을 허가한다.

보통 거부된 도메인에 대한 예외 처리 시에 사용한다.

 

[적용 명령]

# makemap hash /etc/mail/access < /etc/mail/access

 

(4) /etc/aliases

특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정하는 파일이다. 보통 동일한 계정으로 들어오는 메일을 여러 사용자에게 전달하는 메일링 리스트가 필요한 경우에 유용하다. 센드메일이 참고하는 파일은 /etc/aliases.db이므로 변경 시에는 ‘newaliases’ ‘sendmail bi’ 명령을 적용시켜야 적용된다.

  

(5) /etc/mail/virtusertable

하나의 메일 서버에 여러 도메인을 사용하는 환경에서 동일한 메일 계정을 요구할 때 각각의 도메인으로 도착하는 메일을 포워딩할 때 사용하는 파일이다. 센드메일이 참고하는 파일은 /etc/virtusertable.db 이므로 변경 시에는 ‘makemap hash’ 명령을 사용해야 한다.

  

관련 명령어

 

sendmail

 

-bi 옵션 : newaliases와 같은 명령으로 /etc/aliases 파일 수정 시에 관련 DB 정보 파일을 업데이트 한다.

 

/etc/mail/sendmail.cf

Cwlocalhost:메일을 수신할 호스트 이름을 명기하는 항목, 보통 도메인명을 기입한다.

Fw:여러 도메인을 사용하는 경우 별도의 파일을 지정하는 항목

Dj:특정 도메인명으로 지정하여 강제적으로 적용할 때

Kvirtuser hash=> 동일한 계정을 여러 가상 호스트들이 메일 주소로 동시에 사용할 수 있도록 관련 파일을 지정하는 항목

O AliasFile=/etc/aliases=>특정 계정으로 메일이 도착했을 경우에 다른 계정으로 메일이 전송되도록 설정

Forwardpath=>개인 사용자가 본인의 계정으로 들어온 메일을 다른 메일로 포워딩할 때 설정하는 파일명을 지정하는 항목이다.

 

sendmail.mc 가 환경설정파일을 생성하는데 사용되는 매크로 정의

m4 sendmail.mc > sendmail.cf의 형태로 저장된다.

 

센드메일 관련 주요 파일

1)/etc/mail/local-host-names => 메일 서버에 사용하는 도메인을 설정하는 파일로 한 줄에 도메인 하나씩기입하면 된다.

2)/etc/mail/sendmail.mc=>sendmail의 매크로 설정 파일로 sendmail.cf 파일이 삭제되었거나 복원할 경우에 m4라는 매크로 프로세서를

이용하여 새롭게생성할 수 있다. 참고로 sendmail.cf 파일을 복원하려면 sendmail-cf패키지를 설치해야 한다.

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

3)/etc/mail/access=>메일 서버로 접근하는 호스트나 도메인의 접근을 제어하는 파일

RELAY:특정 호스트나 도메인의 접근을 허용한다

REJECT:메일을 거절하고, 거부 메시지를 보낸다

DISCARD:메일을거부 메시지 없이 무조건 거절

4)/etc/aliases :특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정하는 파일

보통 동일한 계정으로 들어오는 메일을 여러 사용자에게 전달하는 메일링 리스트가 필요한 경우에 유용하다.

5)/etc/mail/virtusertable:하나의 메일 서버에 여러 도메인을 사용하는 환경에서 동일한 메일 계정을 요구할 때

각각의 도메인으로 도착하는 메일을 포워딩할 때 사용하는 파일이다

6)~/.forward:각 사용자 개인이 자신에게 들어오는 메일을 다른 메일 주소로 포워딩할 때 사용하는 파일이다.

=>.forward 파일의 퍼미션 값은 해당 사용자에게만 쓰기 권한이 설정되어야 한다.

 

sendmail 관련 주요 명령어

1)mailq-보내는 메일이 대기하는 디렉터리의 큐 상태를 출력해 주는 명령

-Ac /etc/mail/submit.cf 파일에 명시된 큐의 상태를 출력한다.

DNS 관리

 

DNS의 개요

도메인 네임 시스템은 호스트의 도메인 이름을 IP 주소로 바꾸거나 그 반대의 변환을 위해 개발되었다.

 

DNS 서버 프로그램 : Bind

bind는 가장 널리 쓰이는 DNS 서버 프로그램으로 named라는 이름의 데몬을 사용한다.

 

주요 파일

설명

/etc/named.conf

DNS 서버의 전반적인 환경 설정을 담당하는 파일로 서버에서 사용하는 zone 파일을 지정한다. 서버의 환경 설정 파일이다.

/var/named

루트 도메인 서버에 대한 정보를 담고 있는 named.ca를 비롯하여

사용자가 선언하는 zone 파일 등이 위치하는 디렉터리이다.

/etc/rc.d/init.d/named

named 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자값을 사용해서 제어한다.

 

RHEL 4 버전부터는 보안 강화를 bind-chroot 패키지로 추가로 설치할 수 있는데, 이 패키지를 설치하게 되면 주요 항목의 위치가 다음과 같이 변경된다.

주요 항목

기본 패키지 설치

bind-chroot 설치

환경 설정 파일

/etc/name.conf

/var/named/chroot/etc/name

(zone) 파일 위치

/var/named

/var/named/chroot/var/named

 

DNS 서버 설정의 개요

 

DNS 서버 설정의 핵심은 /etc/named.conf 파일과 zone 파일이다. /etc/named.conf 파일에서 DNS 서버의 환경에 대한 설정을 하고, 운영하는 도메인에 대한 존 파일 및 리버스 존(reverse zone) 파일을 지정한다.

 

- options 구문

DNS 서버의 동작 및 제어와 관련된 여러 가지 설정을 하는 영역으로 존 파일이 위치하는 디렉터리명은 반드시 명기해야 한다.

 

·allow-query {192.168.0/24; };

=> 네임 서버에 질의할 수 있는 호스트를 지정한다. 위와 같이 지정하면 192.168.0.0 네트워크 주소 대역에 속한 호스트만 질의할 수 있다.

·allow-transfer {192.168.0/24; };

=> zone 파일의 내용을 복사할 대상에 제할을 걸 때 지정한다. 이 항목을 명기하지 않았을 경우에는 제한 없이 zone 파일을 복사할 수 있게 된다.

 

 

-acl 구문

ACL(Access Control List)의 약자로 여러 호스트를 하나의 명칭으로 지정할 때 사용한다. 지정한 이름은 options 구문의 allow-query, allow-transfer 등에 사용 가능하다. 주의할 점으로 acl 구문의 선언은 options 구문 이전에 해야 한다.

 

 

-zone 구문

도메인을 관리하는 데이터베이스 파일인 zone 파일을 지정한다. 기본적으로 루트(.) 도메인 서버에 대한 정보 파일인 named.ca에 대한 선언이 되어 있고, 추가적으로 localhost, localhost, domain 등에 대한 존 파일 선언이 되어 있다.

 

 zone 파일

(1) zone 파일의 개요

사용하는 도메인에 대한 zone 파일은 일반 존 파일리버스 존 파일로 나누고, 파일명은 관리자가 임의로 지정할 수 있다. 리버스 존 파일은 필수적으로 생성할 필요는 없지만, IP 주소에 따른 도메인 조회를 하는 사이트에서 메일 전송할 경우에 스팸 처리가 될 수 있으니 염두해 두어야 한다.

 

(2) zone 파일의 구조

zone 파일은 크게 SOA(Start Of Authority) 레코드와 자원 레코드로 나눌 수 있다.


(3) zone 파일의 항목 설명

 

$TTL

Time To Live의 약자로 zone 파일의 첫 줄에 설정해야 하며, 역할은 다른 서버에서 도메인 관련 정보를 조회해서 가져갔을 경우에 그 쪽 서버의 캐시에 해당 정보가 얼마나 머물지를 결정한다. 값은 초단위로 설정하면 되는데, 86400이라고 지정하면 1일이 된다. 최근에는 단위를 붙일 수 있는데, 대소문자 구분 없이 W(), D(), H(), M()을 붙여서 사용해도 된다.

 

SOA record

존 파일을 시작하는 레코드로 시작은 도메인명 또는 도메인명을 나타내는 기호인 @를 사용한다. 항목에 대한 설명이 필요한 경우 주석기호인 세미콜론(;)을 사용하면 된다.

 


주요 구성

설명

nameserver

네임 서버의 호스트명과 도메인명을 적는다. 전체 도메인을 기입할 경우에는 마지막에 루트 도메인을 뜻하는 ‘.’을 찍어야 한다.

) ns.linux.or.kr.

contact_email_address

관리자의 이메일 주소를 적는다. ‘계정 도메인형태로 기입해야 하고, 마지막에 루트 도메인을 뜻하는 ‘.’을 찍어야 한다.

)posein.linux.or.kr

serial_number

일종의 일련번호zone 파일이 갱신되면 숫자가 더 크도록 설정한다.

보통 ‘YYYYMMDD’ 형식을 사용하는데 ‘YYYYMMDD’는 해당 연월일을 적고, NN은 수정한 횟수를 기입한다.

) 2014051301

refresh_number

보조 네임 서버가 자신의 정보를 업데이트하기 위해

주 네임 서버에 얼마나 자주 체크할 것인지를 설정한다.

) 86400, 1D, 1d

retry_number

보조 네임 서버가 주 네임 서버 접근에 실패했을 경우에

재시도할 주기를 설정한다.

) 3600, 1H

expire_number

보조 네임 서버가 주 네임 서버에 접근을 실패하여 retry_number

설정한 주기로 재시도를 할 때의 만기 시간을 지정한다.

) 1W

minimum_number

일종의 SOA 영역의 TTL로서 가져간 정보의 최소 보관 시간을 설정한다.

) 3H

 

도메인

도메인명, 호스트명, 공백, @, * 등이 올 수 있다.

@는 현재 도메인을 가리키고, *는 모든 호스트명을 뜻한다. 호스트명만 기입하면 호스트명. 도메인 이름으로 인식하고, 전체 도메인명으로 지정할 때는 반드시 맨 뒤에 ‘.’을 붙여야 한다. 공백은 바로 윗 항에 설정된 도메인값을 이어서 사용한다.

 

TTL

해당 레코드에 대한 TTL 값을 설정하는 항목이다. 보통 생략해서 사용하는데, 생략했을 경우에는 $TTL 항목에 설정된 값이 반영된다.

 

class

레코드의 클래스를 지정하는 부분을 IN, CH, HS 등이 사용 가능하다. 보통 Internet을 의미하는 IN을 사용하는데, 생략해도 무방하다.

 

type

 

타입

설명

A

IPv4의 주소를 기입할 때 사용한다.

AAAA

IPv6의 주소를 기입할 때 사용한다.

NS

도메인 네임 서버를 지정할 때 사용한다.

MX

메일 서버를 지정할 때 사용한다.

CNAME

Canonial Name 레코드로 일종의 별칭(alias)를 지정할 때 사용한다.

PTR

리버스 존에서만 사용하는 레코드로 IP 주소를 도메인으로 변환하기 위해

지정한다.

 

(4) zone 파일 설정의 예

 

MX레코드는 “Mail eXchange”의 약자로서 해당 도메인으로 메일을 사용할 경우 메일서버를 지정한 것이다. MX레코드에서는 IP주소로 지정해도 되지만 가능하면 도메인명으로 지정하는 것이 좋다. (주의) 도메인으로 지정할 경우 다음과 같이 꼭 .으로 끝나야 한다.

그림입니다.

원본 그림의 이름: CLP000006d8000d.bmp

원본 그림의 크기: 가로 394pixel, 세로 126pixel

MX 다음의 숫자는 메일처리의 우선순위를 명시한 것이다. 메일은 숫자가 가장 적은 도메인 주소로 메일을 보내게 된다.

 

CNAME 레코드 : “Canonical NAME의 약어로서 IP가 아닌 특정 도메인으로 설정하기 위해 사용한다.

 

그림입니다.

원본 그림의 이름: CLP000006d8000e.bmp

원본 그림의 크기: 가로 360pixel, 세로 63pixel

위의 예에서 첫 번째 행은 A 레코드에 대한 것으로 sulinux.netIP주소가 192.168.0.1 이라는 것을 지정한 것이며, 두 번째 행에서는 www.sulinux.net IP주소는 sulinux.net과 같다는 의미이다.

 

PTR 레코드

PTR 레코드는 IP주소에 대해 도메인명을 매핑해 주며 Reverse Zone 파일에서 사용된다. PTR 레코드는 중복되지 않기 때문에 하나의 IP에 대해 하나의 도메인만 정의할 수 있다.

  

 

파일 관련 서비스

 

삼바(SAMBA) 서버 관리

-삼바란 이 SMB를 이용하여 리눅스를 비롯한 유닉스 계열 운영체제와 윈도우 운영체제간의 자료 공유 및 하드웨어를 공유할 수 있도록 해준다. 현재 SMB 프로토콜은 유닉스와 윈도 환경을 동시에 지원하는 CIFS(Commen Internet File System)로 확장되었다.

 

[삼바 관련 주요 RPM 패키지]


패키지명

설명

samba

삼바 서버 패키지로 삼바 데몬, 서버 관련 라이브러리, 실행 데몬 스크립트 등이 들어 있는 패키지로 서버 구성 시에 반드시 설치해야 한다.

samba-common

삼바 서버와 클라이언트 모두에게 필요한 패키지로 삼바 서버의 주요 환경 설정 파일인 smb.confsmbpasswd, tetstparm 등의 명령어 등도 포함하고 있다.

samba-client

삼바 클라이언트 명령어가 들어 있는 패키지로 smbclient, smbtree 등의 명령어를 포함하고 있다.

samba-swat

swat(Samba Web Administration Tool)은 웹 기반으로 삼바를 제어할 수 있는 패키지로 smb.conf의 주요 설정을 원격에서 제어할 수 있다. 901번 포트를 사용하므로 http://localhost:901 형태로 접근해서 제어한다.

 

삼바의 구성

(1) 데몬

[삼바 데몬]

 

데몬명

설명

smbd

파일과 프린터 공유, 사용자의 권한 부여 및 확인 등 사용자 인증을 담당한다.

nmbd

WINS를 담당하는 데몬으로 클라이언트를 위해 NetBIOS nameserver를 지원, browsing(서비스 통지) 지원, 컴퓨터 이름과 IP 주소 연결 등의 역할을 수행한다.

 

실제 데몬을 구동할 때는 /etc/rc.d/init.d 디렉터리 안에 smb nmb라는 실행 데몬 스크립트를 제공하므로 다음 예처럼 사용하면 된다.

  

[smb.conf의 주요 섹션]

 

데몬명

설명

[global]

삼바 서버의 전체적인 환경 설정을 담당하는 섹션

[homes]

각 사용자들이 자신의 홈 디렉터리로 접근할 때의 권한을 설정하는 섹션

[printers]

프린터 관련 권한을 설정하는 섹션

 

[Share Definition의 주요 옵션]

 

데몬명

설명

comment

간단한 설명을 설정한다,

path

공유 디렉터리의 경로룰 설정한다.

read only

공유 디렉터리를 읽기 전용으로 설정한다.

writable, write ok

공유 디렉터리를 쓰기 가능하게 설정한다.

valid users

공유 디렉터리를 이용할 수 있는 사용자를 지정한다.

write list

공유 디렉터리에 접근 및 쓰기 권한을 행사할 수 있는 사용자를 지정한다. 그룹인 경우에는 그룹명 앞에 @를 붙이면 된다.

public, guest ok

다른 사용자들이 이용할 수 있도록 설정할 때 사용한다.

browseable,

browsable

공유 디렉터리의 리스트를 보여줄 때 설정한다.

printable

공유 디렉터리에 스풀 파일을 지정할 때 설정한다.

create mask,

create mode

파일을 생성할 때 허가권을 지정할 때 설정한다.

 

 

 

 

[sdata]

comment = share directory

path = /sdata

public = yes

write list = @insa

=>윈도우에서 접근할 때의 폴더 이름은 sdata로 설정한다.

설명은 share directory로 설정한다.

공유 디렉터리 경로는 /sdata로 설정한다.

모든 사용자가 접근 가능하도록 설정한다.

 

[www]

comment = Web Directory

path = /usr/local/apache/htdocs

valid users = phpman webgirl

writable = yes

=> 윈도우에서 접근할 때의 폴더 이름은 www로 설정한다.

설명은 Web Directory로 설정한다.

공유 디렉터리 경로는 /usr/local/apache/htdocs로 설정한다.

접근 가능한 사용자는 phpmanwebgirl만 설정한다.

파일 생성 및 삭제 권한은 phpman만 가능하도록 설정한다.

NFS 서버 관리

 

NFS(Network File System)의 개요

-NFS1984Sun Microsystems사에서 개발한 프로토콜로 TCP/IP 네트워크상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉터리인 것처럼 사용할수 있게 해준다. NFSNIS와 더불어 RPC(Remote Procedure Call) 기반으로 작동되므로, 해당 서비스를 해주는 rpcbind(portmap) 데몬을 먼저 실행시켜야 한다.

 

NFS 서버의 설정

NFS 서버의 접근 제어는 /etc/exports에서 설정하고, /etc/rc.d/init.d 디렉터리에 존재하는 데몬 스크립트인 rpcbind, ngs를 실행하면 사용 가능하다.

 

NFS 서버 설정 순서

접근 관련 설정

# vi /etc/expors

 

관련 데몬 시작

# service rpcbind start

# service nfs start

 

(1) 환경 설정 파일: /exports

/etc/exports 설정할 때에는 줄 단위로 외부에 공유할 디렉터리를 입력하고 공백(TAB)으로 구분한 뒤에 허가할 호스트를 지정 및 옵션을 기입하면 된다. 허가할 호스트는 IP 주소, 도메인, /etc/hosots에 설정한 호스트명, NIS에서 설정한 그룹명 등을 입력하면 하고, 와일드 카드로 모두라는 의미의 *를 사용한다.

 

[설정법]

공유할_디렉터리 허가할_호스트(옵션) [허가할_호스트(옵션) ...]

옵션

의미

ro

읽기 전용으로 지정하는 옵션으로 기본값이다.

rw

읽기 및 쓰기가 가능하도록 지정하는 옵션이다.

root_squash

NFS 클라이언트에서 접근하는 root 사용자를 무시하고 서버상의

nobody(또는 nfsnobody)로 매핑시키는 옵션이다. 일반 사용자의 권한은

그대로 인정된다.

no_root_squash

NFS 클라이언트에서 접근하는 root 사용자를 무시하지 않고,

root로 인정한다.

all_squash

root를 포함하여 모든 사용자의 권한을 nobody(또는 nfsnobody)로 매핑시킨다.

secure

포트 번호가 1024 이하의 요청에만 허가할 때 사용한다. 기본값으로 설정되어 있고, 반대의 설정이 insecure이다.

async

쓰기가 설정된 디스크 스토리지에 사용하면 유용한 옵션으로 데이터 변경에 대비해 비동기적 처리를 할 때 사용한다.

 

NFS 클라이언트에서 사용하기

=> NFS 클라이언트에서는 mount 명령을 이용하여 NFS 서버의 파일 시스템을 이용할 수 있고, 부팅할 때 마운트하여 사용하려면 /etc/fstab 파일에 등록하면 된다.

 

(1) mount mount 명령 이용하기

[사용 예]

# mount t nfs 192.168.5.13:/nfsdata /mnt

=> 192.168.5.13/nfsdata/mnt 디렉토리로 마운트한다.

 

# mount.nfs 192.168.5.13:/nfsdata /mnt

=> 192.168.5.13/nfsdata/mnt 디렉토리로 마운트한다.

 

(2) /etc/fstab 등록하기

 

[설정 예]

# vi /etc/fstab

192.168.5.13:/nfsdata /mnt nfs timeo=15,soft,retrans=3 0 0

 

관련 명령어

(1) rpcinfo

=> rpc 관련 정보를 출력해 주는 명령이다.

 

(2)exports

NFS 서버에 익스포트(export)된 디렉터리 정보를 관리해 주는 명령이다.

 

[주요 옵션]

 

데몬명

설명

-V

설정된 내용을 자세히 출력한다.

-r

/etc/expors에 설정된 내용을 다시 읽어 들인다.

-a

모두라는 의미로 한 번에 익스포트된 디렉터리를 호출할 때 사용한다.

-u

익스포트된 하나 이상의 디렉터리를 해제할 때 사용한다.

 

showmount => NFS 서버의 마운트 관련 정보를 출력하는 명령이다. NFS 클라이언트에서 NFS 서버에 익스포트된 정보를 확인할 때도 사용한다.

LDAP의 개요

 

LDAP(Lightweight Directory Access Protocol, 경량 디렉터리 접근 규약)

-LDAPIP프로토콜 기반으로 사용자, 시스템, 네트워크, 서비스 정보 등의 디렉터리 정보를 공유할 수 있다.

 

LDAP은 이름·주소와 같이 하나 이상의 속성(Attributes)을 가진 객체(Object)로 구성되고, 그 엔트리는 DIT(Directory Information Tree)라 부르는 트리 구조에 의해 조직화되고, 이 조직 내에서 고유한 식별자인 DN(Distinguished Name)을 사용하고, DN은 상대 고유 이름으로 구성된다.

 


[속성 관련 키워드]

패키지명

긴 이름

설명

C

CountryName

국가 이름

st

StateProvince

(우리나라의 도) 이름

l

Locality

보통 도시를 나타내지만, 특정 지역 단위에서도 사용 가능

street

StreetAddress

도로명 주소(지번)

o

OrganizationName

조직(회사) 이름

ou

Organization

조직의 부서 이름

cn

CommonName

일반적으로 이름과 성의 조합

sn

SurName

성을 나타냄

dc

domaincomponent

도메인 네임의 요소를 나타냄

 

 

인증 관련 서버 관리

 

NIS 이용하기

-NIS(Network File System)는 네트워크 기반으로 여러 가지 정보를 제공해주는 서비스를 말한다. 각각의 서버에 로그인이 필요한 경우 사용자는 모든 서버에 사용자 계정 및 암호를 가지고 있어야 한다. NIS는 하나의 서버에 등록된 사용자 계정, 암호, 그룹 정보 등을 공유하여 다른 시스템에 제공하는 서비스를 말한다.

 

NIS를 이용하기 위해서는 서버 및 클라이언트에서 공통적으로 해야 할 작업이 있다. 먼저 NISRPC(Remote Procedure Call)을 사용하기 때문에 관련 호출을 처리해 주는 데몬을 반드시 구동시켜야 한다. 또한 DNS를 조회하기 전에 NIS를 더욱 빠르게 이용하거나 도메인이 없이 NIS 구성을 테스트해 보려면 /etc/hosts에 등록하는 것도 좋은 방법이다.

 

/etc/hosts 파일 수정하기

=>NIS 서버 및 클라이언트 모두 각각의 IP 주소 및 도메인을 등록하여 DNS 조회 없이 더욱 빠르게 이용할 수 있고, 도메인이 없는 경우에 가상적으로 구성해서 동작 여부를 확인할 수 있다.

 

) # vi /etc/hosts

203.247.40.248 nis.test.co.kr

203.247.40.246 nis_client.test.co.kr

 

[NIS 서버 데몬 스크립트]

스크립트명

설명

ypserv

NIS 서버를 운영하는 주 데몬 스크립트이다.

yppasswdd

NIS 클라이언트에서 패스워드 시에 적용되도록 해주는 데몬 스크립트이다.

ypxfrd

NIS 서버와 NIS 클라이언트 간의 맵핑 속도로 높여주는 데몬 스크립트이다.

 

NIS 도메인명 설정하기

NIS에서 사용할 도메인명을 설정해야 한다. nisdomainname이라는 명령을 사용하여 지정해도 되지만, 계속적으로 사용한다면 부팅 시에 적용되도록 /etc/sysconfig/network 파일에 등록한다.

 

. 명령어 사용

# nisdomainname test.co.kr

 

 

. /etc/sysconfig/network 파일에 추가

# vi /etc/sysconfig/network

NISDOMAIN=test.co.kr

 

계정 생성

NIS 클라이언트에서 사용할 계정 하나를 생성한다.

) # useradd alin

# passwd alin

 

관련 데몬 시작하기

NIS 서버 관련 데몬이 ypserv, yppasswdd, ypxfrd를 구동시킨다.

 

) # service ypserv start

# service yppasswd start

# service ypxfrd start

가상화-한 컴퓨터의 물리적 시스템 자원인 CPU, 메모리, 디스크 등을 여럿으로 나누거나, 다수의 컴퓨터들의 물리적 자원을 하나로 묶어서 제공하는 기술을 말함.

KVM=>x86 시스템 기반의 리눅스 전가상화를 지원하는 기술로 CPU 가상화 기술인 인테의 VT AMD-V를 기반으로 동작한다. QEMU이라는 CPU 에뮬레이터를 사용한다. 상용화된 제품으로 RHEV가 있다.

 

KVM 가상화 서비스의 설치 및 구동 순서

service libvirt start

virt-manager

 

가상화의 기능-공유, 단일화, 에뮬레이션(물리적 자원 자체에는 존재하지 않으나 가상 자원에는 어떤 기능들이나 특성들을 마치 처음부터 존재했던 것처럼 가질 수 있다)

 

절연(Insulation)-가상화된 자원들과 물리적 자원들 간의 상호 매핑은 가상화 자원들 또는 가상화 자원들을 사용자들에게 아무런 영향을 미치지 않으면서 물리적 자원들이 교체될 수 있도록 해줌

가상화의 효과-높아진 자원 활용률, 낮아진 관리 비용과 관리의 용이성, 사용의 유연성, 향상된 보안, 높아진 가용성 증가된 확장성, 상호운영성, 향상된 프로비저닝

(프로비저닝:사용자의 요구사항에 맞게 할당, 배치, 배포할 수 있도록 만들어 놓은것)

 

VMM-물리적인 하드웨어를 가상머신의 하드웨어에 매핑시키고 게스트 운영체제의 자원 활용을 관리하는 업무를 수행한다.

 

전가상화(Full Virtualization)-가상화 소프트웨어가 수정하지 않은 게스트 운영체제를 100% 완전 가상화 환경 위에서 제공하는 기술 시스템 전체를 완전히 가상화 하여 시스템의 Bios부터 CPU, Memory, I/O 등을 완전히 에뮤레이션 하여 가상화하는 방법을 사용한다.(KVM, Hyper-V, VMware, ESX Server, Xen)

-장점:하드웨어를 완전히 가상화 하기 때문에 가상머신 OS에 아무런 수정없이 Linux까지 다양한 OS를 이용할 수 있다. 가상머신에서 패스워드 분실시 크랙이 가능하다

-단점:전가상화를 실현하기 위하여 CPUVT를 이용하므로 퍼포먼스의 저하가 발생한다는 단점이 있다.

 

 

반가상화(Para-virtualization)-하드웨어 전체를 가상화 하는 대신에 가상화가 적용된

리눅스 커널을 시스템 부팅시 적용하므로써 모든 장치를 가상화 하는 것은 아니다.

결국 CPU레벨이서 에뮬레이션 하는것이 아니라, OS 커널을 수정해서 커널 함수를 호출하면

바로 그것이 호스트 커널로 전달시키도록 만드는 방식이라 오버헤드가 적다.

 

-virt-viewer:가상머신 뷰어

-virt-top:가상머신 상태를확인하기 위한 CUI 프로그램

-libvirtd:가상화 데몬

-virt-manager:가상머신을 생성, 관리하기 위한 GUI 도구

-libvirt:간단한 API를 제공하기 위한 라이브러리

-libvirt-client:사용자 환경에서의 libvirt 라이브러리 및 유틸리티

-virsh:가상머신을 생성, 상태정보 출력, 일시정지 등의 기능을 제공

 

 

네트워크 침해유형

-Dos(Denial of Service)의 약자로 다중 태스킹을 지원하는 운영체제에서 발생할 수 있는 공격 방법으로 구체적으로 한 사용자가 시스템의 리소스를 독점하거나, 모두 사용해 버리거나, 파괴해서 이 시스템이 다른 사용자들에게 올바른 서비스를 제공하지 못하게 만드는 것을 말한다.

 

1)내부에서의 공격

디스크 채우기

메모리 고갈

모든 프로세스 죽이기

프로세스 만들기

 

2)외부에서의 공격

응용 프로그램 수준

Mail Storm(Sendmail) 이 경우는 한 호스트에게 계속 메일을 보내어 그 호스트의 메일 시스템을 마비시키는 것이다.

Java Applet

 

-트로이 목마: 정상적인 기능을 하는 프로그램으로 가장하여 프로그램 내에 숨어서 의도하지 않은 기능을 수행하는 프로그램의 코드 조각이다.

 

-(Worm) 바이러스 백도어: 자기 자신을 컴퓨터 시스템에 해를 끼칠 수 있는 장소에 위치하는 바이러스나 복제코드의 일종이다.

 

-백도어:시스템 설계자나 관리자에 의해 고의로 남겨진 시스템의 보안 허점으로 응용 프로그램이나 운영체제에 삽입된 프로그램 코드이다.

 

 

 

-루트킷(Rootkit)

z2 utmp, wtmp, lastlog로부터 특정 엔트리를 제거한다.

Es - sun4 기반 커널들의 이더넷 스니퍼이다.

Fix 체크섬 값을 가장하는 도구이다.

SI 매직 패스워드를 통하여 관리자로 로그인하는 도구이다.

 

주요 보안 도구

nmap(network mapper)

=>Nmap은 네트워크 탐지 도구 및 보안 스캐너로 시스템의 서비스 중인 포트를 스캔하여 관련된 정보를 출력해 준다. 이 도구를 이용하면 운영 중인 서버에 불필요하게 작동하고 있는 서비스 포트를 확인할 수 있다.

 

tcpdump

Tcpdump는 명령행에서 사용하는 네트워크 트래픽 모니터링 도구로서 특정한 조건식을 설정하여 네트워크 인터페이스를 거치는 패킷들의 헤더 정보를 출력할 수 있다.

 

 

tripwire

=>파일의 변조 여부를 검사하는 도구로서 모든 파일들에 대한 데이터베이스를 만들어 이 정보를 통해 파일들의 변조 여부를 검사하는데 무결성 검사 도구라고도 한다.

 

 

Tripwire는 리눅스 서버에 존재하는 시스템파일들에 대한 변조삭제추가여부를 검사할 수 있는 무결성 점검도구이다.

 

 

/etc/twpol.txt tripwire가 무결성 검사를 할 디렉토리나 파일을 정의하는 파일이다.

 

twadmin create-polfile /etc/tripwire/twpol.txt 데이터베이스 생성

 

tripwire init 데이터베이스 초기화

 

tripwire check 무결성 검사 시작

 

GnuPG

=>공개키(Public Key)와 비밀키(Secret key)를 생성하여 암호화하는 기법인 OpenPGP를 공개 버전으로 구현한 것으로 데이터의 암호화와 디지털 서명 생성 등에 사용된다.

 

John The Ripper

=> Solar Designer가 개발한 유닉스 계열 패스워드 크랙도구로 시작, 현재 유닉스 계열외에 다양한 운영체제를 지원한다.

 

  

1)Ping of Death-Ping을 이용하여 ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 보내는 공격 방법 ICMP Flooding의 일종

2)UDP Flooding-소스 주소가 스푸핑된 시스템에서 UDP 패킷을 공격 대상이 되는 시스템에 대량 전송

3)TCP SYN Flooding-네트워크 서비스들이 동시에 접속하는 사용자 수의 제한이 있다는 점을 악용

4)Teardrop Attack-데이터를 전송하기 위해서는 패킷을 분할하고 시퀀스 넘버를 생성하는데, 이러한 시퀀스 넘버를 조작하거나 중첩시켜서 패킷화된 데이터를 재조할 때 혼란을 일으켜 내부에 과부하를 발생 유사한 공격으로 Boink, Bonk 등이 있다.

5)Land Attack-공격자가 임의로 자신의 IP 주소 및 포트를 대상 서버의 IP 주소 및 포트와 동일하게 하여 서버를 공격 IP 스푸핑을 이용한 공격이다.

6)Smurf Attack-공격자는 Ip 주소를 공격 서버의 IP 주소로 위장하고, ICMP Request 패킷을 브로드캐스트를 통해 다수의 시스템에 전송

 

트로이 목마

 

루트킷:백도어를 설치하는 가장 인기있는 패키지 중의 하나

z2-utmp, wtmp, lastlog로부터 특정 엔트리를 제거한다

Es-sun4 기반 커널들의 이더넷 스니퍼이다

Fix-체크섬 값을 가장하는 도구

Sl-매직 패스워드를 통하여 관리자로 로그인하는 도구

 

버퍼 오버플로 공격:지정된 버퍼보다 더 많은 데이터를 입력해서 프로그램이 비정상적으로 동작하도록 만드는 것 모리스 웜 사건 때 심각성이 부각되었다. 버퍼 오버플로를 이용하여 임의의 명령어를 수행할수 있다.

 

Honeypot-해커의 행동, 공격기법 등을 분석하기 위해 사용하는 보안자원

매사추세츠공대 데이비드 클록이 처음으로 제안한 시스템이다.

컴퓨터 프로그램에 침입한 크래커를 탐지하는 가상 컴퓨터이다.

시스템에 해커가 접근하면 해커의 동작을 모니터링 하여 각종 정보를 취득할 수 있다.

 

 

 

 

GRUB 환경 설정파일

 

#boot=/dev/sda

=>부팅이 되는 하드디스크를 지정하는 항목으로 시스템에 장착된 하드디스크가 하나인 경우에는 주석처리된다.

 

#default=0

=>전원을 켰을 때 기본적으로 부팅되는 운영체제를 설정하는 항목으로 GRUB 메뉴 화면에서 선택하지 않았을 때 이 값을 기준으로 운영체제가 선택된다.

 

#timeout=10

=>GRUB 메뉴 화면에서의 대기 시간으로 단위는 초이다.

 

TMOUT : 모든 사용자에게 일정 시간 동안 작업을 하지 않는 경우 강제적으로 로그아웃되도록 설정함

/etc/profile‘TMOUT= 지정하면 된다.

하드 링크는 하나의 동일한 파일을 디스크의 다른 곳에 배치(복사와 같은 형태)하여 여러 이름으로 사용되는 형식이다. 하드 링크는 파일에만 부여할 수 있는데, 리눅스 초기에는 Sticky-Bit가 설정되지 않는 공유 디렉터리에 사용하였다.

 

[하드 링크의 특징]

ls l 명령으로 I-node 번호를 확인하면 원본과 링크 파일의 번호가 같다.

원본과 링크 파일의 내용과 파일의 크기가 같다.

ls l 명령 시에 출력되는 링크의 숫자가 올라간다.

원본이나 링크 파일 중에 어떠한 파일을 수정해도 같이 반영된다.

원본 파일을 삭제해도 링크 파일은 아무런 영향을 받지 않는다.

하드 링크는 파일만 설정 가능하고, 동일한 파일 시스템에서만 사용 가능하다.

rdist 명령어는 “ remote file distribution" 의 약어로서 Berkeley rsh 프로토콜을 사용하

며 여러 시스템들 사이에서 파일동기화와 파일의 변경여부를 확인하여 데이터동기화를 위한 명령어이다. 여러 대의 시스템 사이에서 지정된 파일의 복사 및 변경여부 등을 확인 한 후에 필요한 업데이트를 수행하면서 데이터동기화에 필요한 파일변경여부를 항상 모니터링 한다.

rdist 는 로컬서버에 있는 파일을 원격서버로 옮길 수 있다.

 

하나의 동일한 파일을 원격지 여러 대의 서버에 사본을 분산시켜 저장한다는 의미이다. rdist 명령어의 정식이름은 원격 파일분산 클라이언트 (remote file distribution client program)" , rdist 라는 프로그램은 여러 개의 다중호스트에 파일이 동일하도록 유지하는 역할을 한다.

 

명령어위치 : /usr/bin/rdist

 

lspci: 시스템의 모든 PCI BUS와 장치에 대한 목록과 각개 하드웨어 설정 정보를 확인할 수 있는 명령어

 

/etc/xinetd.conf

=> 이 설정파일은 모든 xinetd 서비스의 기본값을 설정하는 부분이다.

cps = 50 10 : 접속에 대한 제한을 두게 된다. 50/초 이상 접속시 10초간 서비스를 활성화 시킨다는 설정이다. 이 설정은 너무 많은 접속으로 서버 자원의 고갈을 막기 위한 설정이다.

instaces = 50 : 동일 호스트에서 동시 접속할 수 있는 최대의 수는 10

 

xinetd 속성

access_times

=> 서비스를 활성호 할 시간을 설정한다.

시간:-시간:형태로 설정한다. 시간은 0~23, 분은 0~59 숫자를 사용할 수 있다.

disable

=> 서비스 활성화 여부를 결정한다.

“no”인 경우 서비스 활성화, “yes”인 경우 서비스 비활성화 설정이다.

redirect

=> TCP서비스의 경우 다른 호스트로 리다이렉트 하는 설정이다.

설정 방법은 “IP 주소 PORT”와 같이 설정한다.

 

socket_type => 소켓 타입을 설정한다.

- stream : stream 기반 서비스

dram : datagram 기반 서비스

raw : IP direct access 필요한 서비스

wait => 스레드에 대한 서비스 동작을 정의하는 설정이다.

yes: 단일 스레드 서비스로 이 유형의 접속은 단 하나만 서비스 된다.

no: 정의된 최대 한계에 따라 각각의 새로운 서비스 요청을 실행함

cps

=> 접속 제한 설정이다.

instances

=> 동시에 접속할 수 있는 동일 서비스의 최대의 연결수

 

fuser : 파일이나 파일 구조를 사용하여 프로세스를 식별하고 통제한다.

[사용법]

fuser [옵션] 이름

-k: 파일 이름으로 접근된 프로세스를 죽인다.

-m: 파일시스템이나 블록 디바이스를 사용하고 있는 모든 프로세스를 출력한다.

-v: 상세한 정보를 출력한다.

-u: 사용자 ID를 출력한다.

문제유형

기출정보

해결방안

구분

유형상세

유형

설명

파일

시스템

umount

umount /dev/sdc1

umount: /:device is busy

filesystem에 사용자 Process에서 사용중이어서 umount가 안됨

man fuser

man fsck

man mount

fuser

fuser mk /backup

/backup filesystem을 사용하는 user(process)를 종료시킴

umount

umount /backup

/backup umount

fsck

fsck N ext4

/dev/sdb1

검사할 파티션이 ext4이며, 실제 검사를 실행하지 않고 수행될 내용을

출력

 

mount

mount o nosuid

/dev/sdb1 /home

SetUID/SetGID 비트가 동작하지 않도록 마운트 원천 봉쇄

 

mount

mount o ro, loop

linux-server-x86_64-

dvd.iso /media/

iso 파일을 /media에 마운트

 

tune2fs

tune2fs j /dev/sda6

파일시스템 ext2 => ext3

변경 데이터 보존

 

filesystem

생성

fdisk /dev/sdc

새로운 디스크의 블록 디바이스는

/dev/sdc

 

mkfs.ext4 /dev/sdc1,

mkfs t /dev/sdc1

첫 번째 파티션만 ext4로 분할한다

 

mkdir /backup

디렉토리 생성 /backup

 

mount /dev/sdc1 /backup

마운트하기 /backup

 

fdisk -l

파티션 테이블 확인 명령

83 Linux, 8e LVM, 83 Swap

 

mount t iso9600

-o ro,loop **.iso /mnt

**.iso CD-ROM 파일시스템 이미지

파일 읽기 전용 마운트

 

mkfs.xfs /dev/sdc1,

mkfs t xfs /dev/sdc1

새로운 하드디스크를 설치하고 xfs로 파일시스템을 생성한 후 /mnt/extra로 마운트 하는 과정

 

mkdir /mnt/extra

 

mount t xfs /dev/sdc1

/mnt/extra

 

fstab

/etc/fstab

새로운 디스크의 파티션 구조나

마운트 정보를 변경할 때 수정하는 파일

 

fstab

/dev/sdb1 /backup ext3

defaults 1 2

/etc/fstab 파일에 디스크 마운트

 

fstab

fsck.vfat /dev/sdc1

vfat 파일시스템인 /dev/sdc1

파일시스템 점검

 

LVM

#fdisk /dev/sda

command : t

partition number : 5

Hex code : 8e

파티션 number 5번은 이미 생성되어 있음, 생성된 파티션을 LVM 시스템 ID로 변경

 

LVM

- pvcreate /dev/sdb1 /dev/sdb2

vgcreate ihd_vg /dev/sdb1 /dev/sdb2

lvcreate L 20G ihd_vg n data

/dev/sdb110G, /dev/sdb210를 이용하여 20G/data 디렉토리 생성

 

문제유형

기출정보

해결방안

구분

유형상세

유형

설명

장치

관련

프린트 관련

printcap

프린트 필터, 프린터 스풀,

디렉터리 등을 포함하는 환경설정 파일

 

프린트 관련

lpq, lpstat, lpc

프린터 큐의 상태를 모니터링

 

lprm, cancel, lpc

피린터 큐의 상태를 모니터링

 

lspci

lspci

현재 시스템에 물리적으로 장착된

PCI 장치들에 대한 정보

 

문제유형

기출정보

해결방안

구분

유형상세

유형

설명

파일

시스템

logrotate

/var/log/messages {

weekly

create 0600 root root

rotate 5

}

 

-messges 파일의 순환주기를 일주일로 한다.

-실행권한을 0600으로 하며,

root 소유권을 가지고 root 그룹에

소속된다.

 

 

보안로그

secure

시스템 접속에 관한 보안 로그파일

-시스템의 불법 침입의 의심이

될 때 확인

 

이벤트 로그

messges

시스템에 관련된 중요한 이벤트들이

모두 기록

 

syslogd

*warn 또는 *warning

/var/log/warn.log

모든 메시지 종류 중 warning 이상의 레벨 메시지를 /var/log/warm.log 파일에 기록함

 

/etc/syslogd.conf

또는

/etc/rsyslogd.conf

모든 메시지 종류 중 warnning 이상의 레벨 메시지를 /var/log/warn.log 파일에 기록함

 

*.notice @RLogserver

시스템 로그를 원격지 서버에 넘기기

 

/var/log/messages

syslogd 데몬의 의해 기록되는

메시지 로그

 

klogd

/var/log/dmesg

klog 데몬에 의해 기록되는 중요한

커널의 이벤트

 

logrotate

/usr/sbin/logrotate

로그 파일을 일정기간 rotate 해주는 로그관리 프로그램

 

/etc/logrotate.conf

로그 관리 프로그램의 환경 설정

파일

 

access_log

/tail f

/usr/local/apache

/logs/access_log

access_log 실시간 모니터링

 

보안 로그

/var/log/secure

보안 로그-관련 데몬 xinetd

 

부팅 로그

/var/log/boot.log

부팅 로그

 

보안 로그

/var/log/dmesg

부팅시의 메시지를 확인할 때에는

대부분 이 파일을 살펴 본다

 

부팅 로그

/bin/dmesg

dmesg 파일의 내용을 확인하는

명령어

 

문제유형

기출정보

해결방안

구분

유형상세

유형

설명

접근통제

TCP_Wrapper

cat /etc/hosts.deny

파일 명은 절대 경로로 작성

 

 

in.telnet : ALL

텔넷 서비스를 192.168.3.0

네트워크 사용자만 허가한다.

텔넷 서버 이름은 in.telnetd이다

 

cat /etc/hosts.allow

 

in.telnetd:192.168.3.0/255.255.255.0

 

 

/etc/hosts.deny

모든 서비스에 대한

모든 클라이언트 접속 차단

 

ALL;ALL

 

/etc/hosts.allow

 

 

in.telnetd:192.168.1.10

telnet 서비스는 192.168.1.10

호스트 허용

 

vsftpd:192.168.1.20

vsftd 서비스는 192.168.1.20

호스트 허용

 

sendmail:AA EXCEPT hacker.co.kr

sendmail 서비스는

hacker.co.kr 도메인을 제외한

모든 시스템 접근 허용

 

ALL:localhost

로컬호스트(localhost)는 모든

서비스에 대한 접근을 허용

 

 

/etc/host.allow

 

 

ALL:ihd.or.kr EXEPT

gaya.ihd.or.ke

gaya.ihd.or.kr이라는 시스템을 제외하고 ihd.or.kr 도메인 안에 있는 모든 시스템들이 모든 서비스를 사용할 수 있도록 설정

 

sshd:143.248.21.25

143.248.21.25 시스ᅟᅦᆷ에서 요청하는 ssh 서비스를 제공

 

ALL:143.248.10.23,

143.248.30.33

143.248.10.23, 143.248.30.33에서

요청하는 모든 서비스를 제공

 

 

 

  

 

문제유형

기출정보

해결방안

구분

유형상세

유형

설명

백업

rsync

rsync delete a v /home 192.168.

10.100:/backup

로컬디렉토리 /home, 원격지서버 192.168.10.100, 디렉토리/backup,

원본파일 삭제되었을 시 백업파일도 삭제 delete 퍼미션, 링크, 날짜 등의 모든 정보동일하게 유지 a 백업 진행사항을 자세히 출력

 

 

 

in.telnet : ALL

 

 

 

 

cat /etc/hosts.allow

 

 

 

 

in.telnetd:192.168.3.0/255.255.255.0