시험종목 : 제1701회 리눅스마스터 1급 1차
시험일자 : 2017. 03. 11.(토), 14:00 ~ 15:40(100분)
바로가기 >> 리눅스마스터 기출문제 목록
운영체제의 목적
1.효율적 사용(efficient use) : 컴퓨터 자원의 효율적인 활용을 보장
2.사용자 편리성(user convenience) : 컴퓨터 시스템의 편리한 사용법 제공
3.비간섭(noninterference) : 운영체제 사용자들의 활동에 간섭 방지
리눅스 기반 모바일 운영체제
안드로이드, 바다, 마에모, 마고, 리모, 타이젠
Mint : 우분투에서 파생된 리눅스 배포판
수세 리눅스 배포판에서는 쉬운 업그레이드와 패키지 관리를 위하여 ‘YaST’ 유틸리티를 제공한다.
RAID-1
미러링 기술을 사용하여 두개의 디스크에 데이터를 동일하게 기록
스트라이핑 기술은 사용하지 않는다.
디스크 오류시 데이터 복구능력은 탁월하지만, 중복저장으로 인한 디스크의 낭비가 50%에 이른다.
RAID-2
디스크들은 스트라이핑 기술을 사용하여 구성하고, 디스크의 에러를 감지하고 수정하기 위해 ECC정보를 사용한다.
RAID-3
스트라이핑 기술을 사용하며 패리티 정보를 저장하기 위해 별도로 하나의 디스크를 사용한다.
입출력작업이 동시에 모든 디스크에 대해 이루어지므로 입출력을 겹치게 할수 없다.
보통 대형 레코드가 많은 시스템에서 사용
RAID-4
블록형태의 스트라이핑 기술을 사용하여 디스크를 구성
단일 디스크로부터 레코드를 읽을 수 있고 데이터를 읽을때 중첩 입출력의 장점이 있다.
쓰기 작업은 패리티 연산을 해야 한고 패리티 디스크에 저장해야 하기 때문에 입출력의 중첩이 불가능하고 병목현상이 발생할 수 있다.
RAID-5
패리티 정보를 이용하여 하나의 디스크가 고장나도 사용이 가능한 구성방식으로 최소 3개의 디스크로 구성해야 한다. 패리티 정보는 별도의 디스크를 사용하지 않고, 구성된 디스크에 분산하여 기록하지만 데이터를 중복 저장하지는 않아 가장 보편적으로 사용된다. 디스크에 쓰기 제한 주소를 지정하므로 모든 읽기 및 쓰기가 중첩될 수 있다.
RAID-6
전체적인 구성은 RAID-5와 비슷하지만 디스크에 2차 패리티 구성을 포함하여 매우 높은 고장 대비 능력을 발휘한다.
2개의 패리티를 사용하여 2개의 디스크 오류에도 데이터를 읽을 수 있다.
2개의 패리티를 사용하여 최소 4개의 디스크로 구성해야 하여 RAID-5에 비해 공간 효율성은 떨어진다.
디렉터리의 종류와 특징
/
최상위에 있는 디렉터리로 root 디렉터리라 한다.
/bin
일반적으로 bin은 binary의 약자로 실행 파일들이 들어있다.
우리가 흔히 말하는 명령어라는 것들이 들어있는 디렉터리로 보통 PATH가 설정되어 있다.
/boot
부팅 이미지 파일이나 커널 등 시스템 부팅시 필요한 파일이 들어있는 디렉터리.
/dev
하드디스크, CD-ROM, 터미널 등과 같이 실제로 존재하는 물리적인 장치 등을 파일화 하여 관리하는 디렉터리
/etc/
시스템 환경 설정 파일 및 부팅과 관련된 여러가지 스크립트 파일들이 들어 있다.
/etc/mai/
sendmail.cf 나 access 파일등의 sendmail 의 설정파일들이 존재하는 디렉토리.
/etc/ssh/
SSH 서비스, 즉 sshd 데몬에서 사용하는 각종 설정파일들이 존재하는 디렉토리.
/etc/squid/
squid 프록시서버의 설정파일들이 저장된 디렉토리.
/etc/samba/
삼바관련 설정파일들이 저장된 디렉토리
/etc/skel/
계정사용자 생성시의 초기화파일들이 저장된 디렉토리(useradd 에서 사용함)
/etc/rc.d/
부팅레벨별 부팅스크립트파일들이 존재하는 디렉토리.
/etc/rc.d/init.d/
시스템 초기화 파일들의 실제파일들이 존재함.
/etc/pam.d/
PAM 설정 정보파일들이 저장된 디렉토리.
/etc/httpd/
RPM 으로 설치된 아파치 설정파일(httpd.conf 등)들이 저장된 디렉토리.
/etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/, /etc/cron.weekly/
모두 크론설정파일이 존재하는 디렉토리임.
/etc/xinetd.d/
xinetd 수퍼데몬에 의해 서비스되는 서비스 설정파일이 존재함.
/home
개인 사용자들이 파일이나 디렉터리를 만들어서 사용할 수 있는 홈 디렉터리가 위치한다.
/lib
각종 라이브러리가 저장되어 있는 디렉터리로 커널 모듈도 이 디렉터리에 들어 있다.
/lost+found
fack 명령어를 이용하여 파일 시스템을 복구할 때 작업하는 디렉터리이다.
최상위 디렉토리인 / 디렉토리에만 존재하는 것이 아니라 파일시스템마다 존재할 수 있는 디렉터리
/mnt
마운트할 때 포인터가 되는 디렉터리이다.
/misc
자동 마운트 프로그램인 autofs에 의해 사용되는 디렉터리.
/opt
응용 프로그램들의 설치를 위해 사용되는 디렉터리.
/proc
가상 파일 시스템으로 시스템에서 운영되고 있는 다양한 프로세스의 상태 정보, 하드웨어 정보, 기타 시스템 정보 등을 담고 있다.
/root
시스템 관리자인 root 사용자의 홈 디렉터리.
/sbin
System binary의 약자로 주로 시스템 관리에 대한 명령어들이 들어있는 디렉터리로 보통 슈퍼유저인 root가 사용한다.
/tmp
임시 저장 디렉터리로서 각종 프로그램이나 소켓파일, 프로세스 작업을 할 때 임시파일을 저장하는 공간.
/usr
시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리. 즉, c++, chsh, cpp, crontab, du, find등과 같이 일반사용자들용 명령어들은 /usr/bin 에 위치한다.
시스템 운영에 필요한 명령, 응용 프로그램들이 위치하는 디렉터리이다. 터널 소스, C언어 헤더파일, C-컴파일러와 같은 개발 도구, X-window, 리눅스에서 서버 관리를 위해 사용하는 아파치나 mysql, php 등이 모두 이 디렉터리의 하위 디텍터리에 설치된다.
/usr/bin/
일반 사용자들이 사용가능한 명령어 파일들이 존재하는 디렉토리.
/usr/X11R6/
X 윈도우 시스템의 루트 디렉토리.
/usr/include/
C 프로그램에 필요한 헤드파일(*.h) 디렉토리.
/usr/lib/
/lib 에 들어가지 않은 라이브러리 디렉토리.
/usr/sbin/
/bin 에 제외된 명령어와 네트워크관련 명령어가 들어있는 디렉토리.
/usr/src/
프로그램 소스(주로 커널소스)가 저장되는 디렉토리.
/usr/local/
MySQL, Apache, PHP 등과 같은 어플리케이션들을 소스로 컨파일설치할 때 사용되는 장소.
/usr/share/man/
명령어들의 도움말을 주는 메뉴얼(manual)페이지 디렉토리. 즉, 이 디렉토리에는 시스템에서 사용하는 모든 맨페이지파일(man page)이 존재함.
/var
시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리. 거의 모든 시스템로그파일은 /var/log 에 저장되고, DNS 의 zone 설정파일은 /var/named 에 저장되고, 메일파일은 /var/spool/mail 에 저장되며, 크론설정파일은 /var/spool/cron 디렉토리에 각각 저장됨.
/var/tmp/
/tmp 디렉토리와 같은 공용디렉토리. 즉, /tmp 디렉토리와 /var/tmp 디렉토리의 퍼미션은 1777 로서 sticky bit 가 설정되어 있는 공용디렉토리이다. 리눅스 시스템에서 공용디렉토리는 /tmp 와 /var/tmp 둘뿐이다.
/var/log/
시스템로그파일(messages, secure, xferlog 파일등)이 저장되는 디렉토리.
/var/ftp/
vsftp 등과 같은 FTP 서비스를 위한 다운로드될 파일들 즉, FTP 홈디렉토리.
/var/named/
BIND 즉, DNS 에서 사용하는 zone 파일들이 저장되는 디렉토리.
/var/spool/mail/
각 계정사용자들의 메일파일이 저장되는 디렉토리.
/var/spool/lpd/
프린트를 하기 위한 임시 디렉토리(스풀링 디렉토리).
/var/spool/mqueue/
발송을 위한 메일 일시저장 디렉토리.
/var/spool/cron/
각 사용자들의 cron 설정파일들이 저장된 디렉토리.
/var/spool/at/
atd 즉, 예약작업에 관한 파일들이 저장되는 디렉토리.
파일 시스템
파일시스템이란 운영체제가 파티션이나 디스크에 데이터를 저장하고 읽고 쓰고 찾기 위해 구성하는 일련의 체계를 의미하는데, 운영체제가 사용자에게 제공하는 가장 직접적인 서비스 형태 중에 하나이다. 파일 시스템의 구성은 운영체제 설치시에 일어난다.
ext2 : ext 파일 시스템의 다음 버전으로 고용량 디스크 사용 등에 대비하여 확장성에 염두에 두고 설계한 파일 시스템이다.
ext3 : 2001년 11월 리눅스 커널 2.4.15 버전 부터 포함된 파일 시스템으로 ex2의 확장판이다. 리눅스의 대표적인 저널링 파일 시스템이다. ALC(Access Control List)를 통한 접근 제어를 지원한다.
ext4 : ext2 및 ext3 와 호환성이 있는 확장 버전으로 64비트 기억공간 제한을 없애고, 최대 1Exabyte 의 디스크 볼륨과 16Terabyte 의 파일을 지원하는 등 대형 파일 시스템과 관련된 기능이 대폭 강화되었다. 현재 대부분의 리눅스는 ext4 파일 시스템을 사용하고 있다.
X 윈도는 클라이언트/서버 구조로 되어 있고, 서로간의 통신을 위해 X Protocol 을 사용한다.
X.org
X.org 는 X.org Foundation 에서 관리되는 X 서버 패키지로 소스가 공개된 자유 소프트웨어이다.
2004년에 XFree86 프로젝트의 라이선스 정책 변화로 인하여 관련 개발자들 대부분이 이 프로젝트에 합류하였다.
현재 리눅스를 비롯하여 유닉스의 대부분이 이 프로젝트 기반의 X 윈도 시스템을 사용하고 있으며, freedesktop.org 와 함께 지속적으로 발전시키고 있다.
‘ ‘ : 작은따옴표는 모든 문자나 특수문자들을 일반문자로 취급한다.
” “ : 큰따옴표는 $, `, \, ! 를 제외한 모든 문자들을 일반문자로 취급한다.
{#name} : name 의 문자열 길이를 반환한다.
따라서 aaa 는 15 라는 일반문자가 되고 {#aaa} 는 2 가 된다.
데몬 관련 유틸리티
ntsysy
텍스트 환경에서 커서를 이용하여 부팅 중 자동으로 실행되는 서비스를 설정할 수 있는 유틸리티이다.
chkconfig
텍스트 기반의 명령형 프로그램으로 실행 레벨에 따른 서비스의 on/off 설정 리스트를 출력하거나 설정한다.
ex)
# chkconfig level 35 httpd on
실행 레벨 3, 5 에서 httpd 서비스를 on 한다. 특별히 레벨을 명기하지 않으면 2, 3, 4, 5 레벨이 on/off 된다.
OSI 7계층
1계층 물리계층
실제 장치들을 연결하기 위해 필요한 케이블 및 연결장치 등과 같은 기계적인 항목과 전압, 신호 방식 등의 전기적인 항목에 대한 특성을 규정한다.
이 계층에서 동작하는 장치에는 허브나 리피터 등이 있다.
2계층 데이터링크 계층
신뢰성 있는 데이터 전송을 보장하기 위한 계층으로 오류 제어와 흐름 제어를 담당한다.
데이터를 전송하는 단위로 분할하는 기능 , 프레임 전달, 전송단위의 순서 제어 기능, 에러 제어 기능, 데이터 흐름 제어 기능 등을 제공한다.
네트워크의 오류 제어는 데이터를 재전송하는 방법으로 처리한다.
이 계층에서 동작하는 장치에는 브리지나 스위치 등이 있다.
3계층 네트워크 계층
네트워크 계층은 송신 호스트에서 전송한 데이터가 수신 호스트에 도착하기 위한 올바른 경로를 선택을 지원하는 역할을 한다.
송수신 호스트 사이의 패킷경로를 결정하는 라우팅, 트래픽이 집중되지 않도록 하는 혼잡 제어, 패킷의 분할과 병합, 인터네트워킹 등의 역할을 수행한다.
이계층에서 동작하는 장치에는 라우터가 있다.
4계층 전송 계층
전송계층은 송신 프로세스와 수신 프로세스간의 연결기능을 제공하고 안전한 데이터 전송을 지원한다.
계층 4까지의 기능은 운영체제에서 시스템 콜 형태로 상위 계층에 제공한다.
5계층 세션 계층
세션 계층은 전송 계층과 유사하게 송수신 호스트의 세션연결을 지원하지만 더욱 더 상위의 논리적 연결을 지원한다.
즉 사용자간의 대화를 제어하는 대화 제어자로서 사용자들을 동기화하고 유효한 설정인지를 확인한다.
6계층 표현 계층
표현 계층은 송수신 호스트 간에 서로 다르게 사용하는 코드와 문자 등을 번역하여 일관되게 전송 데이터를 서로 이해할 수 있도록 하는 기능을 제공한다.
데이터의 암호화와 해독을 수행하고 효율적인 전송을 위해 필요에 따라 압축과 압축해제를 수행한다.
7계층 응용 계층
응용 계층은 응용 프로그램과 연계하여 사용자에게 편리한 환경을 제공하는 역할을 수행한다.
전자우편, 웹, 파일전송 등과 같은 응용 프로그램 환경에서 이루어진다.
인터네트워킹(Internetworking) 장비
네트워크와 네트워크의 연결을 인터네트워킹(Internetworking)이라고 하는데, 이러한 기능을 수행하는 장치를 일반적으로 게이트웨이(Gateway)라고 한다. 게이트웨이는 서로 다른 통신망과 프로토콜을 사용하는 네트워크 간에 통신 기능을 가응하게 해주는 장치를 뜻하는데, 기능에 따라 다양하게 존재한다. 대표적인 장치로는 리피터, 브리지, 라우터 등이 있다.
1) 리피터(Repeater)
물리적 신호는 전송 거리가 멀면 감쇄되기 때문에 중간에 이를 보완해 주어야 하는데, 입력된 신호를 증폭하여 중계하는 장치가 리피터이다. OSI 모델의 첫 번째 계층인 물리 계층에서 동작한다.
2) 브리지(Bridge)
브리지는 OSI 모델의 데이터 링크 계층에 있는 여러 개의 네트워크 세그먼트를 연결해 준다. 브리지는 물리 계층에 있는 리피터나 허브(HUB)의 기능을 하면서, 특정 네트워크로부터 오는 통신량을 조절하여 트래픽을 관리할 수 있다.
3) 라우터(Router)
라우터 OSI 모델의 물리 계층, 데이터 링크 계층, 네트워크 계층의 기능을 지원하는 장치이다. 브리지 기능에 추가하여 네트워크 계층에 대한 경로 선택 기능을 제공해야 하고, 임의의 네트워크에 들어온 데이터를 어느 네트워크로 전달할지 판단할 수 있어야 한다.
route : 라우팅 테이블의 정보를 출력하거나 관리하는 명령
nslookup : DNS를 이용하여 도메인이나 IP를 조회하는 명령
네트워크 관련 파일
/etc/sysconfig/network : 네트워크 사용 유무 지정, 호스트명 설정, 게이트웨이 주소 설정, 게이트웨이 장치파일 설정, NIS 도메인 이름 등이 기록되는 파일이다.
/etc/sysconfig/network-scripts 디렉터리 : 네트워크 인터페이스 환경 설정과 관련된 파일들이 저장 되는 디렉토리.
/etc/resolv.conf : 시스템에서 사용하는 DNS 서버를 설정하는 파일
/etc/hosts : DNS 서버를 사용하기 이전에 많이 이용된 파일로 IP 주소와 호스트명을 매핑시켜 데이터베이스처럼 사용하는 파일. 자주 이용하는 IP 주소에 별칭을 설정하여 접속을 쉽게 할 수 있다.
사용자 관련 명령어
user : 시스템에 로그인 되어 있는 사용자 아이디를 출력해 주는 명령
who : 시스템에 로그인되어 있는 사용자를 출력해 주는 명령
whoami : 실질적으로 사용 중인 권한자를 출력해 주는 명령
w : 시스템에 로그인 되어 있는 사용자와 사용자가 수행중인 작업을 출력해 주는 명령
logname : 사용자의 로그인 계정을 출력해 준다. su 명령으로 사용자 전환한 경우 최초의 로그인 계정을 출력한다.
id : 시스템에 등록된 아이디에 대한 정보를 출력하는 명령으로 UID, GID, 속한 그룹 정보를 보여준다.
groups : 사용자가 속한 그룹명을 출력한다.
/etc/skel/
useradd 가 새로운 계정을 생성할때 /etc/skel/ 디렉토리의 내용들이 사용자의 홈디렉토리로 자동 복사된다.
useradd
사용자 계정 생성
–u : 사용자의 UID 값을 지정
-d : 홈 디렉터리를 지정
-g : 기본 그룹을 지정
-G : 기본 그룹이외에 추가로 그룹에 속하게 할 경우에 쓴다.
21번 문제 해설 참조
su
su(substitute user)는 대리 유저라는 뜻의 약어로 시스템에 로그인되어 있는 상태에서 다른 사용자의 권한으로 shell 을 실행할 수 있도록 전환하는 명령이다.
사용법
$ su [option] [사용자명]
사용자명을 입력하지 않으며 root 로 전환한다. 전환시 해당 사용자의 패스워드를 알아야 하며 root 에서 다른 사용자로 전환 시에는 패스워드를 묻지 않는다. 전환 후 원래 사용자로 돌아가려면 exit 를 입력하면 된다.
주요 옵션
-, -l : su 명령을 옵션없이 실행하면 로그인한 사용자의 환경 병수 값을 가지고 다른 사람의 권한만 갖는다. 전환하려는 사용자가 실제 로그인한 것처럼 셸을 이용하려면 반드시 이 옵션을 지정해야 한다. 특히 root 로 전환하는 경우 root 권한의 셸을 이용하기 위해서는 반드시 필요하다.
-c : 사용자를 전환하지 않고 다른 사용자의 권한으로 명령을 이시적으로 수행할 때 사용한다.
chmod
파일이나 디렉터리에 접근할 수 있는 허가권을 설정하는 명령
chmod 명령에서 권한 지정방법 1번째
r | 읽기 | 4 |
w | 쓰기 | 2 |
x | 실행 | 1 |
ex) chmod 755 test
사용자는 7(4+2+1), 그룹은 5(4+1), order은 5(4+1) 의 권한으로 지정 -> 사용자는 7(읽기+쓰기+실행)의 권한을 주고 그룹과 order은 5(읽기+실행)의 권한을 줌
chmod 명령에서 권한 지정방법 2번째
u g o a 각각 사용자(u), 그룹(g), order(o), all(a) 을 의미한다. 생략하면 all
+ – = 각각 권한 추가(+), 삭제(-), 지정(=)을 의미한다.
ex)
chmod go-rx test
그룹과 order에게 r(읽기) 과 x(실행) 를 제거
du
파일이나 디렉터리들이 디스크에서 차지하고 있는 크기를 출력
[사용법]
$ du [option] [FILE(s)]
[주요 옵션]
-h : 용량의 단위 표시(KB, MB, GB)를 해준다.
-b : 바이트 단위로 보여준다.
-k : 킬로바이트 단위로 보여준다.
-m : 메가바이트 단위로 보여준다.
-a : 디렉터리에 존재하는 모든 파일에 대해 각각의 크기를 보여준다.
-s : 파일들의 전체 크기를 합한 값만 보여준다.
ls
디렉터리 안의 내용을 출력해 주는 명령이다.
주요 옵션
-a : 숨겨진 파일이나 디렉터리도 출력해 준다.
-F : 파일의 형태에 따라 관련 정보를 출력해 준다.
-l : 파일이나 디렉터리 정보를 한 줄에 하나씩 길게 보여준다.
-d : 대상이 디렉터리인 경우에 디렉터리 안의 내용 대신에 해당 디렉터리에 대한 정보를 출력한다.
-i : i-node 번호를 파일 또는 디렉터리명 앞에 출력한다.
grep
텍스트 파일에서 특정 패턴을 갖는 줄을 찾아서 출력해 주는 명령이다.
-v : 패턴과 일치하지 않는 줄의 내용을 출력한다.
cut
데이터의 열을 추출할 때 사용한다. 이 때 추출하는 데이터는 파일 각 줄의 글자, 바이트, 또는 필드가 된다.
옵션
-c : 문자수를 기준으로 추출한다.
-f : 파일의 필드를 기준으로 추출한다.
-d : 필드 구분자를 지정한다.
ex)
$ cut -f 1,3 -d: /etc/passwd
/etc/passwd 의 필드 구분을 ‘:’ 으로 지정하고, 첫 번째 필드와 세 번째 필드 값을 추출해서 출력한다.
fg
백그라운드 프로세스를 포그라운드로 전환하는 명령이다.
bg
포그라운드 프로세스를 백그라운드로 전환하는 명령이다.
CTRL + Z 를 눌러 작업을 일시 중지시킨 후 bg 명령을 사용하여 백그라운드로 전환
CTRL + c : 작업취소
ps
동작중인 프로세스의 상태를 출력해 주는 명령이다.
사용법
$ ps [option]
주요 옵션
a : 터미널과 연관괸 프로세스를 출력하는 옵션이다. 보통 x 옵션과 연계하여 모든 프로세스를 출력할때 사용한다.
u : 프로세스의 소유자를 기준으로 출력한다.
x : 데몬 프로세스처럼 터미널에 종속되지 않은 프로세스를 출력한다. 보통 a 옵션과 결합하여 모든 프로세스를 출력할
때 사용한다.
l : 프로세스의 정보를 길게 보여주는 옵션으로 우선순위와 관련된 PRI 와 NI 값을 확인할 수 있다.
e : 해당 프로세스에 관련된 환경변수 정보를 함께 출력한다.
f : 프로세스간의 상속관계를 트리구조로 보여준다.
top
동작중인 프로세스의 상태를 실시간으로 화면에 출력해 주는 명령으로 프로세스의 상태뿐만 아니라 CPU, 메모리, 부하 상태 등도 확인할 수 있다.
pstree
현재 실행중인 프로세스를 트리 구조로 보여주는 명령어. 가장 왼쪽이 부모, 오른쪽이 자식 프로세스
grep
텍스트 파일에서 특정 패턴을 갖는 줄을 찾아서 출력해 주는 명령이다.
killall
같은 데몬의 여러 프로세스를 한 번에 종료시킬 때 사용하는 명령으로 프로세스명을 사용한다.
시그널번호
1 SIGHUP 재시작
2 SIGINIT 인터럽트
9 SIGKILL 강제종료
15 SIGTERM 종료
jobs
백그라운드로 실행중인 프로세스나 현제 중지된 프로세스의 목록을 출력해 주는 명령
RPM(Red Hat Package Manager)
레드햇사에서 만든 패키지 관리기법으로 프로그램을 .rpm 형태의 파일로 배포하고, rpm 명령을 사용하여 손쉽게 설치 및 갱신, 제거, 검증, 질의 등의 관리를 할 수 있다.
rpm 사용법
rpm 명령의 사용법은 설치 및 갱신, 제거, 질의, 검증, 리빌드모드 등 총 5가지로 나눌 수 있다.
설치 및 갱신모드
새로운 패키지를 설치하거나 갱신할 수 있다.
주요옵션
-i : 새로운 패키지를 설치할 때 사용한다. 기본적으로 이전 버전의 같은 패키지가 있을 경우 설치가 되지 않는다.
-U : 기존의 패키지를 새로운 버전의 패키지로 업그레이드할 때 사용한다. 만약 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있는데 이경우에는 -i 옵션과 같다고 볼 수 있다.
-F : 이전버전이 설치되어 있는 경우에만 설치한다.
-v : 메시지를 자세히 보여준다.
-h : 설치상황을 # 기호 표시해 준다.
yum의 환경 설정 파일은 /etc/yum.conf 이고, 설치 및 업데이트를 위한 저장소(repository)관련 파일들은 /etc/yum.repos.d 디렉터리에 저장된다.
yum clean all : yum 관련해서 저장된 모든 정보를 삭제한다.
YUM (Yellowdog Updater, Modified )
rpm기반의 시스템에서 패키지를 손쉽게 설치해 주고 자동으로 업데이트를 수행하는 명령행 기반의 유틸리티이다.
사용법
yum [option]
주요옵션
-y : 모든 질의에 yes 라고 답한다.
-v : 자세한 정보를 출력한다.
command(명령)
list 항목 : 전체 패키지에 대한 정보를 출력
info 패키지명 : 패키지에 대한 정보를 출력
check-update : 업데이트가 필요한 패키지를 출력
update 패키지명 : 패키지를 업데이트할 때 사용
install 패키지명 : 패키지를 설치할 때 사용
search 문자열 : 문자열이 포함된 패키지를 찾아준다.
remove 패키지명 : 패키지를 삭제할 때 사용한다.
grouplist : 패키지 그룹에 대한 정보를 출력
groupinfo 패키지그룹명 : 해당 패키지 그룹명과 관련된 패키지의 정보를 보여준다.
groupupdate 패키지그룹명 : 지정한 그룹의 패키지를 업데이트 한다.
groupinstall 패키지그룹명 : 지정한 그룹의 패키지를 설치한다.
groupremove 패키지그룹명 : 지정한 그룹의 패키지를 제거한다.
whatprovides : 특정한 파일이나 기능과 관련된 패키지 정보를 검색할 때 사용한다.
clean 값 : yum 관련해서 저장된 정보를 삭제할 때 사용. 값에는 all, packages, rpmdb 등이 있다.
tar(tape archive)
테이프 관련 장치를 이용하여 백업할 때 사용하는 명령이었으나 현재는 여러 파일들을 하나의 파일로 묶어주는 명령으로 사용한다.
사용법
$tar [option] 파일명
옵션
-c : 지정한 파일이나 디렉터리를 하나로 묶어 새로운 tar 파일을 생성한다.
-x : 생성된 tar 파일을 푼다.
-v : 어떤 명령을 실행할 때 대상이 되고 있는 파일들을 보여준다.
-f 파일명 : 작업 대상이 되는 tar 파일의 이름을 지정한다.
-r : 기존의 tar 파일 뒤에 파일을 추가한다.
-t : tar 파일 안에 묶여 있는 파일의 목록을 출력한다.
-h : 심볼릭 링크가 가리키고 있는 원본 파일을 저정한다.
-p : 파일이 생성되었을 때 권한을 그대로 유지하게 해준다.
zip : 압축
unzip : 압축해제
lsmod
리눅스 커널에 적재된 모듈 정보를 출력하는 명령.
rmmod
커널에서 모듈을 제거하는 명령으로 다른 모듈에 의해 사용 중인 모듈은 제거할 수 없다.
modprobe
모듈적재 depmod에 의해 갱신된 modules.dep에서 찾아 적재한다.
insmod와 달리 해당 커널 디렉토리로 갈 필요없이 아무위치에서나 모듈을 적재할 수 있다.
또한 의존성이 필요한 모듈이나 먼저 실행되어야 할 모듈이 있다면 그 모듈부터적재하고 해당모듈을 적재한다.
리눅스 커널에 모듈을 적제하거나 제거하는 명령이다.
insmod 나 rmmod 명령은 다른 모듈에 의존되어 있는 경우에는 사용 불가하나 modprobe 는 단일 모듈, 의존성이 있는 모듈, 특정 디렉터리의 모든 모듈들을 적재할 수 있다.
이 명령어는 최상위 모듈 디렉터리에 존재하는 modules.dep 파일을 참고해 모듈간의 의존성을 해결한다.
모듈 관련 설정 파일 리눅스 커널 2.4 버전에서는 부팅 시에 특정 모듈을 커널에 적재할 때 /etc/modprobe.conf 파일에 등록해서 사용하였지만 커널 2.6버전부터는 /etc/modprobe.d 디엑터리 안에 .conf 로 끝나는 모든 파일을 인식한다.
커널 컴파일 순서
1. 커널 소스 파일 압축해제
2. 커널 소스의 설정값 초기화(make mrproper)
3. 커널 컴파일 옵션 설정 작업(make menuconfig)
4. 커널 이미지 파일 생성 작업(make bzImage)
5. 커널 모듈 생성을 위한 컴파일 작업(make modules)
6. 커널 모듈 설치 작업(make modules install)
7. 커널 모듈 파일 복사, grub.conf 파일 수정(make install)
8. 새로운 커널 사용을 위한 시스템 재부팅
44번 문제해설 참조
fdisk
디스크 파티션을 확인하고 추가/삭제하는 명령으로 설정 후에는 반드시 재부팅을 해야 한다.
옵션
-l : 현재 디스크의 파티션 테이블 정보를 출력
-s partition : 특정 파티션의 크기를 출력. 단위는 block.
-v : fdisk의 버전을 출력한다.
/etc/fstab
이 파일은 파일 시스템에 대한 다양한 정보를 담고 있는 파일로 부팅 시에 마운트할 파티션 정보가 기록되어 있는 파일이다.
파티션 정보를 변경하거나 디스크를 추가한 경우 이파일에 등록해야만 부팅 시에 자동으로 마운트할 수 있다.
lp
System V 계열에서 사용하는 인쇄 명령으로 BSD 계열의 lpr 명령과 유사하다
사용법
# lp [option] [파일명]
주요 옵션
-d : 다른 프린터를 지정한다.
-n : 인쇄할 매수를 지정한다.
ex)
# lp -n 2 /etc/passwd
/etc/passwd 의 내용을 2매 출력한다.
logrotate
로그 파일은 계속적으로 덧붙여지면서 쌓이는 형태라 파일의 크기도 계속 커지게 된다. 이를 방지하기 위해서 로그 파일을 여러개로 분할해 주는 프로그램이 logrotate 이다. 로그파일의 자동 로테이션 기능, 압축 기능, 제거 등을 지원한다. 각각의 로그파일은 하루, 일주일, 한달 단위로 로테이션을 할 수 있다. 시스템과 관련된 기본적인 로그 설정은 /etc/logrotate.conf 에서 제어하고, 응용 프로그램은 /etc/logrotate.d 디렉터리 내에 위치하여 로그 파일을 관리하고 있다. 명령행에서 logrotate 를 직접 사용이 가능하지만, 현재 리눅스에서는 /etc/cron.daily 디렉터리에 등록되어서 cron 에 의해 스케줄링 되어 실행되고 있다.
rsyslog
syslog 를 대체하는 시스템 로그 및 커널 메시지 관련 데몬으로 최근 리눅스는 이 로그 데몬을 사용한다.
멀티 스레드를 지원하고 TCP 프로토콜도 지원하다.
아울러 MySQL, Oracle 과 같은 데이터베이스 로그 관리도 가능하다.
rsyslogd 데몬이 동작하면서 로그를 기록하고, 데몬의 동작은 /etc/rc.d/init.d/rsyslog 라는 스크립트를 이용한다.
관련 환경 설정은 /etc/rsyslog.conf 파일을 통해 제어한다.
기본 구성 형식 : facility.priority action
facility 의 종류 : corn, auth, authpriv, kern, lpr, mail, * 등등
priority 의 종류 : none, debug, info, notice, warning, warn, error, err 등
action 의 종류 : file, @host, user, * 등등
ex)
authpriv.* root
인증 관련 로그를 root 사용자의 터미널로 전송
authpriv.* *
인증 관련 로그를 모든 사용자의 터미널로 전송
로그 관련 명령어
last
사용자의 로그인 정보, 재부팅한 정보를 출력해 주는 명령으로 바이너리 파일인 /var/log/wtpm 의 내용을 출력한다.
사용예
last 사용자 : 해당 사용자의 로그인 정보를 출력
last reboot : 시스템이 재부팅된 정보를 출력
lastlog
사용자가 마지막으로 로그인한 정보를 출력해 주는 명령으로 바이너리 파일인 /var/log/lastlog 의 내용을 출력한다.
-u 사용자명 : 특정 사용자에 대한 정보만 출력
-t 날짜 : 오늘부터 지정한 날짜만큼 거슬러 올라가 그 이후에 로그인한 사용자의 정보를 출력
사용예
lastlog : 모든 사용자의 최종 로그 기록을 출력
lastlog -u 사용자 : 해당 사용자의 최종로그 기록을 출력
lastb
last와 반대되는 개념의 명령으로 로그인에 실패한 정보를 출력해 주는 명령으로 바이너리 파일인 /var/log/btmp 의 내용을 출력한다. root 만 사용가능.
dmesg
커널 링 버퍼의 내용을 출력하고 제어하는 명령이다.
53번 문제해설 참조
SSH(Secure Shell)
원격 시스템에 로그인하여 명령을 실하하는 프로그램. 기본적인 사용법은 telnet 과 유사.
telnet 은 클라이언트와 서버간의 데이터 전송시에 일반 텍스트 형태로 패킷을 전달하여 내용을 유출당할 수 있지만 ssh는 패킷 전송시 암호화를 하여 안전하게 전송할 수 있다.
ssh-keygen(인증키를 이용한 SSH 서버접속)
SSH 서버를 접속할 때 패스워드를 입력하여 접속하지만 인증키를 이용하여 접속할 수 있다.
SSH 클라이언트에서 ssh-keygen 명령을 이용해서 비밀키와 공개키를 생성하고, SSH 서버에 공개키를 복사하면 된다.
사용예
$ ssh-keygen
RSA 를 이용해서 인증키를 생성한다. id_rsa 와 id_rsa.pub 두개의 파일이 생성되며, 패스워드를 별도로 설정하면 서버에 접속할 때 패스워드 없이 로그인이 가능하다. 생성된 파일 중에 공개키 파일에 해당하는 id_rsa.pub 파일을 원격지 서버의 홈 디렉터리 안에 .ssh/authorized_keys 로 복사해두면 된다.
/etc/selinux.config 참고
cron 을 이용하여 주기적으로 실행하는 작업은 시스템 운영에 필요한 작업과 사용자의 필요에 의한 작업으로 나눌 수 있다.
실행에 필요한 작읍은 root 권한으로 /etc/crontab에 등록하여 주기적으로 수행할 수 있고 사용자는 crontab라는 명령을 수행해서 등록할 수 있다.
crontab 파일은 다음과 같이 총 7개의 필드로 구성되어 있다.
<minute> <hour> <day_of_month> <month> <day_of_week> <user-name> <command>
ex)
10 1 1 1-12/2 * /etc/joon.sh
1월부터 12월까지 2개월마다 1일날 오전 1시 10 분에 실행. 실행파일 경로는 /etc/joon.sh
tar 에 관한 설명은 39번 문제해설 참조
tar 명령을 이용한 증분 백업
tar -g
-g 는 증분 백업에 사용하는 옵션으로 list 라는 파일의 내용을 토대로 증분 백업을 시도하는데, 처음 사용하는 겅우에는 전체 백업을 한다.
rsync : 네트워크로 연결된 원격지의 파일들을 동기화하는 유틸리티.
아파치에 PHP를 모듈로 장착하는 방법에는 크게 두가지 방법이 있다.
하나는 정적 모듈로 장착하는 것이고 또 다른 하나는 동적 모듈로 장착하는 것이다.
동적 모듈은 보통 DSO(Dynamic Shared Object) 라 하는데 사용자의 요청이 있을 때 해당 프로세스에 포함되는 방식으로 자원의 효율성면에서 우수하다.
정적 모듈 방식은 동적 모듈 방식에 비해 처리속도는 빠르나 불필요한 자원의 낭비가 발생할 수 있어서 아파치 1.3버전 까지만 지원하고, 아파치 2.0버전 이후에는 오직 동적 모듈 방식인 DSO 방식으로만 컴파일해서 설치할 수 있다.
fixed-address : DHCP 서버에서 특정 호스트에게 고정된 IP를 할당하기 위한 설정
존 파일은 일반적인 존 파일과 리버스 존 파일로 나눌 수 있다.
존 파일은 도메인에 대한 질의 시 IP 주소로 알려주는 역할을 수행하고,
리버스 존 파일은 IP 주소에 대한 질의 시 도메인을 알려주는 역할을 수행한다.
설정 예 : IP 주소가 192.168.12.22 이고 도메인이 linux.or.kr 인경우
존
zone “linux.or.kr” IN{
type master;
file “linux.zone”
}
리버스 존
zone “12.168.192.in-addr.arpa” IN{
type master;
file “linux.rev”
}
arp
ARP(Address Resolution Protocol) 캐시를 관리하는 명령이다. ARP 캐시는 현재 접속되어 있는 32비트 IP 주소를 하드웨어 주소(MAC address)로 바꾸어서 기억하는 곳이다. 이 ARP 캐시를 보면 현재 들어와 았는 호스트에 대한 정보를 알아낼 수 있다.
LDAP (Lightweight Directory Access Protocol 경량 디렉터리 접근 규약)
IP프로토콜을 기반으로 사용자, 시스템, 네트워크, 서비스 정보 등의 디렉터리 정보를 공유할 수 있다.
리눅스와 리눅스간의 설정 데이터를 배포하기 위해 사용되는 프로토콜로 인증을 위한 다른 서비스에 자주 사용된다.
조직이나 객체 그리고 인터넷이나 기업의 인트라넷 등 네트워크상에 있는 파일이나 장치와 같은 자원의 위치를 찾을 수 있게 해주며 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜 이다.
c : 국가 이름
st : 주(한국의 도) 이름
l : 보통 도시를 나타내지만, 특정 지역 단위에서도 사용가능
street : 도로명 주소(지번)
o : 조직(회사) 이름
ou : 조직의 부서 이름
cn : 일반적으로 이름과 성의 조합
sn : 성을 나타냄
giveName : 이름을 나타냄
dc : 도메인 네임의 요소
mail : email 주소
telephoneNumber : 전화번호
NFS 클라이언트 사용하기
NFS 클라이언트에서는 mount 명령을 이용하여 NFS 서버의 파일 시스템을 이용할 수 있고, 부팅할 때 마운트하여 사용하려면 /etc/fstab 파일에 등록하면 된다.
(1) mount 와 moutn.nfs 명령 이용하기
ex)
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 등록하기
ex)
# vi /etc/fstab
192.168.5.13:/nfsdata /mnt nfs defaults 0 0
NTP(Network Time Protocol)
NTP는 컴퓨터간의 시간을 동기화 하는데 사용되는 프로토롤이다.
NTP는 여러 계층(stratum) 으로 구성된다. 최상위 계층에 해당하는 Stratum 0 는 세슘 원자시계, GPS 시계등과 같은 장치이다. NTP 서버는 Stratum 1 부터 가장 낮은 Stratum 15 까지 15단계로 나누고 Stratum 16 은 비동기 장치를 나타낸다.
squid
리눅스에서 프록시 서버 프로그램으로 squid 를 주로 사용한다.
squid 는 고성능의 웹 캐싱 서버로 HTTP, Gopher, FTP 등을 지원한다.
주요 파일
/etc/squid/squid.conf : squid 데몬의 환경 설정 파일이다.
/etc/rc.d/init.d/squid : squid 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자값을 사용해서 제어한다.
KVM
KVM은 Qumranet 에서 개발한 하이퍼바이저로 x86시스템 기반으로 CPU 전가상화 방식을 사용한다.KVM은 CPU 가상화 기술은 인텔의 VT 및 AMD-V 를 기반으로 동작하는 공개형 기술로서 리눅스 커널 2.6.20 부터 포함되었다. KVM은 QEMU 라는 CPU 에뮬레이터를 사용하고, 수정되지 않은 리눅스나 윈도우의 이미지를 생성하여 다중의 가상 머신을 운영한다. 각각의 가상머신은 개별적인 하드웨어를 가지고 동작한다. KVM 은 CPU 반가상화 기술은 지원하지 않으나 이더넷 카드, Disk I/O, VGA 그래픽 인터페이스 등은 반가상화를 지원한다.
RELAY : 특정 호스트나 도메인의 접근을 허용
REJECT : 메일을 거절하고, 거부 메시지를 보냄
DISCARD : 메일을 거부 메시지 없이 무조건 거절
phpinfo()
아파치 웹서버와 PHP 연동상태를 확인하기 위한 PHP 관련정보를 출력하는 함수
< php
phpinfo();
>
위 방법으로 테스트 후 정상적인 결과가 나타나지 않는다면 php.ini 파일 Language Options 항목에서 short_open_tag = On 으로 설정을 변경한다.
security
보안관련 옵션으로 클라이언트가 삼바서버에 접속할 때 인증 레벨을 부여하는 옵션
4가지 옵션 : user, share, server, domain
user : 삼바 서버에 접속하는 클라이언트는 먼저 반드시 윈도우 시작시 사용자명과 패스워드로 로그인을 한 후에 삼바 서버에 접속할 때 같은 사용자명으로 패스워드를 확인한 후에 접속이 이루어진다.
share : 유효한 사용자명과 패스워드로 삼바 서버에 로그인을 하지 않아도 서버에 접속할 수있게 하므로, 삼바 서버 인증과정을 필요로 하지 않을 때 이 레벨로 지정하면 된다. 공유 디렉토리 접근에 제한을 두는 경우에 사용할 수 있다.
server : 윈도우 NT와 같은 다른 삼바 서버가 존재해야 하며, 다른 삼바 서버에 사용자명과 패스 워드를 전달하여 올바른지를 확인한다.
domain : 윈도우 NT서버가 있어야 가능하며, 삼바서버가 사용자명과 패스워드를 윈도우NT의 도메인 컨트롤러(Domain Controller)에 전달하여 유효한지 확인하는 방법이다.
root_squash : NFS 클라이언트에서 접근하는 root 사용자를 무시하고 서버상의 nobody( 또는 nfsnobody) 로 매핑시키는 옵션으로 기본값이다. client가 root 라도 sever에 nobody로 mapping 함.
no_root_squash : NFS 클라이언트에서 접근하는 root 사용자를 무시하지 않고 root 로 인정한다.
client가 root면 server에도 root로 접근하게 함. 신뢰할 수 있는 사람에게만 허용할 것
all_squash : root 를 포함하여 모든 사용자의 권한을 nobody( 또는 nfsnobody) 로 매핑시킨다.
smbclient
리눅스 및 유닉스에서 사용하는 삼바 클라이언트 명령으로 윈도 서버로 접근할 때 사용한다.
사용법
smbclient [option] [호스트명]
주요 옵션
-L : 접속하려는 삼바 서버 공유 디렉터리 정보를 출력한다.
-U : 삼바 서버에 접속할 때 사용자명을 입력한다.
-M : 지정한 호스트명에 메시지를 전송할 때 사용한다.
/etc/mail/access
메일 서버로 접근하는 호스트나 도메인의 접근을 제어하는 파일.
실제 센드메일 데몬이 참고하는 파일은 /etc/mail.access.db 이므로 변경 시에는 makemap hash 명령을 이용한 업데이트가 필요하다.
[설정예]
Form:spammer@aol.com REJECT
Connect:192.168.2 DISCARD
[주요 정책]
RELAY : 특정 호스트나 도메인의 접근을 허용
REJECT : 메일을 거절하고, 거부 메시지를 보냄
DISCARD : 메일을 거부 메시지 없이 무조건 거절
OK : 특정 호스트나 도메인의 접근을 허용한다.
[적용명령]
# makemap hash /etc/mail/access < /etc/mail/access
access 파일을 수정할 때마다 해주어야함
DNS 서버 options 구문
allow-transfer : zone 파일의 내용을 복사할 대상에 제한을 걸때 지정한다.
allow-query : 네임서버에 질의 할 수 있는 호스트를 지정한다.
forward : forwarders 옵션과 함께 사용되며 only 나 first 두 값중 하나를 갖는다.
forwarders : 도메인에 대한 질의를 다른 서버로 넘길때 사용하는 옵션으로 복수 형태로 지정 가능하고 구분은 세미콜론(;)으로 한다.
httpd.conf
아파치 웹 서버의 기본적인 설정을 담당하는 파일로 항목을 살펴보면 다음과 같다.
ServerRoot “/usr/local/apache” : 웹서버가 설치된 디렉터리를 나타낸다.
Listen 80 : 아파치 웹 서버의 포트를 나타내는 항목
ServerAdmin : 서버의 문제가 발생했을 경우 보낼 관리자의 이메일 주소를 적는다.
ServerName : 서버의 도메인 이름을 적는다.
DocumentRoot : 웹 문서가 위치하는 루트 디렉터리를 나타낸다. 해당 디렉토리로부터 웹페이지를 검색하여 보여준다.
DirectoryIndex : 클라이언트가 디렉토리를 요청할때 찾아볼 자원 목록. 웹 브라우저의 URL에서 “…/디렉터리명/” 으로 요청할때 보여주는 웹 페이지. ex) index.html
primary Name Server
사용하는 도메인을 관리하기 위해 필수적으로 구성하는 서버로 보통 Master DNS라고 부른다.
Secondary Name Server
primary Name Server 의 zone 파일을 백업하는 역할을 수행하여 Slave DNS라고도 부른다.
Caching Name Server
관리하는 도메인 없이 리졸빙만을 제공하기 위해 구성되는 서버이다.
도메인에 대한 리졸빙 결과를 저장하고 서버에 기록된 정보에 대한 요청이 들어올 경우에 직접 조회하지 않고 바로 응답해 주는 역할을 수행한다.
인터넷 사용 속도를 높이기 위해 사용되기도 한다.
프록시(Proxy)
프록시 서버란 보통 네트워크 속도가 느린 환경에서 보다 빠른 인터넷을 이용하기 위해 사용한다.
프록시 서버는 자주 방문하는 사이트의 정보를 저장하는 일종의 캐시(Cache) 서버로서 사용자들이 동일한 사이트를 접속할 경우에 서버에 저장된 데이터 정보를 전달함으로서 처리 속도를 높일 수 있다.
프록시 서버의 접근 제어
squid.conf 파일에서 acl항목을 이용해서 접근 제어를 할 수 있다. acl을 이용하여 특정 IP주소, 네트워크 대역, 도메인 등을 alias 형태로 지정하고, http_access allow 나 http_access deny 를 이용하여 접근을 제어한다.
wait : 서비스가 단일 스레드인지 다중 스레드인지를 결정하는 항목으로 설정값은 yes 또는 no 이다.yes 인 경우에는 오직 하나의 서비스만 작동하게 되며 , no 인 경우에는 다중 스레드로 동작하여 새로운 서비스 요청을 받아들이게 된다.
Xen
CPU 전가상화 뿐만 아니라 CPU 반가상화도 지원하는 가상화 기술
다양한 CPU를 지원하는 하이퍼바이저 기반의 가상화 기술이다.
커널이 수정된 게스트 운영체제를 통해 물리적 서버 대비하여 최대 98%의 성능을 나타내는 CPU반가상화를 비롯하여 수정되지 않은 윈도우 및 기타 운영체제를 그대로 게스트 시스템에 실행할 수 있도록 전가상화 도 자원한다.
QEMU 기반으로 동작한다.
/etc/aliases
특정 계정으로 들어오는 메일을 다른 계정으로 전성되도록 설정하는 파일이다. 보통 동일한 계정으로 들어오는 메일을 여러 사용자에게 전달하는 메일링 리스트가 필요한 경우에 유용하다. 예를 들면, 고객센터의 이메일 계정이 webmaster 인 경우에 해당 계정으로 들어오는 메일을 고객지원센터에 근무하는 다수의 사용자에게 전달할 수 있다. 센드메일이 참고하는 파일은 /etc/aliases.db 이므로 변경 시에는 ‘newaliases’ 나 ‘sendmail -bi’ 명령을 실행시켜야 적용된다.
NIS 도메인명 설정하기
NIS 서버 구성시 지정한 NIS 도메인명을 설정한다.
NIS 클라이언트도 역시 nisdomainname 이라는 명령을 사용해도 되지만 계속적으로 사용한다면 부팅시에 적용되도록 etc/sysconfig/network 파일에 등록한다.
/etc/vsftpd/vsftpd.conf : vsftpd 의 환경 설정 파일.
vsftpd.conf 파일 주요 항목 분석
anonymous_enable=YES : 익명 계정의 허가 유무를 지정한다.
local_enable=YES : 로컬사용자, 즉 일반 계정 사용자의 허가 유무를 지정한다.
local_umask : 디렉터리나 파일 생성 시 퍼미션 값을 지정한다.
xferlog_enable=YES : 파일 업로드 및 다운로드 관련 로그를 기록할 것인지를 지정한다.
chroot_local_user=YES : 접속한 사용자의 홈 디렉터리를 최상위 디렉터리로 지정한다. 모든 접속자에게 적용된다.
ls_recurse_enable=YES : FTP 서버 접속 상태에서 ls -R 명령 사용시 하위 디렉터리까지 검색 가능 여부를 지정한다.
max_client : 최대 접속자를 지정하는 항목.
max_per_ip : 한 IP 주소 당 허용할 접속수를 지정하는 항목
메일 관련 프로그램의 분류
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이 있는데, 스팸메일 필터링이나 메일 정렬 등의 역할을 한다.
Cw : 메일을 수신할 호스트 이름을 명기하는 항목으로 보통 도메인명을 기입한다.
Fw : 여러 도메인을 사용하는 경우 별도의 파일을 지정하는 항목이다.
Dj : 특정 도메인명으로 지정하여 강제적으로 적용할 때 사용하는 항목이다
log_type
어떠한 형태로 로그를 저장할 것인지를 지정하는데 SYSLOG 와 FILE 두가지 설정이 가능하다.
SYSLOG 는 syslog 에 로그를 위임하는 것이고, FILE 은 직접 별도의 파일로 지정하는 것이다.
사용예
log_type = SYSLOG daemon info
관련 로그를 syslog 에 위임하고 facility 는 daemon, 레벨은 info 로 지정한다.
log_type = FILE /var/log/xinetd.log
관련 로그를 /var/log/xinetd.log 에 기록한다.
DoS(Denial of Service) 공격
DoS(Denial of Service, 서비스 거부) 공격은 시스템이나 네트워크의 구조적인 취약점을 공격하여 정상적인 서비스를 할 수 없도록 방해하는 것으로 보통 과도한 부하를 발생시켜 데이터나 자원을 잠식한다.
Back Door
시스템 설계자나 관리자에 의해 고의로 남겨진 시스템의 보안 허점으로 응용프로그램이나 운영체제에 삽입된 프로그램 코드이다.
시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용 프로그램 또는 시스템에 접근할 수 있도록 한다.
루트킷
특정 권한 획득을 목적으로 하는 프로그램이다.
대표적인 프로그램에는 z2, Es, Fix Sl 등이 있다.
iptables
패킷 필터링 도구로서 방화벽 구성이나 NAT에 사용된다.
사슬
INPUT : 패킷 필터링 및 방화벽 관련 정책들을 설정하는 사슬로 실제적인 접근 통제를 담당하는 역할을 수행
OUTPUT : 다른 시스템으로의 접근을 차단할 때 사용하는 사슬로 리눅스 시스템 자체가 생성하는 패킷을 제어하는 사슬
FORWARD : 리눅스 시스템을 통과하는 패킷을 관리하는 사슬로 한 네트워크를 다른 네트워크와 연결하기 위해 iptables 방화벽을 사용해서 두 네트워크 간의 패킷이 방화벽을 통과하는 경우에 사용되고, NAT 기반으로 하나의 공인 IP를 여러대의 사설 IP를 사용하는 시스템들을 공유해서 사용할 경우 사설 IP를 사용하는 시스템의 접근 제어 정책을 설정할 때 사용한다.
주요 타겟
ACCEPT : 패킷을 허가하는 것으로 본래 라우팅 대로 진행
DROP : 패킷을 거부하는 것으로 더 이상 어떤 처리도 수행되지 않고 버림
LOG : 패킷을 syslog 에 전달하여 기록.
REJECT : 패킷을 버리고 동시에 적당한 응답 패킷을 전달
RETURN : 호출 사슬 내에서 패킷 처리를 계속 진행
SELinux(Security Enhanced)
오픈 소스인 리눅스 커널의 보안을 강화하기 위해 미국의 NSA 에 의해 연구된 프로젝트.
주목적은 특정 데몬의 버그를 통해 root 권한을 획득하더라도 해당 데몬에만 root 권한을 행사할 뿐 다른 데몬이나 시스템에는 접근이 불가능하도록 하여 시스템의 보안을 강화하는데 있다.
DROP : 패킷을 거부하는 것으로 더 이상 어떤 처리도 수행되지 않고 버림
23번 포트 : TELNET 에 사용