출처: 북스 홀릭
내용만 참조하시고, 기출 문제와 교재에 예상 문제를 꼭 풀어보세여
명령어
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 | 가장 최근에 패스워드를 바꾼 날로 1970년 1월 1일부터 계산한 날수이다. 15917은 2013년 7월 31일에 해당한다. |
0 | 패스워드를 바꾼 후 최소로 사용해야 되는 날짜수로 다른 패스워드로 변경하기까지의 유예기간이다. 0이면 언제라도 패스워드를 변경할 수 있다. |
99999 | 현재 사용중인 패스워드의 최대 사용 가능한 기간, 즉 현재 패스워드 유효기간이다. 99999이면 패스워드를 변경하지 않고 계속 사용 가능하다는 것을 의미한다. |
7 | 패스워드 사용기한이 만료되기 전에 사용자에게 바꿀 것을 경고하는 기간이다. |
3 | 패스워드 사용기한이 만료된 뒤에 실제 계정 사용이 불가능하기까지 기간으로 일종의 유예기간이다. |
16070 | 계정 만기일로 계정 사용 불가능하게 된 날 또는 불가능하게 되는 날 |
공백(9번째 필드) | 다른 기능을 사용하기 위해 예약된 공간으로 아직 사용하지 않고 있다. |
관련 명령어: pwconv, pwunconv
/etc/passwd에서 관리하려면 pwconv라고 입력하면 되고, 다시 /etc/shadow에서 관리하려면 pwconv라고 입력하면 된다.
(3) /etc/default/useradd
=>별도의 옵션없이 ‘useradd 사용자명’으로 계정 생성 시에 기본적으로 적용되는 설정이 들어있는 파일이다.
필드 | 설명 |
GROUP=100 | 사용자 생성 시에 기본적으로 속하게 되는 그룹을 지정한 부분으로 GID가 100인 user라는 그룹에 속하게 된다. |
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/shadow의 3번째 필드에 해당하는 값인 최근 패스워드를 바꾼 날(1970년 1월 1일부터 계산한 날짜 수)을 수정한다. |
-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/gshadow에 3번째 필드에 기록된다.
------------------------------------------------------------------------------------------
※사용자 패스워드 관리
※소유권과 허가권
-소유권:어떠한 파일이나 디렉터리를 소유하여 지매하는 권리를 말함
-허가권:파일이나 디렉터리에 접근 권한을 설정하는 권리
소유권:사용자 소유권과 그룹 소유권
허가권:사용자(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로 설정한다. 0과 7은 일요일에 해당하고, 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 명령 실행 후 옵션
1 : cpu 갯수별 사용량 보기 ( multi core )
shift + m : 메모리 사용량이 큰 순서로 정렬
shift + p : CPU 사용량이 큰 순서로 정렬
shift + t : 실행시간이 큰 순서로 정렬
k : 프로세스 kill, k 입력후 종료할 pid 입력, kill signal인 9 를 입력.
c : 명령인자 표시/비표시
spacebar : refresh
u : 입력한 유저의 프로세스만 표시
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)
-yum은 rpm 기반의 시스템에서 패키지를 손쉽게 설치해 주고 자동으로 업데이트를 수행하는 명령행 기반의 유틸리티이다. 특히, 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)
gcc는 GNU 프로젝트에 의해 만들어진 일종의 컴파일러 모음이다.
[사용법]
$ 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: 리눅스 커널에 모듈을 적재하거나 제가하는 명령이다. insmod나 rmmod 명령은
다른 모듈 에 의존되어 있는 경우에는 사용 불가하나 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 시스템이 발생한 메시지 | |
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)에 비해 처리속도도 빠르고 다음과 같은 기능을 제공한다.
①링크된 파일이나 디바이스 파일도 복사하고, 그룹을 포함한 소유권 및 허가권도 유지하여 복사할 수 있다.
②ssh나 rsh을 이용하여 전송 가능하고 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 Wrapper는 tcpd라는 데몬이 슈퍼데몬인 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과 ':'은 공백이 있어야 한다. |
◆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, seqpacket의 4가지 항목이 있다.
③ 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/htdocs에 index.html 파일을 간단히 생성한다.
3) 웹 데몬 시작하기
apachectl 명령으로 웹 데몬을 시작한다.
# /usr/local/apache/bin/apachectl start
●Apache 웹 접근 통제
아파치 웹 서버의 기본적인 설정은 모든 클라이언트의 접근이 허락되어 있다. 그러나 접근 통제가 필요한 경우에는 클라이언트의 IP 주소나 도메인에 대해 Order, Allow, Deny 지시자를 이용해서 제어할 수 있다. Order는 Allow 및 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의 확장 사용하기
iptables는 –p옵션 뒤에 프로토콜을 지정한 뒤에 추가적으로 사용할 수 있는 옵션이 제공된다.
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에서 NAT는 SNAT(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.3의 80번 포트인 경우에 192.168.1.11의 80번 포트로 연결한다.
오후 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번과 8번 request /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 Wrapper는 tcpd라는 데몬이 슈퍼데몬인 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
어떠한 형태로 로그를 저장할 것인지를 지정하는데, SYSLOG와 FILE 두 가지 설정이 가능하다. SYSLOG는 syslog에 로그를 위임하는 것이고, 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
=> 캐시 정보가 저장될 경로를 지정해 주는 항목으로 ufs는 squid의 저장 포맷이고, /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
=>restrict는 NTP 서버에 접근할 클라이언트를 제한할 때 지정한다.
server time.kriss.re.kr
server time.bora.net
=> 기준이 되는 NTP 서버를 지정하는 항목이다.
FTP 관리
FTP는 TCP/IP 프로토콜 기반으로 서버와 클라이언트 사이에 파일을 주고 받기 위한 프로토콜이다.
vsftpd는 간결하고 안전하며 처리 속도도 매우 빠른 프로그램으로 리눅스 및 유닉스 계열에서 사용할 수 있다.
주요 파일 | 설명 |
/etc/vsftpd.conf | vsftpd의 서버의 환경 설정 파일이다. |
/etc/rc.d/init.d/vsftpd | vsftpd 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자값을 사용해서 제어한다. |
/etc/pam.d/vsftpd | vsftpd의 PAM 관련 설정 파일이다. |
/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 데몬 스크립트를 이용해서 제어한다. sendmail은 sendmail.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주소로 지정해도 되지만 가능하면 도메인명으로 지정하는 것이 좋다. (주의) 도메인으로 지정할 경우 다음과 같이 꼭 “.”으로 끝나야 한다.
MX 다음의 숫자는 메일처리의 우선순위를 명시한 것이다. 메일은 숫자가 가장 적은 도메인 주소로 메일을 보내게 된다.
●CNAME 레코드 : “Canonical NAME의 약어로서 IP가 아닌 특정 도메인으로 설정하기 위해 사용한다.
위의 예에서 첫 번째 행은 A 레코드에 대한 것으로 sulinux.net의 IP주소가 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.conf와 smbpasswd, 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로 설정한다.
접근 가능한 사용자는 phpman과 webgirl만 설정한다.
파일 생성 및 삭제 권한은 phpman만 가능하도록 설정한다.
NFS 서버 관리
∙NFS(Network File System)의 개요
-NFS는 1984년 Sun Microsystems사에서 개발한 프로토콜로 TCP/IP 네트워크상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉터리인 것처럼 사용할수 있게 해준다. NFS는 NIS와 더불어 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, 경량 디렉터리 접근 규약)
-LDAP는 IP프로토콜 기반으로 사용자, 시스템, 네트워크, 서비스 정보 등의 디렉터리 정보를 공유할 수 있다.
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를 이용하기 위해서는 서버 및 클라이언트에서 공통적으로 해야 할 작업이 있다. 먼저 NIS는 RPC(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를 이용할 수 있다. 가상머신에서 패스워드 분실시 크랙이 가능하다
-단점:전가상화를 실현하기 위하여 CPU의 VT를 이용하므로 퍼포먼스의 저하가 발생한다는 단점이 있다.
반가상화(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/sdb1에 10G, /dev/sdb2에 10를 이용하여 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'IT 관련정보 > 리눅스' 카테고리의 다른 글
리눅스 기본이론(14) -APM(Apache, PHP, MariaDB) 설치 (0) | 2017.04.19 |
---|---|
리눅스 기본 이론(13) - RAID 구축하기 (0) | 2017.04.19 |
리눅스 기본 이론(12) - NFS (0) | 2017.04.19 |
리눅스 기본 이론(11) - SAMBA, DHCP (0) | 2017.04.19 |
리눅스 기본 이론(10) - 네트워크 설정, 네트워크 진단 명령어, 서버 포트와 방화벽 (0) | 2017.04.19 |