시험종목 : 제1602회 리눅스마스터 1급 1차 A형
시험일자 : 2016. 9. 10(토) 14:00 ~ 15:40(100분)
1602 1급1차 기출문제
바로가기 >> 리눅스마스터 기출문제 목록
스왑
하드디스크의 일부를 마치 메모리처럼 사용하게 해주는 기술인 스왑(Swap)은 일반적으로 리눅스 설치 시 설정한다.
그러나 스왑 영역이 부족한 경우 설치 후에도 추가 설정할 수 있다.
가상 메모리는 스왑 파일을 말하는 것으로 하드디스크의 일부를 사용해 사용자의 RAM을 효과적으로 확장해 더 많은 프로그램을 실행할 수 있도록 해준다.
리눅스 기반 모바일 운영체제
안드로이드, 바다, 마에모, 마고, 리모, 타이젠
자유 소프트웨어 재단(Free Software Foundation, FSF) : 1985년 10월 4일 자유 소프트웨어의 생산과 보급을 장려하기 위해 리처드 스톨만이 세운 재단
리눅스 배포판
레드헷 리눅스, 데비안 리눅스, 수세 리눅스, 슬랙웨어, 우분투, 맨드레이크 리눅스, CentOS, 젠투 리눅스, 리눅스민트 등
Ubuntu(우분투) : 영국 회사인 캐노니컬에서 데비안 GNU/Linux를 기초로 하여 만든 리눅스 배포판으로 고유한 데스크톰 환경인 유니티(Unity)를 사용한다.
국외 리눅스 배포판 : 레드햇, 데비안, 수세, 슬렉웨어, 우분투, CentOS, 젠투, 리눅스민트 등
국내 리눅스 배포판 : 와우, 알짜리, 미지리눅스, 다아나, 아시아눅스, SULinux, 안녕리눅스 등
RAID-6
전체적인 구성은 RAID-5와 비슷하지만 디스크에 2차 패리티 구성을 포함하여 매우 높은 고장 대비 능력을 발휘한다.
2개의 패리티를 사용하여 2개의 디스크 오류에도 데이터를 읽을 수 있다.
2개의 패리티를 사용하여 최소 4개의 디스크로 구성해야 하여 RAID-5에 비해 공간 효율성은 떨어진다.
LVM(Logical Volume Manager) : Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램
디렉터리의 종류와 특징
/
최상위에 있는 디렉터리로 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 즉, 예약작업에 관한 파일들이 저장되는 디렉토리.
/etc/rc.d/rc.local
리눅스 부팅과정에서 가장 나중에 실행되는 스크립트 파일
실행 레벨 2, 3, 5에서 가장 마지막에 실행되는 파일로 보통 사용자가 부팅 시에 필요한 서비스 구동할 때 이 파일 안에 등록하여 사용한다
/dev/null
블랙홀처럼 동작하는 특별한 파일. 이 파일로 출력되는 것들은 아무런 흔적도 없이 사라진다. 이 파일의 주 용도는 사용자가 어떤 프로그램의 정규 출력이나 에러 메시지를 내다버리려 할 때 사용하는 것이다.
2> : 표준에러 전환
2>/dev/null : 표준에러를 출력하지 않는다.
Argument 변수
특별한 내장 변수로 ‘위치 매개 변수’ 라고도 한다.
이 변수는 매개 변수를 불러올 때 스크립트의 명령행 인자를 담당한다.
$0 : 실행된 Shell 스크립트명
$1 : 스크립트에 넘겨진 첫번째 Argument
$2 : 스크립트에 넘겨진 두번째 Argument
$# : 스크립트에 넘겨진 Argument 개수
$$ : Shell 스크립트의 PID
$* : 스크립트에 전달된 인자 전체를 하나의 변수에 저장하면 IFS 변수의 첫 번째 문자로 구분
$@ : $* 와 동일 (다른점은 IFS 환경변수를 사용하지 않는다.)
$ : 실행한 뒤의 반환값. 참이면 0 거짓이면 1 이 반환. 최근에 실행된 프로세스 상태값
$- : 현재 Shell 이 호출될 때 사용한 옵션들
시그널
Ctrl+C (SIGINT) : 프로세스를 종료시킨다.
Ctrl+Z (SIGTSTP) : 프로세스를 중단시킨다.
Ctrl+\ (SIGQUIT) : core dump를 남기고 프로세스를 종료시킨다.
bg
포그라운드 프로세스를 백그라운드로 전환하는 명령이다.
CTRL+Z 를 눌러 작업을 일시 중지시킨 후 bg 명령을 사용하여 백그라운드로 전환
사용자가 일반적으로 가장 많이 사용하는 시그널은 SIGTERM과 SIGKILL이다.
kill은 이 외에도 서로 다른 다양한 종류의 시그널을 보내는 것이 가능하다.
기본적으로 보내지는 시그널은 SIGTERM이다.
SIGTERM은 많은 경우 15이고, SIGKILL은 많은 경우 9이다.
chkconfig : 텍스트 기반의 명령형 프로그램으로 실행 레벨에 따른 서비스의 on/off 설정 리스트를 출력하거나 설정한다.
응용 계층
응용 계층은 응용 프로그램과 연계하여 사용자에게 편리한 환경을 제공하는 역할을 수행한다.
전자우편, 웹, 파일전송 등과 같은 응용 프로그램 환경에서 이루어진다.
SSH의 기본포트는 22
서브넷마스크
네트워크를 분할하여 새로운 하위의 네트워크를 구성할 때 사용한다.
32비트의 값으로 네트워크 ID와 호스트 ID를 IP 주소에서 구분하는 역할로 사용.
IP 주소에 대한 Network ID 와 Host ID 를 구분 하기 위해서 사용된다.
IP 주소와 AND 연산을 수행하면 네트워크 주소를 얻을 수 있다.
A 클래스 주소값( 255.0.0.0 ) 호스트개수 16,777,216
B 클래스 주소값( 255.255.0.0 ) 호스트개수 65,536
C 클래스 주소값( 255.255.255.0 ) 호스트개수 256
C 클래스 기준으로 인터넷에 연결가능한 호스트 수는 네트워크 주소, 브로드캐스트 주소, 게이트웨이 주소를 제외한 253개가 된다.
/etc/resolv.conf : 시스템에서 사용하는 네임서버를 설정하는 파일이다. 시스템에 설정된 DNS 서버 주소를 확인할 수 있는 파일.
cat /etc/resolv.conf
nameserver 203.247.23.32
nameserver 168.126.63.1
netstat
네트워크 연결 상태를 출력하는 명령이다.
네트워크 연결 상태 이외에도 라우팅 테이블 정보, 네트워크 인터페이스 상태, 매스커레이드 연결 상태, 멀티캐스트 멤버 등의 정보를 출력한다.
열려있는 소켓들을 확인하기 위한 명령
netstat 의 상태값
TIME_WAIT : 연결은 종료되었으나 원격의 수신 보장을 위해 기다리고 있는 상태
/etc/skel/
useradd가 새로운 계정을 생성할때 /etc/skel/ 디렉토리의 내용들이 사용자의 홈디렉토리로 자동 복사된다.
/etc/default/useradd
별도의 옵션없이 useradd 명령어로 계정 생성시에 기본적으로 적용되는 설정이 들어있는 파일이다.
chage
사용자의 패스워드에 대한 정보를 출력하고 설정하는 명령이다.
etc/shadow 의 날짜 관련 필드 설정을 모두 할 수 있는 명령이다.
-M : 패스워드 변경 없이 사용 가능한 최대 날짜를 지정한다. 즉 한번 설정한 패스워드의 만기일을 지정한다.
-m : 패스워드 변경의 최소 날짜를 지정한다. 즉 패스워드 변경 후 일정기간 사용해야될 최소 날짜수를 지정한다.
chage -M 30 -W 5 -m 7 coraje
corjae 는 최소 30일에 한번은 패스워드를 변경해야함
패스워드 만료 5일전에 사용자에게 알림
잦은 패스워드 변경을 제한하기위해 변경한 패스워드는 7일 동안 유지해야함
groupdel : 생성된 그룹을 삭제하는 명령
users : 시스템에 로그인 되어 있는 사용자의 아이디를 출력해 주는 명령어
who : 시스템에 로그인 되어 있는 사용자를 출력해 주는 명령어
w : 시스템에 로그인 되어 있는 사용자와 사용자가 수행중인 작업을 출력해 주는 명령이다.
id : 시스템에 등록된 아이디에 대한 정보를 출력하느 명령으로 UID, GID, 속한 그룹 정보를 보여준다.
who am i : 자신의 정보 조회
whoami : 자신의 사용자 이름 조회
특수 퍼미션
SetUID(4) : 파일을 실행하는 동안에는 소유자의 권한을 획득하는 허가권. -rwsr-xr-x
SetGID(2) : 파일을 실행하는 동안에는 소유그룹의 권한을 획득하는 허가권. -rwxr-sr-x
Stick Bit(1) : 아무나 읽고 쓰기가 가능하지만 생성한 소유자만이 파일을 지울 수 있는 허가권. 이 권한의 설정은 무조건 other 계층에 설정하도록 되어 있으며 설정하면 other 계층 권한 부분의 x 자리에 t 로 표기된다. drwxrwxrwt
chown : 파일이나 폴더의 소유권을 바꾸기 위해 사용되는 명령어
chown -R : 하위 디렉터리까지 포함
fdisk : 디스크 파티션을 확인하고 추가/삭제하는 명령으로 설정 후에는 반드시 재부팅을 해야 한다.
옵션
-l : 현재 디스크의 파티션 테이블 정보를 출력
-s partition : 특정 파티션의 크기를 출력. 단위는 block.
-v : fdisk의 버전을 출력한다.
mount 마운트
-t fs_type : 파일시스템의 유형을 지정하는 옵션
-o : 마운트할 때 추가 설정을 적용할때 사용하는 옵션으로 다수의 조건을 적용할 때는 콤마로 구분한다.
-o 의 주요항목
-o ro : 읽기 전용으로 마운트한다.
-o rw : 읽기/쓰기 모드로 마운트한다. (기본값)
-o remount : 해당 파티션을 다시 마운트한다. 파티션 정보를 바꾸었을 때 사용한다.
-o loop : loop 디바이스로 마운트할 때 사용.
파일 시스템 유형 : msdos, vfat, ntfs, ext2, ext3, ext4, iso0996, smbfs, cifs, nfs, udf
디스크 쿼터(Quota)
리눅스 시스템은 기본적으로 사용자의 용량을 제한하지 않아서, 특정 사용자가 디스크에 남아 있는 용량을 모두 사용할 수 있다.
따라서 사용자가 많은 서버의 경우에 사용자의 디스크 사용량 제한이 필요한데 이러한 제한을 디스크 쿼터라고 한다.
quotacheck : 디스크를 사용하고 있는 파일 시스템을 체크하여 quota 기록파일을 가장 최근의 상태로 업데이트 시키는 명령이다.
quotaon/quotaoff : 쿼터 설정을 활성화/비활성화 하는 명령이다.
repquota : 파일 시스템 단위로 쿼터 설정 정보를 출력해 주는 명령이다.
quota : 사용자 단위로 쿼터 설정 정보를 출력해주는 명령이다.
setquota : 쿼터를 설정하는 명령으로 vi편집기를 이용하는 대신에 직접 명령행에서 설정 가능하다.
quotacheck -avug
quota 를 적용하기 위해 현재 상태를 체크하기 위한 명령
쿼터 계정 용량 할당
used : 현재 사용량
soft : 현재 설정된 soft limit
hard : 현재 설정된 hard limit
grace : soft limit에 지정된 용량 초과시 남은 유예 기간 표시
/proc
가상 파일 시스템으로 시스템에서 운영되고 있는 다양한 프로세스의 상태 정보, 하드웨어 정보, 기타 시스템 정보 등을 담고 있다
/proc/mdstat : RAID 설정에 관한 상태 정보
‘*’는 모든(all) 을 의미하고, ‘-‘는 연결된 설정 값을 지정할 때 ‘,’은 연결되지 않은 값을 나열할 때 ‘/’는 연결된 설정 값 범위에서 특정 주기로 나눌 때 사용한다.
nice
프로세스의 우선순위를 변경하는 명령으로 NI값을 설정할 때 사용한다. 프로세스에 설정되어 있는 NI의 기본값은 0 이고 지정가능한 값의 범위는 -20 ~ 19 까지인데 값이 작을수록 우선순위가 높다. 일반 사용자는 NI값을 증가만 가능하고 root 사용자만이 NI 값을 감소시켜 우선순위를 높일 수 있다.
kill : 프로세스에 특정한 시그널(signal)을 보내는 명령으로 옵션 없이 실행하면 프로세스에 종료 신호(15, TERM, SIGTERM)를 보낸다.
보통 중지시킬 수 없는 프로세스를 종료시킬 때 많이 사용한다.
-l : 시그널의 종류를 출력한다.
-s : 시그널의 이름을 지정하는 옵션이다.
killall : 같은 데몬의 여러 프로세스를 한번에 종료시킬 때 사용하는 명령으로 프로세스명을 사용한다.
패키지 버전은 8.12.8 이고 릴리즈 버전은 6 이다.
dpkg(Debian Package)
데비안 패키지 관리 도구
데비안 리눅스는 dpkg 라는 데비안 패키지 관리도구를 사용한다.
dpkg -r <pkg> : 패키지 삭제
cmake
cmake는 소스 컴파일 시 사용되는 Make의 대체프로그램으로 멀티플랫폼을 지원하기 위한 목적으로 등장한 오픈소스 프로젝트이다.
cmake를 사용하는 대표적인 프로그램에는 mysql이 있는데, configure와 make 작업을 cmake로 통합해서 설치 가능하다.
소스 설치법
리눅스에서 소스 프로그램을 설치하기 위해서는 보통 압축풀기 > 디렉터리 이동 > configure > make > make install 의 5단계를 거친다.
gzip : GNU 에서 만든 압축 프로그램으로 유닉스용 압축 프로그램인 compress 를 대체하기 위해 만들어졌다. 압축 해제는 gunzip
bzip2 : gzip 보다 압축률은 좋지만 시간이 더 걸린다. 압축 해제는 bunzip2
xz : 데이터 무손실 압축 프로그램. gzip, bzip2 와 비교하여 매우높은 압축률을 자랑한다. 압축해제는 unxz
모듈은 ‘/lib/moudles/커널버전’ 디렉터리에 위치한다.
modprobe
모듈적재 depmod에 의해 갱신된 modules.dep에서 찾아 적재한다.
insmod와 달리 해당 커널 디렉토리로 갈 필요없이 아무위치에서나 모듈을 적재할 수 있다.
또한 의존성이 필요한 모듈이나 먼저 실행되어야 할 모듈이 있다면 그 모듈부터적재하고 해당모듈을 적재한다.
리눅스 커널에 모듈을 적제하거나 제거하는 명령이다.
insmod 나 rmmod 명령은 다른 모듈에 의존되어 있는 경우에는 사용 불가하나 modprobe 는 단일 모듈, 의존성이 있는 모듈, 특정 디렉터리의 모든 모듈들을 적재할 수 있다.
이 명령어는 최상위 모듈 디렉터리에 존재하는 modules.dep 파일을 참고해 모듈간의 의존성을 해결한다.
modprobe -r : 모듈을 제거할 때 사용하는 옵션으로 의존성이 있는 모듈들을 찾아서 사용되지 않는다면 자동으로 제거한다.
modules.dep : 모듈 의존성 파일. 모듈 간의 의존성을 기록한 파일
커널 컴파일 순서
1. 커널 소스 파일 압축해제
2. 커널 소스의 설정값 초기화(make mrproper)
3. 커널 컴파일 옵션 설정 작업(make menuconfig)
4. 커널 이미지 파일 생성 작업(make bzimage)
5. 커널 모듈 생성을 위한 컴파일 작업(make modules)
6. 커널 모듈 설치 작업(make modules install)
7. 커널 모듈 파일 복사, grub.conf 파일 수정(make install)
8. 새로운 커널 사용을 위한 시스템 재부팅
make menuconfig : 텍스트 기반의 컬러 메뉴를 제공하고 커서를 이용해서 이동이 가능하다.
make xconfig : X 윈도 환경의 Qt 기반의 설정도구
45번 문제에서는 make menuconfig 대신 make xconfig 를 사용
/proc/partitions
현재 활성화된 파티션 정보를 기록하고 있는 파일이다.
alsamixer is a graphical mixer program for the Advanced Linux Sound Architecture
SANE(Scanner Access Now Easy)
SANE 은 평판 스캐너, 핸드 스캐너, 비디오 캠 등 이미지 관련 하드웨어를 사용할 수 있도록 해주는 API 이다.
GPL 라이선스로 대부분의 운영체제를 지원한다.
XSane : graphical scanning frontend
lpr : 프린터 작업을 요청하는 명령
lpq : 프린터 큐(Queue) 에 있는 작업의 목록을 출력는 명령
lprm : 프린터 큐에 대기중인 작업을 삭제하는 명령
lpc : 라인 프린터 컨트롤 프로그램 으로 프린터나 프린터 큐를 제어할 때 사용.
lp : System V 계열에서 사용하는 인쇄 명령으로 BSD 계열의 lpr 명령과 유사하다.
lpstat : 프린터 큐의 상태를 출력 해주는 명령. 프린터 작업 상태를 확인할 수 있는 명령
IPP (Internet Printing Protocol)
rsyslog
syslog 를 대체하는 시스템 로그 및 커널 메시지 관련 데몬으로 최근 리눅스는 이 로그 데몬을 사용한다.
멀티 스레드를 지원하고 TCP 프로토콜도 지원하다.
아울러 MySQL, Oracle 과 같은 데이터베이스 로그 관리도 가능하다.
rsyslogd 데몬이 동작하면서 로그를 기록하고, 데몬의 동작은 /etc/rc.d/init.d/rsyslog 라는 스크립트를 이용한다.
관련 환경 설정은 /etc/rsyslog.conf 파일을 통해 제어한다.
dmesg
커널 링 버퍼의 내용을 출력하고 제어하는 명령이다.
커널 링 버퍼는 커널의 동작과 관련된 메시지를 기록해 주는 영역이다.
/var/log/dmesg : 시스템이 부팅할 때 출력되었던 로그가 기록되는데 보통 커널 부트 메시지 로그 라고 한다.
로그 관련 주요 파일
/var/log/messages
시스템에서 발생하는 표준 메시지가 기록되는 파일
/var/log/secure
인증에 기반한 접속과 관련된 로그가 기록되는 파일
/var/log/dmesg
시스템이 부팅할 때 출력되었던 로그가 기록되는데 보통 커널 부트 메시지 로그 라고 한다.
/var/log/mailog
메일 관련 작업이 기록되는 로그 파일
/var/log/xferlog
FTP 접속과 관련된 작업이 기록되는 파일
/var/log/cron
cron 관련 정보가 기록되는 파일
/var/log/boot.log
부팅시 발생되는 메시지가 기록되는 파일
/var/log/lastlog
telnet 이나 ssh 를 이용해서 접속한 각 사용자의 마지막 정보가 기록되는 파일
/var/log/wtmp
콘솔, 텔넷, ftp 등을 이용하여 접홋한 사용자의 기록, 시스템 재부팅 기록등의 로그가 기록되는 파일
/var/log/btmp
wtmp 와 반대되는 로그로 접속이 실패한 경우를 기록한다.
SetUID : 파일을 실행하는 동안에는 소유자의 권한을 획득하는 허가권
SELinux(Security Enhanced)
오픈 소스인 리눅스 커널의 보안을 강화하기 위해 미국의 NSA 에 의해 연구된 프로젝트.
주목적은 특정 데몬의 버그를 통해 root 권한을 획득하더라도 해당 데몬에만 root 권한을 행사할 뿐 다른 데몬이나 시스템에는 접근이 불가능하도록 하여 시스템의 보안을 강화하는데 있다.
기본적인 적용 확인 및 변경은 /etc/selinux/config 에서 vi 편집기 등을 이용한다.
Shell 에서는 getenforce(확인) 및 setenforce(설정) 명령으로 확인 및 설정이 가능하다
sysctl : 커널 변수의 값을 제어하여 시스테을 최적화할 수 있는 명령이다.
tar(tape archive) : 테이프 관련 장치를 이용하여 백업할 때 사용하는 명령이었으나 현재는 여러 파일들을 하나의 파일로 묶어주는 명령으로 사용한다.
cpio(copy input to output) : tar 와 비슷한 유틸리티로 많은 양의 데이터에 대해서는 tar 보다 빠르다.
rsync
네트워크로 연결된 원격지의 파일들을 동기화하는 유틸리티.
옵션
-r : 하위 디렉터리까지 실행
-l : 심볼릭 링크를 그대로 보존
-p : 퍼미션을 그대로 보존
-t : 타임스탬프를 그대로 보존
-g : 그룹 소유권을 그대로 보존
-o : 소유권을 그대로 보존
-D : 디바이스 파일을 그대로 보존
-H : 하드링크를 그대로 보존
-a : -rlptgoD를 한번에 실행할때 사용하는 옵션
-v : 진행상황을 자세히 출력
-u : 업데이트된 내용만 전송
-z : 전송할때 압축
dump 및 restore
파일들이 아닌 파일 시스템 전체를 백업할 때 사용하는 유틸리티로 보통 파티션 단위로 백업할때 많이 사용한다.
전체 백업과 증분 백업을 지원하고 0~9 단계의 레벨을 가지고 증분 백업을 지원한다.
레벨 0이 전체 백업이고 나머지 레벨들은 부분 백업 시에 사용한다.
백업할 때 /etc/fstab/ 파일을 참조하며 데이터 복원은 restroe 명령을 사용한다.
여러개의 테이프에 백업할 수 있다.
어떤 타입의 파일도 백업, 복구될 수 있다.
파일에 대한 접근권한, 소유자 등의 사항도 복구될 수 있다.
결함을 가진 파일들도 바르게 다뤄진다.
백업이 기존 파일에 내용을 더하면서 수행될 수 있다.
HEAD
GET과 같은 요청이지만, 자료에 대한 정보(meta-information)만을 받는다.
GET
URL에 해당하는 자료의 전송을 요청한다.
POST
서버가 처리할 수 있는 자료를 보낸다.
PUT
해당 URL에 자료를 저장한다.
DELETE
해당 URL의 자료를 삭제한다.
TRACE
이전에 요청한 내용을 들을 것을 요청한다.
OPTIONS
서버가 특정 URL에 대해 어떠한 HTTP Method를 지원하는지 묻는다.
CONNECT
프록시가 사용하는 요청.
HTTP 상태코드
200 OK
클라이언트 요청에 성공적으로 접속
400 Bad Request
403 Forbidden
404 Not Found
500 server error
UserDir 지시어는 사용자별 페이지를 가져올 디렉토리를 지정한다
htpasswd
아파치 사용자 인증 파일을 생성하고 관리해 주는 명령
-c : 사용자 계정 파일을 생성할 때 사용하는 옵션으로 계정 생성할 때 반드시 한번은 사용해야 한다.
o : 조직 이름
ou : 조직의 부서 이름
cn : 일반적으로 이름과 성의 조합
sn : 성을 나타냄
c : 국가 이름
LDAP (Lightweight Directory Access Protocol 경량 디렉터리 접근 규약)
IP프로토콜을 기반으로 사용자, 시스템, 네트워크, 서비스 정보 등의 디렉터리 정보를 공유할 수 있다.
NIS
하나의 서버에 등록된 사용자 계정, 암호, 그룹정보 등을 공유하여 다른 시스템에 제공하는 서비스를 말한다.
NFS
TCP/IP 네트워크상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉터리인 것처럼 사용할 수 있게 해준다.
RPC(remote procedure call, 원격 프로시저 호출)
별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술
ypserv : NIS 서버에서 사용하는 데몬
ypbind : NIS 클라이언트에서 사용하는 데몬
NIS 서버에서 구동해야 하는 데몬은 ypserv 클라이언트에서 구동해야 하는 데몬은 ypbind 이다.
NIS 는 RPC 를 사용하기 때문에 관련 호출을 처리하는 데몬을 반드시 구동시켜야 한다.
초기에는 portmap 데몬이 그역할을 수행하였으나 현재는 rpcbind 데몬이 대신하고 있다.
/var/yp
NIS 서버에서 관련 맵파일이 생성되는 디렉터리
NIS 서버에서 각종 정보를 담고 있는 데이터베이스 맵 파일이 위치하는 디렉터리
정보 갱신을 위한 make 작업을 수행하면 /var/yp 디렉터리에 지정한 nis 서버 이름으로 된 디렉터리가 생성된다.
그 디렉터리 안에 관련 정보를 가지고 있는 맵 파일들이 생성되는데, 서버에서 사용자들이 새롭게 추가되면 해당 맵 파일들도 지속적으로 갱신시켜줘야한다.
passwd.byname
NIS 서버에서 데이터베이스 갱신 시에 생성되는 파일
사용자의 계정정보를 담고 있다.
#ypcat passwd.byname
NIS 클라이언트에서 사용자 정보를 조회하는 명령
Share Definitions 의 주요 옵션
comment : 간단한 설명을 설정
path : 공유 디렉터리의 경로를 설정
read ondy : 공유 디렉터리를 읽기 전용으로 설정
writable, write ok : 공유 디렉터리를 쓰기 가능하게 설정
valid users : 공유 디렉터리를 이용할 수 있는 사용자를 지정
write list : 공유 디렉터리에 접근 및 쓰기 권한을 행사할 수 있는 사용자를 지정
public, guest ok : 다른 사용자들이 이용할 수 있도록 설정
testparm : 삼바의 환경설정 파일인 smb.conf의 설정여부를 확인한다.
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) 로 매핑시킨다.
showmount
NFS 서버의 마운트 관련 정보를 출력하는 명령이다. NFS 클라이언트에서 NFS서버의 익스포트된 정보를 확인할 때도 사용한다.
-a : ‘호스트명: 디넥터리’ 형태로 출력
-e [호스트명] : 익스포트된 리스트를 출력
$ showmount -e 192.168.12.22
192.168.12.22 번 IP 주소를 사용하는 NFS 서버의 export 항목 리스트를 확인하는 명령
19번 : CHARGEN (Character Generator) 프로토콜
20번 : FTP (파일 전송 프로토콜) 데이터 포트
21번 : FTP 제어 포트
22번 : SSH (Secure Shell)
23번 : 텔넷 프로토콜
24번 : 개인 메일 시스템
25번 : SMTP (Simple Mail Transfer Protocol)
/etc/aliases
특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정하는 파일이다. 보통 동일한 계정으로 들어오는 메일을 여러 사용자에게 전달하는 메일링 리스트가 필요한 경우에 유용하다. 센드메일이 참고하는 파일은 /etc/aliases.db 이므로 변경시 newaliases 나 sendmail -bi 명령을 사용해야 한다.
RELAY : 특정 호스트나 도메인의 접근을 허용
REJECT : 메일을 거절하고, 거부 메시지를 보냄
DISCARD : 메일을 거부 메시지 없이 무조건 거절
zone 구문
zone 구문의 작성 형식은 다음과 같은 형식을 사용해야 된다. ‘ | ‘ 는 or 을 뜻한다.
zone ” Domain ” IN {
type [ hint ; | master ; | slave ; ]
file “File_name” ;
….
};
type
네임서버의 타입을 설정하는데 master, slave, hint 를 설정할 수 있다.
hint : 루트 도메인( . ) 정의할 때 사용한다.
master : 1차 네임서버를 정의할 때 사용한다.
slave : 2차 네임 서버를 정의할 때 사용한다.
존 설정파일 주요 타입
A : IPv4의 주소를 기입할 때 사용
AAAA : IPv6의 주소를 기입할 때 사용
NS : 도메인의 네임 서버를 지정할 때 사용
MX 메일 서버를 지정할 때 사용한다.
CNAME : Canonical Name 레코드의 일종으로 alias를 지정할 때 사용
PTR : 리버스 존에서만 사용하는 레코드로 IP주소를 도메인으로 변환하기 위해 지정한다.
www IN A 192.168.12.22
www1 IN CNAME www
www2 IN CNAME www
PTR
리버스 존에서만 사용하는 레코드로 IP주소를 도메인으로 변환하기 위해 지정한다.
125 IN PTR linux.com.
SOA record
존 파일을 시작하는 레코드로 시작은 도메인명 또는 도메인명을 나타내는 기호인 @ 를 사용한다.
$TTL 84600
@ IN SOA linux.com. centos.com.
allow-query { 192.168.0/24; }
네임 서버에 질의할 수 있는 호스트를 지정한다. 위와 같이 지정하면 192.168.0.0 네트워크 대역에 속한 호스트만이 질의할 수 있다.
Docker
경량화된 가상화 기술의 일종으로 하이퍼바이저나 게스트 운영체제 없이 서버 운영에 필요한 프로그램과 라이브러리만 격리해서 설치 및 사용 가능하다.
서버 가상화의 특징
장점
효율적인 서버 자원의 이용
관리의 최적화
응급 재새 시 서비스 중단 없는 빠른 서비스 복구
서버 트래픽 증가에 따른 유연한 대처
데이터 및 서비스 가용성 증가
보안강화
신규 서버 구입에 필요한 하드웨어 비용 지출의 감소
전체적인 관리 비용 절약
서버가 차지하고 있는 공간 절약
전원 절약을 통한 데이터 센터의 효율성 증대
단점
시스템의 복잡성
장애 발생시 문제 해결의 복잡함
호환성 및 확장성
소프트웨어 라이선스 문제
OpenStack
XEN, KVM 등으로 나누어서 운영된는 가상화 환경을 통합 관리할때 유용한 프로그램
퍼블릭 및 프라이빗 클라우드 구축을 위한 확장형 오픈 플랫폼
마이크로소프트 하이퍼 V(Hyper-V) : x64 시스템을 위한 하이퍼바이저 기반의 가상화 시스템이다.윈도우 서버 가상화
libvirtd 데몬 실행
리눅스 기반 가상화 구축 후에 실행해야 하는 데몬
가상화 운영을 위해 가상화 API 역할을 수행하는 libvirtd 데몬을 샐행해야 한다.
# service libvirtd start
disable = no : 해당 서비스의 실행 유무를 지정하는 항목.
no 로 설정하면 서비스를 사용. yes 로 설정하면 해당 서비스를 사용하지 않는다.
fixed-address
DHCP 서버에서 특정 호스트에게 고정된 IP를 할당하기 위한 설정
host posein_pc {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 192.168.1.22;
}
VNC(Virtual Network Computing, 가상 네트워크 컴퓨팅)
컴퓨터 환경에서 RFB 프로토콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템
RFB(Remote Frame Buffer) 프로토콜을 이용하여 원격의 다른 컴퓨터에서 그래픽 환경 기반으로 데스크톱을 공유할 수 있는 시스템이다.
DOS 공격
creat() : 디스크 자원 고갈
malloc() : 메모리 자원 고갈
fork() : 프로세스 자원고갈
iptables
패킷 필터링 도구로서 방화벽 구성이나 NAT에 사용된다.
ACCEPT : 패킷을 허가하는 것으로 본래 라우팅 대로 진행
DROP : 패킷을 거부하는 것으로 더 이상 어떤 처리도 수행되지 않고 버림
LOG : 패킷을 syslog 에 전달하여 기록.
REJECT : 패킷을 버리고 동시에 적당한 응답 패킷을 전달
RETURN : 호출 사슬 내에서 패킷 처리를 계속 진행
INPUT
패킷 필터링 및 방화벽 관련 정책들을 설정하는 사슬로 실제적인 접근 통제를 담당하는 역할을 수행한다.
-A : 사슬에 새로운 규칙을 추가한다.
-D : 사슬의 규칙을 제거한다.
-R : 사슬의 규칙을 교환한다.
-F : 사슬로부터 규칙을 제거한다.
주요 매치
-s : 출발지 IP주소나 네트워크와 매칭
-d : 목적지 IP주소나 네트워크와 매칭
-p : 특정 프로토콜과 매칭
-i : 입력 인터페이스와 매칭
-o : 출력 인터페이스와 매칭
방화벽의 종류
(1) 배스천 호스트
배스천 호스트는 방화벽 시스템에서 접근 제어, 응용 시스템의 게이트로서 가상 서버의 설치, 인증, 로그 등을 담당한다. 이
호스트가 외부에 노출되어 공략 대상이 되는 시스템이므로 최소한의 서비스만 가능한 상태로 구성한다.
(2) 스크린 라우터
스크린 라우터는 방화벽 역할을 수행하는 라우터로써 외부 네트워크와 내부 네트워크의 경계에 위치한다. 낮은 수준의 접근
제어를 지원한다.
(3) 단일 홈 게이트웨이
스키린 라우터보다 좀 더 발전된 형태의 방화벽으로 이 구조를 배스천 호스트라 부르기도 한다. 접근제어, 프록시, 인증, 로깅
등 방화벽의 가장 기본적인 기능을 수행한다.
(4) 이중 홈 게이트웨이
최소 2개 이상의 네트워키 카드를 이용해서 구성하는 방화벽으로 하나의 네트워크로부터 전송된 패킷이 다른 네트워크로 직
접 전송되지 않고 게이트웨이로 정의된 장치와 통신하게 된다.
(5) 스크린 호스트 게이트웨이
스크린 라우터와 단일 홈 게이트웨이를 조합한 형태로 스크린 라우터에서 패킷 필터링을 1차로 수행하고, 배스천 호스트 역
할을 수행하는 단일 홈 게이트웨이에서 프록시와 같은 서비스를 통해 2차 방어를 한다. 또한 배스천 호스트는 스크린 라우터
를 거치지 않은 모든 접속을 거부하며 스크린 라우터도 배스천 호스트를 거치지 않는 모든 접속을 거부하도록 설정한다.
(6) 스크린 서브넷 게이트웨이
스크린 서브넷 게이트웨이는 외부 네트워크와 내부 네트워크 사이에 완충지대를 두는 방식으로 완충지대의 네트워크를 서브
넷이라고 부른다. 다른 방화벽의 장점을 모두 갖추고 있으며 융통성이 매우 뛰어나다. 그러나 다른 방화벽에 비해 설치와 관
리가 어렵고, 서비스 속도가 느리며 비용이 많이 들어간다.
Dos 및 DDos 공격에 대한 대응책
– 방화벽을 이용하여 패킷 및 포트 필터링을 통한 진입 차단
– 침입 탐지 시스템(IDS)을 이용한 공격 탐지
– 침입 방지 시스템(IPS)을 이용한 대처
– 취약점 및 버그를 이용한 악성코드 및 침입 방지를 위한 시스템 패치
– 안정적인 네트워크 설계
– 다양한 보안 툴을 활용하여 DoS 공격 탐색과 제거
– 로드 밸런싱을 통한 대용량 트래픽 분산 처리 및 네트워크 성능 강화
– 서비스별 대역폭 제한
– 불필요한 서비스 제거