리눅스마스터 1급 필기 기출문제 해설/보충설명 1702 20170909 (3)

과목 (61~100)

바로가기 >> 리눅스마스터 기출문제 목록

 

 

HTTP 상태코드

200 OK

400 Bad Request

403 Forbidden

404 Not Found

500 server error

 

Apache HTTP Server 설치하기
1) 웹 데몬 정지 : 기존에 HTTP 서버를 운영 중이라면 해당 데몬을 중지시킨다.
# kill httpd

2) 이전 버전의 httpd 검색 및 삭제
# rpm -e httpd nodeps

3) 소스파일의 앞축을 푼다.

4) 압축이 풀린 후 생성된 디렉터리로 이동한다.

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

6) 컴파일을 한다.
# make

컴파일한 것을 설치한다.
# make install

 

 

httpd-userdir.conf
사용자들이 개인 홈페이지를 이용하려고 할 때 사용하는 파일

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

httpd-vhosts.conf
IP 주소 하나에 여러 도메인을 사용하는 버추얼 호스트 설정할 때 사용하는 파일

httpd-mpm.conf
MPM(Multi-Processing Modules) 관련 설정할 때 사용하는 파일

스크립트 파일을 이용한 Apache 웹 서버 실행
apachectl 이라는 데몬 실행 제어 스크립트를 이용하여 실행 및 제어를 할 수 있다.

사용법
# apachectl command

[command]
help : 간단한 도움말 출력
start : 아파치 데몬 시작
stop : 아파치 데몬 중지
restart : 아파치 데몬 재시작
configtest : httpd.conf 파일의 문법적 오류를 검사
graceful : 웹 서버에 연결된 접속을 끊지 않고, httpd.conf 의 설정만을 다시 읽어들인다.
status, fullstatus : 웹 서버의 상태를 간단히 또는 전체적으로 출력한다.

 

LDAP(Lightweight Directory Access Protocol)의 개요
LDAP(Lightweight Directory Access Protocol, 경량 디렉터리 접근 규약)는 X.500 Directory Access Protocol(DPA) 기반으로 만들어진 디렉터리 데이터베이스에 접속하기 위한 통신 규약이다. DPA 는 OSI 프로토콜 스택에서 작동되고, 컴퓨터 자원을 많이 사용하는 단점이 있어서 이러한 문제점을 보완하기 위해 등장하였다. LDAP 는 IP 프로토콜을 기반으로 사용자, 시스템, 네트워크, 서비스 정보 등의 디렉터리 정보를 공유할 수 있다. 디렉터리는 논리, 계급 등을 기준으로 조직화되어 있고 비슷한 특성을 가진 객체들의 모임이다. 가장 일반적인 예로 전화번호부(Telephone Directory)가 있는데 가나다순으로 일련의 이름을 가지고 있고, 이름마다 전호번호와 주소가 포함되어 있다.
LDAP 은 일반적으로 RDBMS 에 비해서 검색 속도가 빨라서 읽기 위주의 검색 서비스에서 상당히 좋은 성능을 발휘한다. 예를 들면 사용자 로그인 처리, 전화번호 조회, 도서 정보 조회 등에 매우 유용하다. 그러나 자주 변경되는 정보인 경우에는 RDBMS 를 사용하는 것이 좋다.
LDAP 은 이름주소와 같이 하나 이상의 속성(Attributes)을 가진 객체(Object)로 구성되고, 그 객체를 엔트리(Entry)라고 부르는데 RDBMS 의 레코드라고 이해하면 된다. 또한 각각의 엔트리는 DTI(Directory Information Tree) 라 부르는 트리 구조에 의해 조직화되고, 이 조직내에서 고유한 식별자인 NC 을 사용하고, DN(Distinguished Name) 은 상대 고유 이름으로 구성된다. DN 은 파일 시스템 절대 경로처럼 해당 엔트리의 이름에 상위 엔트리 이름을 붙여서 식별하고, RDN(Relative Distinguished Name) 은 상대 경로처럼 상대 DN 을 의미한다.

 

66번 문제해설 참조

 

ypserv 패키지를 설치하면 NIS 서버 운영에 필요한 3개의 데몬 스크립트가 /etc/rc.d/init.d 에 설치된다.

NIS 서버 데몬 스크립트
ypserv : NIS 서버를 운영하는 주 데몬 스크립트이다.
yppasswdd : NIS 클라이언트에서 패스워드 시에 적용되도록 해주는 데몬 스크립트이다.
ypxfrd : NIS 서버와 NIS 클라이언트 간의 맵핑 속도를 높여주는 데몬 스크립트이다.

 

NIS 관련 명령어
nisdomainname
NIS 도메인명을 보여주거나 설정하는 명령이다.

ypwhich
NIS 클라이언트에서 사용하는 명령어로 NIS 서버명고 관련 맵 파일을 보여준다.

ypcat
NIS 클라이언트에서 사용하는 명령어로 NIS 서버의 데이터베이스라고 할 수 있는 맵 파일의 내용을 확인하는 명령이다.

yptest
NIS 클라이언트에서 관련 설정을 테스트하는 명령이다.

yppasswd
NIS 클라이언트에서 NIS 서버에 등록된 사용자의 패스워드를 변경하는 명령이다 물론 패스워드를 변경하려면 NIS 서버의 root 패스워드도 알아야 한다.

ypchsh
NIS 클라이언트에서 NIS 서버에 등록된 사용자으 셸을 변경하는 명령이다.

ypchfn
NIS 클라이언트에서 NIS 서버에 등록된 사용자의 정보를 변경하는 명령이다.

 

NIS 를 이용한 인증이 가능한 서비스
NIS 로 telnet, samba, ssh 등의 서비스에서 사용자 인증이 가능하다.

smb.conf
삼바 서버의 환경 설정 파일인 smb.conf 는 삼바 서버를 제어하고, 공유시킬 시스템 자원에 대한 다양한 설정을 한다. 이 파일은 /etc/samba 디렉터리 안에 존재하고, 파일 안의 구성은 윈도의 환경 설정 파일 win.ini 와 비슷하다. smb.conf 파일은 크게 ‘Global Setting’ 영역과 ‘Share Definitions’ 영역으로 나눌 수 있고, 각 항목의 설정은 [] 기호를 이용해서 섹션(Section)으로 구분한다.

Share Definitions 의 주요 옵션
comment : 간단한 설명을 설정한다.
path : 공유 디렉터리의 경로를 설정한다.
read only : 공유 디렉터리를 읽기 전용으로 설정한다.
writable, write ok : 공유 디렉터리를 쓰기 가능하게 설정한다.
vaild users : 공유 디렉터리를 이용할 수 있는 사용자를 지정한다.
write list : 공유 디렉터리에 접근 및 쓰기 권한을 행사할 수 있는 사용자를 지정한다. 그룹인 경우에는 그룹명 앞에 @를 붙이면 된다.
qublic, guest ok : 다른 사용자들이 이용할 수 있도록 설정할 때 사용한다.
browseable, browsable : 공유 디렉터리의 리스트를 보여줄 때 설정한다.
printable : 공유 디렉터리에 스풀 파일을 지정한다.
create mask, create mode : 파일을 생성할 때 허가권을 지정할 때 설정한다.

 

삼바 관련 명령어
smbclient
리눅스 및 유닉스에서 사용하는 삼바 클라이언트 명령으로 윈도 서버로 접근할 때 사용된다.

smbstatus
삼바 서버에 사용하는 명령어로 클라이언트와 연결된 상태를 출력한다.

testparm
삼바의 환경 설정 파일인 smb.conf 의 설정 여부를 확인한다.

nmblookup
WINS 서버에 질의할 때 사용하는 명령으로 DNS 서버에 질의하는 nslookup 명령과 유사하다.

monunt.cifs
CIFS 기반의 마운트 명령으로 보통 윈도우에 공유된 디렉터리를 마운트할 때 사용한다.

smbpasswd
삼바 사용자를 생성 및 삭제, 패스워드 변경, 활성 및 비활성화 등 관련 정보를 변경하는 명령이다.

pdbedit
삼바 사용자의 데이터베이스 파일인 SAM database 를 관리해 주는 명령이다.

 

 

root_squash : NFS 클라이언트에서 접근하는 root 사용자를 무시하고 서버상의 nobody(또는 nfsnobody)로 매핑시키는 옵션으로 기본값이다. 일반 사용자의 권한은 그대로 인정된다.

no_root_squash : NFS 클라이언트에서 접근하는 root 사용자를 무시하지 않고, root 로 인정한다.

rpcinfo
rpc 관련 정보를 출력해 주는 명령이다.

exportfs
NFS 서버에 익스포트(export)된 디렉터리 정보를 관리해 주는 명령이다.

showmount
NFS 서버의 마운트 관련 정보를 출력하는 명령이다. NFS 클라이언트에서 NFS 서버에 익스포트된 정보를 확인할 때도 사용한다.

nfsstat
NFS 관련 상태 정보를 출력하는 명령으로 NFS 서버와 클라이언트에서 모두 사용할 수 있다.

anonymous_enable=YES
익명 계정의 허가 유무를 지정한다. 기본 설정은 사용 가능

 

MTA(Mail Transfer Agent)
이메일을 SMTP 프로토콜을 이용해 다른 메일 서버로 전달하는 프로그램을 말하는데 보통 메일 서버 프로그램을 지칭한다. 대표적인 프로그램에는 sendmail, gmail, postfix, Ms Exchange Server 등이 있다.

MUA(Mail User Agent)
사용자가 메일을 읽고 보낼때 사용하는 프로그램을 의미한다. 대표적인 프로그램으로 kmail, evolution, mutt, MS의 Outlook 등이 해당된다.

MDA(Mail Delivery Agent)
MDA는 일종의 대리인 역할을 수행하는 프로그램으로 메일박스에 도착한 메일을 대행해서 가져오거나 전달하는 역할을 수행한다. 대표적인 프로그램으로는 procmail이 있는데, 스팸메일 필터링이나 메일 정렬 등의 역할을 한다.

 

 

 

 

/etc/aliases
특정 계정으로 들어오는 메일을 다른 계정으로 전성되도록 설정하는 파일이다. 보통 동일한 계정으로 들어오는 메일을 여러 사용자에게 전달하는 메일링 리스트가 필요한 경우에 유용하다. 예를 들면, 고객센터의 이메일 계정이 webmaster 인 경우에 해당 계정으로 들어오는 메일을 고객지원센터에 근무하는 다수의 사용자에게 전달할 수 있다. 센드메일이 참고하는 파일은 /etc/aliases.db 이므로 변경 시에는 ‘newaliases’ 나 ‘sendmail -bi’ 명령을 실행시켜야 적용된다.

 

/etc/mail/sendmail.mc
sendmail 의 매크로 설정 파일로 sendmail.cf 파일이 삭제되었거나 복원할 경우에 m4 라는 매크로 프로세서를 이용하여 새롭게 생성할 수 있다. 참고로 sendmail.cf 파일을 복원하려면 sendmail-cf 패키지를 설치해야 한다.

[사용 예]
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

/etc/named.conf 파일의 구성과 특징
1) 파일의 구성은 크게 주석문과 구문으로 구성되어 있다.
2) 주석은 C 에서 사용하는 /* */, C++ 에서 사용하는 //, 유닉스 계열에서 사용하는 # 등 모두 사용 가능하다.
3) 구문에는 options, logging, controls, zone, acl, view, key, masters, server 등이 존재한다.
4) 각 구문은 중괄호 {} 로 둘러싸고 끝날 때는 세미콜론 ; 을 사용한다.
5) include 지시자를 선언하여 별도의 파일에 추가 정의할 수 있다.

 

81번 문제해설 참조

 

 

PTR : 리버스 존에서만 사용하는 레코드로 IP주소를 도메인으로 변환하기 위해 지정한다.

DNS 관련 유틸리티
(1) named-checkconf
DNS 서버의 환경 설정 파일인 /etc/named.conf 파일의 문법적 오류를 찾아주는 명령이다.

사용법
# named-checkconf [파일명]

(2) named-checkzone
zone 파일의 문법적 오류를 찾아주는 명령이다.

사용법
# named-checkzone 도메인명 zone_파일경로

사용예
# named-checkzone linux.or.kr /var/named/linux.zone

 

acl 구문
ACL(Access Control List) 의 약자로 여러 호스트를 하나의 명칭으로 지정할 때 사용한다.

 

버추얼박스(VirtualBox)
버추얼박스는 인텔의 하드웨어 가상화인 VT-x 와 AMD 의 AMD-V 를 기반으로 전가상화를 지원한다. 버추얼박스는 게스트 운영체제의 하드디스크를 VDI(Virtual Disk Image : 가상 디스크 이미지) 파일로 불리는 특별한 컨테이너 포멧으로 에뮬레이트된다.

 

 

KVM
KVM은 Qumranet 에서 개발한 하이퍼바이저로 x86시스템 기반으로 CPU 전가상화 방식을 사용한다. KVM은 CPU 가상화 기술인 인텔의 VT 및 AMD-V 를 기반으로 동작하는 공개형 기술로서 리눅스 커널 2.6.20부터 포함되었다. KVM은 QEMU 라는 CPU 에뮬레이터를 사용하고, 수정되지 않은 리눅스나 윈도우의 이미지를 생성하여 다중의 가상 머신을 운영한다. 각각의 가상머신은 개별적인 하드웨어를 가지고 동작한다. KVM 은 CPU 반가상화 기술은 지원하지 않으나 이더넷 카드, Disk I/O, VGA 그래픽 인터페이스 등은 반가상화를 지원한다.

Xen
CPU 전가상화 뿐만 아니라 CPU 반가상화도 지원하는 가상화 기술
다양한 CPU를 지원하는 하이퍼바이저 기반의 가상화 기술이다.
커널이 수정된 게스트 운영체제를 통해 물리적 서버 대비하여 최대 98%의 성능을 나타내는 CPU반가상화를 비롯하여 수정되지 않은 윈도우 및 기타 운영체제를 그대로 게스트 시스템에 실행할 수 있도록 전가상화 도 자원한다. Xen의 전가상화(HVM)는 QEMU 기반으로 동작한다. 단점은 CPU 에뮬레이터가 아닌 전통적인 하이퍼바이저 방식이기 때문에 호스트와 다른 아키텍처의 게스트는 실행할 수 없다.

RHEV(Red Hat Enterprise Virtualization)
KVM 기반의 하이퍼바이저 오픈소스 서버 가상화 솔루션으로 SPICE 프로토콜과 VDSM 을 사용하여 관리하는 솔루션이다

 

다양한 하이퍼바이저들을 통합 관라히기 위한 플랫폼이 제3세대 서버 가상화 기술에 해당한다. 제2세대 서버 가상화 기술들은 각각의 하이퍼바이저끼리만 호환이 될 뿐, 다른 하이퍼바이저들과의 연동을 지원하지 않는다. 각각의 하이퍼바이저들 위에 운영되는 가상 머신을 관리하기 위해 등장한 것이 Openstack, Cloudstack, Eucalytus, OpenNebula 등이다.

 

게스트 운영체제 시작 및 종료
(1) 가상 머신 관리자를 이용
가상 머신 관라지(virt-manager)를 이용하면 게스트 운영체제를 손쉽게 시작 및 종료할 수 있다. 시작 및 종료 버튼을 이용하거나 메뉴를 이용해서 리부팅, 종료, 강제종료, 저장 등을 지원한다. 또한 가상 머신의 CPU 사용량, 호스트 CPU 사용량 등을 모니터링 할 수 있다.

(2) virsh 명령
virsh 명령은 가상 머신을 관리해 주는 도구로서 생성, 상태 정보 출력, 일시정지, 종료 등의 기능을 제공한다.

(3) xm 명령
Xen 을 사용하는 경우에는 xend 명령 실행 후에 xm 명령을 이용하여 실행 상태를 확인할 수 있다.

 

cps
초당 요청받은 수에 대한 제한을 설정하는 항목이다.

사용 예
cps = 50 10
초당 요청 수가 50개 이상일 경우 10초 동안 접속 연결을 중단한다.

cache_dir ufs /var/spool/squid 100 16 258
캐시 정보가 저장될 경로를 지정해 주는 항목으로 ufs 는 squid 의 저장 포맷이고, /var/spool/squid 가 관련 디렉터리이다. 100 은 저장되는 캐시 정보의 크기를 나타내는데 단위는 MB 이다. 16 은 캐시가 저장되는 첫 번째 하위 디렉터리의 개수이고, 256 은 두 번째 하위 디렉터리의 개수이다.

 

DHCP(Dynamic Host Configuration Protocel) 서버
DHCP 서버란 클라이언트에게 자동으로 IP 주소, Gateway 주소, Name Server 주소 등을 할당 해주는 서버를 말한다.

/etc/dhcpd.conf : DHCP 서버의 환경 설정 파일

/etc/dhcpd.conf 의 주요 설정
클라이언트에게 할당한 주소 대역은 subnet 및 netmask 선언 후에 {} 안에 필요한 항목들을 저장하면 된다. 주요 항목을 별도로 적으면 모든 네트워크 대역에 적용된다. 특정 호스트에 고정적인 IP 주소를 할당하려면 ‘host 호스트명 { }’ 형태로 선언하면 된다.

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.254;
option domain-name “posein.org”;
option domain-name-servers ns1.posein.org;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}

항목 설명
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 주소를 가지고 있을 수 있는 최대 시간으로 단위는 초이다.

VNC(Virtual Network Computing)
VNC(Virtual Network Computing)는 RFB(Remote Frame Buffer) 프로토콜을 이용하여 원격의 다른 컴퓨터에서 그래픽 환경 기반으로 데스크톱을 공유할 수 있는 시스템이다. 키보드 및 마우스가 발생한 이벤트를 다른 컴퓨터로 전송시켜서 그래픽 화면을 갱신하는 방식으로 제공된다.

VNC 서버 설정
VNC 서버를 설정하는 방법에는 세션 공유 접속과 독립 세션 접속이 있다. 세션 공유 접속은 로컬 시스템과 원격지간의 화면, 키보드, 마우스를 공유하는 것이고, 독립 세션 접속은 말 그대로 로컬의 이용과 별도로 접속하여 사용하는 것이다.

독립 세션 접속을 하기 위해서는 환경 설정 파일인 /etc/sysconfig/vncservers 를 편집해야 한다.

# vi /etc/sysconfig/vncservers
VNCSERVERS=”2:root”
VNCSERVERAGRS[2]=”-geometry 1024×798″
VNCSERVERS 의 1은 디스플레이 번호를 뜻하고, 콜론(:)뒤에는 접속하는 계정의 아이디를 입력한다. VNCSERVERAGRS 는 추가 옵션을 설정하는 곳으로 -geometry 해상도를 설정하는 항목이다.

 

NTP(Network Time Protocol)
NTP 는 컴퓨터간의 시간을 동기화하는데 사용되는 프로토콜이다.

관련 명령어
(1) ntpq

NTP 질의 응답 명령어이다.
사용법
# ntpq [option]
주요 옵션
-p : 연결된 서버(peers)의 상태를 출력해 준다.

(2) ntpdate
NTP 서버를 이용해서 시간을 동기화할 때 사용하는 명령어이다.
사용법
# ntpdate NTP 서버

 

creat() : 디스크 자원 고갈
malloc() : 메모리 자원 고갈
fork() : 프로세스 자원고갈

 

DDoS(Distributed Denial of Service) 공격
여러 대의 공격자를 분산 배치하여 동시에 DoS 공격을 함으로서 공격 대상이 되는 시스템이 정상적인 서비스를 할 수 없도록 방해하는 공격이다.

DDoS 도구
Trinoo : 다수의 호스트로부터 통합된 UDP Flooding 공격을 시행한다.
TFN : Trinoo 와 거의 유사한 공격 도구로 UDP Flooding 뿐만 아니라, TCP SYN Flooding, ICMP 브로드캐스트 공격도 가능하다. 그러나 공격자 시스템과 마스터 시스템 간 연결이 암호문이 아닌 평문으로 되어 있어서 공격자가 노출될 가능성이 높다.
TFN 2K : TEN 의 발전된 형태로 통신에 특정 포트를 사용하지 않고, 암호화를 사용한다. 프로그램에 의해 UDP, TCP, ICMP 가 복합적으로 사용되고, 포트도 임의로 결정한다. UDP Flooding, TCP SYN Flooding, ICMP Flooding, Smurf 공격을 사용한다.
Stacheldraht : 독일어로 철조망이라는 뜻으로 Trinoo, TEN 을 참고하여 만들어졌다. TFN 2 처럼 통신할 때 암호화 기능이 추가되었고, 접속한 시도가 사용자가 올바른 공격자인지 확인하기 위해 패스워드 입력을 요구한다. 미스터와 에이전트들이 자동으로 갱신되는 특징이 있다. UDP Follding, TCP SYN Flooding, ICMP Flooding, Smurf 공격을 사용한다.

 

VPN(Virtual Private Network)
가상 사설망. 인터넷 회선을 암호화된 규격을 통해 마치 개인 전용선같이 끌어쓰는 게 가상 사설망의 핵심
사용자가 늘어나거나 장소가 바뀌어도 유연하게 통신망을 사용할 수 있어 자료 공유가 용이하다.

가상사설망(VPN)의 기반 기술
터널링(Tunneling) 기술 : 특정 사용자들 간에 전용망처럼 사용할 수 있게 하는 것

침입탐지 시스템(IDS)
서버나 네트워크에 대한 공격을 실시간으로 탐지하는 시스템

침입방지 시스템(IPS)
네트워크에서 공격 서명을 찾아내어 자동으로 모종의 조치를 취함으로써 비정상적인 트래픽을 중단시키는 보안 시스템

ESM(Enterprise Security Management : 통합보안관리시스템)
조직차원의 일관된 정책에 따라 보안 관제 및 운영·관리 업무를 통합 수행하여 보안성과 보안관리의 효율성을 향상시키기 위한 것으로써, 주로 원격 보안관리를 지칭한다.

 

iptables 의 테이블과 사슬
사슬(Chain)
INPUT
FORWARD
OUTPUT
PREROUTING
POSTROUTING

테이블(Table)
filter : INPUT, FORWARD, OUTPUT
nat : OUTPUT, PREROUTING, POSTROUTING
mangle : INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING
raw : OUTPUT, POSTROUTING

 

iptables-save
iptables 로 설정된 정책을 파일로 저장하는 명령이다.

사용 예
# iptables-save -v
현재 설정된 정책을 화면에 출력한다. 파일로 저장하기 전에 미리 확인할 때 사용한다.

# iptables-save > firewall.sh
현재 설정된 정책을 firewall.sh 로 저장한다.

 

iptables-restore
iptables-save 로 저장된 파일을 불러들여서 정책 설정에 반영한다.

사용 예
iptables-restore < firewall.sh
firewall.sh 에 저장된 정책을 불러들여서 반영한다.

답글 남기기