CH.7 네트워크 서비스
1. 웹 관련 서비스
1-1. 웹 관련 서비스의 이해
※ 웹(Web)
- HTML (Hyper Text Markup Language) : 웹 페이지를 만들기 위한 마크업 언어
- HTTP 프로토콜이 사용되고 W3C에서 주관하여 개발
- 주요 웹 브라우저 종류
- chromium : 구글 크롬으로 더 잘 알려져 있는 브라우저. 속도가 빠르고 다양한 플러그인이 존재한다.
- FireFox : 모질라 재단에서 개발한 게코 엔진 기반의 오픈 소스 웹 브라우저
- Opera : 노르웨이에서 개발된 블링크 엔진 기반의 웹 브라우저
- Safari : 애플에서 개발한 Webkit 엔진 기반의 웹 브라우저. IOS를 위한 브라우저이다.
※ HTTP (HyperText Transfer Protocol)
- 웹에서 웹 페이지를 가져오기 위한 프로토콜
- 요청 메소드
- GET : 요청 데이터에 대한 인수를 URL에 포함시켜 전송하는 방식
- POST : HTTP Body 영역에 소켓을 이용하여 전송하는 방식
- 상태코드
200 | OK | 요청 정상 처리 |
301 | Moved Permanently | 요청된 정보의 위치가 영구적으로 변경됨을 알림 |
302 | Found | 요청된 정보의 위치가 일시적으로 변경됨을 알림 |
400 | Bad Request | 잘못된 요청으로 처리 불가 |
403 | Forbidden | 접근 권한이 없음 |
404 | Not Found | 요청한 페이지가 없음 |
500 | Internal Server Error | 내부 서버 오류 |
1-2. 웹 관련 서비스의 운영
※ 웹 서버 종류
- Apache, IIS, Nginx 등이 있으며, 그 중 Apache가 가장 많이 쓰이고 있다.
- Nginx (엔진엑스)
- 비동기 이벤트 기반 구조
- 웹 서버, 리버스 프록시 및 메일 프록시 기능을 지원
- Apache
- 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 개발했고, 현재 가장 많이 쓰이고 있는 웹 서버
- 리눅스, 유닉스 계열 뿐만 아니라 윈도우에서도 운용 가능
※ Apache 웹 서버
- 설치 방식
- DSO(Dynamic Shared Object) : 처음 컴파일 이후 모듈 추가 시 다시 컴파일 할 필요가 없음
- /usr/local/apache/modules 디렉터리에 모듈이 생성된다.
- DSO(Dynamic Shared Object) : 처음 컴파일 이후 모듈 추가 시 다시 컴파일 할 필요가 없음
- MPM(Multi-Processing Module)
- 아파치가 받아들인 요청을 처리하기 위해 자식 프로세스에세 분배하는 방식
- Prefork 방식과 Worker 방식이 존재
- Prefork 방식 : 하나의 자식 프로세스 당 하나의 쓰레드를 사용하는 방법
- Worker 방식 : 하나의 자식 프로세스 당 여러 개의 쓰레드를 사용하는 방법
- 소스 파일로 설치 시 configure 옵션
- [--prefix=DIRECTORY] : DIRECTORY에 지정한 디렉터리에 아파치를 설치한다.
- [--enable-mods-shared-MODULE_LIST] : 지정 모듈을 동적 모듈로 컴파일
- [--enable-so] : DSO 기능 활성화
- 서버 환경 설정 (httpd.conf)
# vi httpd.conf | |
Server Type | 서버 타입 설정 (Standalone / inetd) |
ServerRoot | 웹 서버의 홈 디렉터리 설정 |
PidFile | 웹 서버 가동시 자신의 PID를 기록할 파일 |
Listen | 웹 서버 데몬의 리스닝 포트 설정 |
ServerToken | 헤더의 Server 필드를 통해 제공할 정보 수준 |
ServerAdmin | 웹 문서 로딩 에러 발생시 에러 페이지에 표시 |
Timeout | 아무런 작업을 하지 않은 세션 유지 시간 |
MaxClient | 동시 연결 가능한 최대 클라이언트 수 |
Keep Alive | 클라이언트와 연결된 작업 프로세스가 계속 요청을 처리할 지(On), 새로운 프로세스가 처리할지(Off) 설정 |
Max Keep Alive Request | Keep Alive On 일 경우, 요청 작업의 최대 개수 |
KeepAliveTimeout | Keep Alive On 일 경우, 요청이 없는 세션 유지 시간 |
HostnameLookups | DNS에 대한 역검색 여부 |
DocumentRoot | 웹 문서의 기본 디렉토리 설정 |
LoadModule | DSO를 사용하기 위해 모듈을 지시하는 설정 |
<Directory "/" > | 특정 디렉토리를 제어할 때 사용하는 태그 |
Options -Indexes-FollowSymLinks | -Indexes : 디렉터리 인덱싱/리스트 제한 -FollowSymLinks : 심벌릭 링크 접근 제한 |
DirectoryIndex | 해당 디렉터리 접근 시 가장 먼저 클라이언트에게 전달할 문서 지정 |
</Directory> | |
<IfModule mod_userdir.c> | |
UserDir | 개인 홈페이지 디렉터리 설정 |
AddType application/x-httpd-php .php .html | php, html 확장자를 php 타입으로 실행 |
AddType application/x-httpd-php-source .php | phps 확장자는 php 소스를 확인 |
</IfModule> |
- 가상 호스트 환경 설정 파일 (httpd-vhosts.conf)
- 하나의 IP 주소에 여러 도메인을 사용하는 경우에 설정한다.
- htpasswd 명령어
- 특정 페이지를 제한하기 위해 인증을 요구하고 그 인증에 대한 관리를 하는 명령어
- 제한하고 싶은 아파치 내 디렉터리로 이동하여 .htaccess 파일을 만들어야 한다.
- [-c] : 지정한 디렉터리에 사용자 계정 및 패스워드를 생성
- # htpasswd -c /var/www/html/.htpasswd admin -> /var/www/html 디렉터리에 대한 admin 계정, 패스워드를 생성
- 처음 추가 이후에는 [-c] 옵션 없이 추가한다.
- [-D] : 지정한 디렉터리에 생성한 사용자 계정을 삭제
- apachectl : 명령어
- [start] : 아파치 서버 시작
- [stop] : 아파치 서버 중지
- [restart] : 아파치 서버 재시작
- [graceful] : 현재 연결을 끊지 않은 상태로 재시작 (설정을 변경한 경우에 적용)
※ APM
- Apache, PHP, MySQL을 묶어 부르는 말
- PHP(Power Hypertext Preprocessor)
- 동적 웹 페이지를 만들기 위한 프로그래밍 언어
- PHP5 설치 시 생성되는 모듈 : libphp5.so
- PHP 작성 시 <? ~ ?> 태그를 사용한다.
- MySQL
- 오픈 소스의 관계형 데이터베이스 관리 시스템
- mysql_install_db : 최초 설치 후 기본 DB 생성할 때 사용하는 명령어
1-2. DB 관련 서비스의 운영
※ 데이터 베이스
- 개념
- 통합된 데이터 (Integrated Data) : 원칙적으로 똑같은 데이터가 중복되어 있지 않지만, 의도적인 중복이 있을 수 있다.
- 저장된 데이터 (Stored Data)
- 운영 데이터 (Operational Data) : 어떤 기능을 수행하기 위해 반드시 유지해야 할 데이터가 존재한다.
- 공용 데이터 (Shared Data) : 데이터가 하나의 어떤 것에 한정되어 지지 않고 여러 존재들이 해당 데이터를 공동으로 이용할 수 있다.
- MySQL
- 많이 사용되는 RDBMS(관계형 데이터베이스 관리 시스템)
- 오픈 소스 프로그램이며, 다양한 OS를 지원
- Oracle DB
- 오라클 사에서 개발한 상업용 RDBMS
- 유닉스/리눅스 환경에서 가장 많이 사용 됨
- 대량의 데이터 처리에 특화
- PostgreSQL
- 객체-관계형 DB 관리 시스템(ORDBMS)\
- 특징으로는 객체 생성의 유연함, 상속 기능 등이 있다.
- SQLite
- 임베디드 RDBMS
- 일반적인 RDBMS에 비해 대량의 데이터 처리에는 적합하지 않다.
- 데이터를 저장하는 데에 하나의 파일만을 사용한다.
- NoSQL (Not Only SQL)
- 전통적인 RDBMS보다 덜 제한적인 일관성 모델을 이용한다.
- RDBMS가 아닌 키와 값 형태로 저장되고, 키를 통해 데이터를 관리 및 접근한다.
- 대용량 데이터 처리, 데이터 분산 처리, 빠른 읽기/쓰기 속도의 장점을 가지고 있다.
- 종류 : Key-value 기반(Riak, …) / Document 기반(Mongo DB, …) / Big Table 기반(Hbase, …) / …
- Mongo DB
- NoSQL이며 Document 기반의 DB이다.
- 오픈 소스 프로그램이며, NoSQL의 가장 유명한 DB이다.
- 각 객체의 구조가 뚜렷하며, RDBMS처럼 고정된 Schema 및 복잡한 JOIN이 없다.
※ CGI (Common Gateway Interface)
- 외부의 프로그램을 실행시켜 그 결과를 HTML로 돌려줌
- CGI 프로토콜이 단순하여 사용하기 쉽다.
- CGI 스크립트는 어떤 언어로도 코딩될 수 있으나 프로세스의 생성과 초기화에 많은 시간이 소요된다.
※ Apache Tomcat
- 웹 서버와 연동하여 실행 가능한 자바 환경을 제공하여 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하는 웹 어플리케이션 서버(WAS)
- 오픈 소스 프로그램
2. 파일 관련 서비스
2-1. SMB 서버 관리
※ 삼바(Samba)
- Windows 클라이언트에서 유닉스 서버에 있는 파일 / 프린터를 공유할 수 있게 해주는 오픈 소스 소프트웨어
- SMB 프로토콜을 유닉스 환경에서 구현한 프리웨어. GPL 라이선스를 따르고 있다.
- SMB(Server Message Block) : 삼바 표준 프로토콜
- CIFS(Common Internet File System) : 네트워크를 위한 SMB 프로토콜의 확장된 버전
※ 관련 명령어 / 파일
- testparm 명령어 : smb.conf 파일을 점검하는 명령어
- smbclient 명령어
- windows 공유 폴더에 접근하기 위한 명령어
- 형식
- # smbclient //[HOSTNAME | IP]/[SHARE_NAME(디렉터리)]
- # smbclient \\\\[HOSTNAME | IP]\[SHARE_NAME(디렉터리)]
- [-U] : 로그인할 SMB 사용자 이름 지정
- [-L] : 지정한 윈도우 host의 공유 폴더를 확인
- smbpasswd 명령어
- 삼바 접근을 위한 계정을 관리하는 명령어
- [-a] : 계정 추가
- [-d] : (disable) 지정한 계정을 사용하지 못하도록 설정
- [-e] : (enable) 사용 중지된 계정을 다시 사용할 수 있도록 설정
- [-x] : 지정한 계정을 삭제
- [-n] : 지정한 계정의 패스워드를 삭제 (패스워드 없이 로그인 가능)
- 옵션 없이 사용 시 지정한 계정의 패스워드를 변경
- pdbedit 명령어
- [-L] : 삼바에 등록된 모든 계정의 정보를 출력 (USERNAME : UID : GROUP)
2-2. NFS 서버 관리
※ NFS (Network File System)
- 네트워크 파일 시스템, 네트워크 상의 다른 컴퓨터에 있는 파일이나 파일 시스템을 공유하기 위한 시스템
- RPC (원격 프로시저 호출)을 사용
- 서버 환경 설정 (/etc/exports 파일)
- 형식 : [마운트 디렉터리][마운트 허용 클라이언트]([옵션])
- ro : 공유된 자원을 읽기만 가능
- rw : 공유된 자원을 읽기/쓰기 가능
- root_squash : root 권한으로 접근 시 nobody 사용자로 변경하여 마운트
- no_root_squash : root 권한으로 접근 가능
- all_squash : 모든 사용자의 권한을 nobody 사용자로 변경하여 마운트
- no_all_squash : root를 제외한 사용자에 대해 같은 UID를 가진 사용자에게 동일한 권한으로 마운트
- sync : 파일 시스템 내 데이터 변동 시 즉시 동기화 처리
- async : 파일 시스템 내 데이터 변동 시 비동기적으로 처리
※ 관련 명령어
- shutdown 명령어
- NFS/NIS의 마운트 정보를 출력
- [-a] : 모든 원격 마운드 정보 출력
- [-e] : export된 (공유되거나 내보낸) 디렉터리의 정보 출력
- exportfs 명령어
- NFS 서버를 다시 시작하기 않고 공유 정보를 수정하거나 출력하는 명령어
- [-a] : /etc/exports 파일을 읽음
- [-r] : /etc/exports 파일을 다시 읽음
- [-v] : 현재 공유 목록을 출력
- rpcinfo 명령어
- RPC 정보를 출력하는 명령어
2-3. FTP 서버 관리
※ /(File Transfer Protocol)
- 네트워크상의 컴퓨터들 간에 파일을 교환하기 위한 프로토콜
- 포트번호 : TCP/20(data), TCP/21(control)
- 종류 : vsftpd, proftpd, ...
※ vstpd(Very Secure FTP Demon)
- 보안이 강화된 FTP 데몬, 많은 배포판에서 기본 FTP로 채택된 데몬이다.
- /etc/vsftpd/ftpuser 파일
- ftp 서버 접근을 제한할 계정 목록을 저장
※ proftpd
- 서버 환경 설정 (/etc/proftpd.conf)
# vi proftpd.conf | |
ServerName | FTP 서버 이름을 설정 |
ServerType | 데몬 구동 방식 설정 (standalone / xinetd) |
Port | 리스닝 포트 번호 설정 |
Umask | 로컬 계정 사용자들의 umask값 설정 |
MaxInstances | 최대 FTP 접속 클라이언트 수 설정 |
User | FTP 실행 시 사용할 사용자 명 설정 |
Group | FTP 실행 시 사용할 그룹 명 설정 |
TimeoutIdle | idle(유휴) 시간에 대한 타임아웃 값 설정 |
<Directory /*> AllowOverwrite on </Directory> |
지정한 디렉터리에 대한 설정 (여기서는 루트 아래 전체) 사용자가 전송하는 파일이 서버에 있을 때 Overwrite 허용 유무 |
<Anonymous ~ftp> RequireValidShell off MaxClients 5 </Anonymous> |
익명 사용자를 위한 디렉터리에 대한 설정 /* /etc/shells 파일에 정의되지 않은 쉘을 사용하는 사용자 접근 허용 여부 설정 (off – 익명 사용자 접속 가능) */ 익명 사용자에 대한 최대 접속 클라이언트 수 설정 |
3. 메일 관련 서비스
3-1. 메일 관련 서비스의 이해
※ 메일 서비스
- 기본 컴포넌트 3가지
- MUA (Mail User Agent) : 사용자들이 메일을 송/수신하기 위한 클라이언트 에이전트
- MTA (Mail Transfer Agent) : 메일 서버로 메일을 전송하기 위한 서버/클라이언트 에이전트
- MDA (Mail Delivery Agent) : 수신된 메일을 해당 사용자에게 전달해주는 에이전트
- 포워딩 방법
- virtusertable 파일 설정을 통한 포워딩
- aliases 파일 설정을 통한 포워딩
- .forward 파일을 통한 포워딩 : 일반 계정 사용자가 자신의 홈 디렉터리에 만들어 설정
※ 메일 관련 프로토콜
- SMTP (Simple Mail Transfer Protocol)
- MTA 클라이언트와 서버를 구성하는 프로토콜 (TCP/25)
- 송신자와 송신자의 메일 서버 사이, 메일 서버와 메일 서버 사이에서 적용된다.
- POP3 (Post Office Protocol)
- 메일 서버로부터 메일을 수신하기 위한 서버/클라이언트 프로토콜 (TCP/110)
- 메일 서버로부터 메일을 가져온 후 서버에서 메일을 삭제함
- IMAP4(Internet Mail Access Protocol)
- POP3와 비슷한 기능이지만 더 많은 기능을 포함하고 복잡함 (TCP/143)
- 메일 서버로부터 메일을 가져와도 서버에 메일이 유지됨
※ 메일 관련 프로그램
- MTA 프로그램
- SendMail :SMTP를 기반으로 한 메일 전송 프로그램. 리눅스 배포판에 기본적으로 설치됨.
- Qmail : SendMail에 비교해 보안이 뛰어나면 모듈 방식으로 편리한 기능
- Postfix : IBM 라이선스를 따르는 오픈소스 프로그램
- MUA 프로그램
- Thunderbird(썬더 버드) : 모질라에서 만들 메일 클라이언트 프로그램
- Evolution(에볼루션) : GNOME의 메일 관리 프로그램
- MDA 프로그램
- Procmail : 메일을 필터링하는 기본적인 프로그램
- SpamAssassin : 아파치 재단에서 개발한 메일 필터링 프로그램. 펄(Perl)로 제작 됨.
- 보안 프로그램
- PGP(Pretty Good Privacy) : PEM에 비해 보안성은 떨어지지만 구현이 쉽다.
- PEM(Privacy Enhanced Mail) : 높은 보안성, 복잡한 구현 방식으로 잘 쓰이지 않음
- 기타 관련 프로그램
- dovecot : POP3와 IMAP4 역할을 수행하는 프로그램
※ SendMail 환경설정 파일
- /etc/mail/sendmail.cf 파일
- Sendmail의 핵심. 메일 송/수신 시 이 파일을 해석하여 실행한다.
- m4 명령어로 생성할 수 있다.
- # m4 sendmail.mc > sendmail.cf
- sendmail.cf 파일 항목
- Cw : 호스트 지정
- Fw : 파일 지정
- Dj : 특정 도메인을 강제 지정
- /etc/mail/local-host-names 파일
- 메일 서버에서 사용하는 호스트(도메인)을 등록하는 파일
- /etc/mail/access 파일
- 각종 접근 제어 설정이 저장되는 파일
- makemap 명령어 : /etc/mail/access 파일 편집 후에 DB 파일(access.db)을 만드는 명령어
- access 파일 항목
- RELAY : relay 허용 * Relay : 중계
- OK : 무조건 허용
- REJECT : relay 차단 (주로 스팸 서버의 IP를 차단)
- DISCARD : relay 없이 폐기 (어떠한 답신도 보내지 않음)
- 501 : 지정된 메일 주소와 일치하는 모든 메일의 수신 차단
- access 파일 예제
# vi access | ||
Connect:192.168.10.9 | OK | 192.168.10.9 호스트로 접속하는 클라이언트의 메일 허용 |
Connect:localhost | RELAY | localhost로 접속하는 클라이언트의 RELAY 허용 |
From:add@spam.com | REJECT | add@spam.com에서 오는 메일을 거절하고 거절 답신 보냄 |
From:root@spam.co.kr | DISCARD | root@spam.co.kr에서 오는 메일을 거절하고 거절 답신을 보내지 않음 |
To:log@yhn032.com | OK | log@yhn032.com으로 오는 메일을 허용 |
- /etc/aliases 파일
- 특정 ID로 들어오는 메일을 여러 호스트에게 전달할 때 사용하는 파일 (작은 규모의 메일링 리스트)
- 사용자가 다른 메일 계정 (별칭)을 사용할 수 있도록 한다.
- newaliases 명령어 : /etc/alises 파일의 변동 사항을 적용
- * sendmail -bi 명령어와 같은 기능
- /etc/mail/virtusertable 파일
- 가상 메일 사용자의 설정이 저장되는 파일
- access 파일과 마찬가지로 makemap hash 명령어로 DB 파일을 만들어 주어야 함.
- webmaster@server.yhn032.com admin -> 해당 메일 주소로 오는 메일을 admin 계정으로 수신
- webmaster@test.yhn032.com test -> 해당 메일 주소로 오는 메일을 test 계정으로 수신
※ 메일 관련 명령어
- mailq 명령어
- 메일 큐 목록 (/var/spool/mqueue) 출력 (sendmail -bp 명령어와 같은 기능)
- [-v] : 자세하게 출력
- [-Ac] : /etc/spool/submit.cf 에 지정된 메일 큐 목록(/var/spool/clientmqueue)을 출력
4. 기타 서비스
4-1. 슈퍼 데몬 관리
※ xinetd 개념
- 기존의 inetd를 대체하는 보안이 강화된 오픈 소스 슈퍼 데몬
- TCP Wrapper와 유사한 접근 제어 기능을 갖는다.
- RPC 요청에 대한 지원이 미비하지만, 포트맵으로 해결 가능
- 주요 기능
- DoS(Denial of Service Attack) 공격에 대한 효과적인 억제
- 로그 파일 크기 제한
- IP 주소 당 동시 접속 수 제한
- TCP/UDP 및 RPC 서비스들에 대한 접근 제어
- 설정 파일 구조 (/etc/xinetd.d/*)
vi /etc/xinetd.d/telnet | |
service telnet { | |
disable = no | 서비스 사용 설정 |
scoket_type = stream | tcp = stream, udp = dgram |
wait = no | 요청을 받은 후 즉시 다음 요청 처리(no) |
user = root | 실행할 사용자 권한 설정 |
server = /usr/sbin/in.telnetd | 서비스 실행 파일 경로 |
log_type = FILE /var/log/xinetd.log | 로그를 기록할 파일 경로 (FILE 선택자 사용 시) |
log_on_failue += USERID | 로그인 실패 시 로그에 기록할 내용 |
no_access = 10.0.0.0/8 | 접속을 거부할 IP 대역 |
only_from = 192.168.10.0/24 | 접속을 허용할 IP 대역 |
cps = 10 30 | 들어오는 접속 수 제한. 지정한 접속 수 초과할 시 지정한 시간 동안 서비스가 비활성화됨 |
instances = 5 | 동시에 작동할 수 있는 최대 개수 |
access_times = 08:00-17:00 | 접속 허용 시간대 |
} |
※ TCP Wrapper
- 슈퍼 데몬에 의해 수행되는 호스트 기반의 네트워킹 ACL(Access Control List) 시스템
- /etc/hosts.allow 파일과 /etc/hosts.deny 파일에 정의된 호스트 정보를 기준으로 접근 통제
- 접근 통제 파일 참조 순서 : /etc/hosts.allow -> /etc/hosts/deny -> 두 파일에 없으면 모든 접근 허용
4-2. DNS 관리
※ DNS 개념
- DNS (Domain Name System) : 사람이 식별하기 쉬운 도메인 이름을 컴퓨터가 식별하기 위한 네트워크 주소(IP)간의 변환을 수행하기 위한 시스템 (TCP, UDP /53)
- 데몬 이름 : named
- 기본 DNS 서버 주소에 대한 정보는 /etc/resolv.conf 파일에 저장되어 있다.
- Recursive 네임 서버 (Cache DNS 서버)
- 서버에 질의가 들어오면 자신의 캐시에 저장된 정보 또는 반복적 질의를 통해 그 결과를 호스트에게 응답해주는 네임 서버
- 반복적 질의 (Iterative Query) : Recursive 네임 서버가 각 네임 서버로 질의하는 방식
- 재귀적 질의 (Recursive Query) : 호스트가 Recursive 네임서버로 질의할 때 사용되는 방식
- Authoritative 네임 서버 (DNS 서버)
- 특정 도메인에 대한 정보를 관리하면서 해당 도메인에 대한 질의에만 응답해주는 네임서버
- 존 (Zone) : 네임서버가 관리하는 도메인 영역
- 존 파일 (Zone File) : 관리 도메인에 대한 정보를 담고 있는 파일. 이 파일을 읽어 질의에 응답한다.
- DNS 서버는 마스터(master) 네임서버와 슬레이브 네임서버로 구분된다.
- 존 전송 (Zone Transfer) : 마스터에 있는 원본 존 데이터를 슬레이브가 동기화 하는 작업
※ DNS 서버 설정
- DNS 레코드 종류
A (Address) |
- 도메인에 대한 IPv4 주소 질의 - AAAA : IPv6 주소에 대한 질의 |
ANY | - 도메인에 대한 모든 레코드 질의 - 요청 대비 응답이 큰 레코드 타입 |
TXT | 도메인에 대한 텍스트 정보 질의 |
SOA (Start Of Authority) |
존의 기본 속성 정보 질의 |
MX (Mail Exchanger) |
도메인의 메일서버 질의 |
NS (Name Server) |
도메인의 네임서버 질의 |
PTR (Pointer) |
- IP에 대한 도메인 정보 질의 - Reverse Zone 파일에 설정된 PTR 레코드 질의 |
CNAME (Canonical Name) |
호스트의 별명을 정의 |
※ DNS 관련 명령어
- named-checkconf 명령어 : 네임 서버 환경 설정 파일(/etc/named.conf)을 검사
- named-checkzone 명령어 : 존 파일(/var/named)을 검사
- rndc 명령어
- 네임서버 제어 명령어 (구 ndc 명령어)
- [stop] : 네임 서버 중지
- [status] :
- [reload] :
- [flush] :
- nslookup 명령어
- DNS 관련된 각종 정보를 확인할 수 있는 명령어
- [server IP_ADDRESS] : 질의할 DNS 서버 지정
- [set type = RECORD] : 질의할 레코드 유형 지정
4-3. 프록시 관리
※ 프록시(Proxy) 개념
- 프록시 서버 : 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 서버
- 서버는 프록시 서버를 클라이언트로 인식하고 클라이언트는 프록시 서버를 서버로 인식하게 된다.
- 사용 목적
- 접근 정책을 만들어 유해/악성 사이트로의 접근 제한 (방화벽 기능)
- 익명으로 페이지에 접근 (보안성)
- 캐시를 사용하여 인터넷을 빠르게 사용하기 위함
- 우회
※ squid 프록시 서버
- 유닉스 계열에서 작동하며 GPL 라이선스를 따르는 오픈 소스 프록시 서버 소프트웨어
- 서버 환경 설정 (squid.conf 파일)
# vi squid.conf | ||
http_port | 3128 | 서비스 포트 지정 |
cache_mem | 8MB | 제공할 캐시 메모리 용량 지정 |
cache_dir | /var/spool/squid 100 16 256 | 캐시가 저장되는 경로, 크기 지정 ( 크기 100MB, 하위 16개 그 다음 단계 하위 256개의 디렉토리까지 ) |
cache_access_log | /var/log/squid/access.log | 캐시에 접속한 로그를 기록할 파일 지정 |
acl | localhost src 192.168.10.0/255.255.255.0 | 별칭 지정 |
http_access | allow localhost | 접근 제어 |
http_access | deny all | 접근 제어 |
4-4. NIS 관리
※ NIS 개념
- NIS (Netword Information System) : Sun MicroSystems 사의 클라이언트 서버 디렉토리 서비스 프로토콜
- 시스템의 중요한 파일의 정보들을 네트워크 상에 있는 모든 호스트에 배포하는데 사용하는 DB 액세스 기능을 제공하며 RPC(Remote Procedure Call) 기반이다.
- 하나의 NIS 서버에서 다수의 서버에 대한 사용자 인증 기능을 수행할 수 있다.
- 초기에는 YP(Yellow Pages)라고 불림
- NIS/NIS+는 보안에 취약하지만 꼭 사용해야 할 경우 덜 취약한 NIS+를 사용하는 것이 낫다.
- NFS(Network File Server)와 연동하여 효율적인 네트워크 서버 환경을 구출할 수 있다.
- 관련 서비스에는 ssh, telnet, samba 등이 있다.
※ NIS 관련 데몬
- NIS는 RPC를 사용하기 때문에 RPC 호출을 처리하는 데몬을 반드시 구동시켜야 함
- 초기에는 포트맵이 그 역할을 수행하였으나 현재는 rpcbind 데몬을 사용
- ypserv : NIS 서버 데몬
- ypbind : NIS 클라이언트 데몬
- ypxfrd : NIS 서버 데몬. NIS 서버와 클라이언트 간의 매핑 속도를 향상시켜주는 데몬
- rpc.yppasswd : NIS 암호 업데이트 데몬
- rpc.ypupdated : 맵을 수정하는 데몬
※ NIS 관련 파일
- passwd.byname : 사용자 계정 관련 정보가 저장된 파일
- hosts.byname : 호스트 관련 정보가 저장된 파일
- /var/yp : 관련 맵 파일이 위치하는 디렉터리
- 설정 내용 수정 시 이 디렉터리에서 make 명령어로 갱신
- 맵 파일은 /var/yp/[도메인명]으로 생성됨
- /etc/yp.conf 환경 설정 파일
- server nis.yhn032.com
- ypserver nis.yhn032.com
- domain yhn032.com
- /etc/sysconfig/network : 네트워크 관련 항목들을 설정하는 파일
- NIS 도메인 이름을 부팅 시에도 적용하기 위해 이 파일에 도메인을 등록
- "NISDOMAIN=[도메인 이름]"을 추가한다.
※ NIS 관련 명령어
- ypcat 명령어
- NIS 클라이언트에서 사용하는 명령어. NIS 서버의 DB인 맵 파일의 내용을 출력한다.
- passwd.byname 파일 내용을 확인할 때 사용한다.
- ypwhich 명령어
- NIS 클라이언트에서 사용하는 명령어. NIS 서버의 이름과 관련 맵파일을 출력한다.
※ LDAP (Lightweight Directory Access Protocol) 개념
- IP 프로토콜 기반으로 디렉터리 서비스를 조회하고 수정하는 프로토콜
- X.500 DAP를 기반으로 경량화하여 만들어짐
- NIS와 같은 네트워크 기반 인증 관련 프로토콜이다.
- 트리 구조로 구성되어 있으며 논리나 계급 등의 기준으로 조직화되어 있다.
※ LDAP 엔트리
- O(Organization) : 최상위 조직 (회사 이름)
- OU(Organization Unit) : 그룹 (부서 이름)
- C(Country) : 국가
- ST(State or Province) : 주 (한국에서는 도)
- CN(Common Name) : 이름
- SN(Sir Name) : 이름에서 성
- DC(Domain Component) : 도메인
- DN(Distinguished Name) : 고유 이름
4-5. DHCP 관리
※ DHCP (Dynamic Host Configuration Protocol) 개념
- 호스트의 IP 주소를 동적으로 할당해주기 위한 프로토콜
- IP를 자동으로 할당해주기 때문에 편리하고 IP 충돌 예방이 가능
- ARP 프로토콜 사용
※ DHCP 환경 설정 (/etc/dhcp/dhcpd.conf 파일)
- range : DHCP 서버가 호스트에게 할당해 줄 수 있는 IP 범위 지정
- ~ range 100.100.100.50 100.100.100.100;
- option routers : 게이트웨이 주소 지정
- ~ option routers 100.100.100.1;
- option subnet-mask : 서브넷 마스크 지정
- ~ option subnet-mask 255.255.255.0;
- fixed-address : 특정 호스트에게 할당할 고정 IP 지정
- ~host yhn032 {
- hardware ethernet AA:BB:CC:DD:EE:FF;
- fixed-address 100.100.100.51;
- }
4-6. 가상화 기술
※ 가상화 개념
- 가상화 기능
- 공유 (Sharing) : 여러 개의 가상 자원들이 하나의 동일한 물리적 자원과 연결됨
- 단일화 (Pooling) : 여러 개의 물리적 자원으로 하나의 가상 자원을 생성하여 전체 용량을 증가시키고 활용과 관리를 단순화 한다.
- 에뮬레이션 (Emulation) : 물리적 자원에 없는 기능을 처음부터 있던 것처럼 가상 자원에서 구현할 수 있다.
- 캡슐화 (Encapsulation) / 절연 (Insulation) : 가상 자원들과 물리적 자원들 간의 상호 매핑은 가상 자원들 또는 사용자들에게 영향을 주지 않고 물리적 자원을 교체할 수 있다.
- 가상화 효과
- 자원 활용률 증가 : 물리적 자원과 자원 풀에 대한 동적인 공유 가능
- 향상된 보안 : 분리/격리로 데이터와 서비스에 대하여 통제되고 안전한 접근 제공
- 가용성 증가 : 사용자에게 영향을 주지 않으면서 물리적 자원의 변경 가능
- 확장성 증가 : 물리적 자원의 구성 변경 없이 가상화 자원의 확장 가능
- 향상된 프로비저닝 : 물리적 단위에 상관없이 가상화 자원을 빠르게 할당/제공 가능
※ 전가상화와 반가상화
- 전가상화
- 전체 하드웨어를 모두 가상화
- 게스트 OS의 수정 없이 다양한 OS를 지원
- CPU의 VT(Virtual Technology) 기술 사용으로 성능 저하 발생
- 대표적인 기술로 KVM, VMware 등이 있다.
- 반가상화
- 전체 하드웨어를 가상화 하지 않고, 게스트 OS 커널의 일부를 수정할 필요가 있다.
- 게스트 OS가 직접 하드웨어를 제어하지 않고 하이퍼바이저를 호출하여 제어한다.
- 하이퍼바이저 : 다수의 OS를 하나의 컴퓨터 시스템에서 가동할 수 있게 하는 소프트웨어
- 별도의 툴이 필요함
- 대표적인 기술로 XEN 등이 있다.
※ XEN
- 대표적인 전가상화/반가상화 오픈소스 하이퍼바이저
- 전가상화의 느린 속도를 개선하기 위해 개발됨
- bare metal 방식 : OS가 설치되어 있지 않는 하드웨어
- 도메인
- XEN 환경에서 동작하고 있는 가상 머신을 의미
- XEN을 사용하기 위해 도메인 0 이라는 특수한 도메인을 사용
- 도메인 0 : 다른 도메인을 제어할 수 있는 특권을 가짐
- 도메인 U : 특권이 없는 나머지 도메인들을 의미
- 전가상화 구성 시에는 QEMU(Process Emulator) 기반으로 동작
- CPU 전가상화/반가상화를 지원
- xm 명령어를 통해 도메인을 관리/제어할 수 있음
※ KVM (Kernel-based Virtual Machine)
- 리눅스 커널을 하이퍼바이저로 변환하기 위한 전가상화 방식의 가상머신
- 리눅스 커널 2.6.20부터 커널 모듈에 포함되어 있는 기능
- 사용하는 CPU에서 HVM(Hardware Virtual Machine) 기능을 제공해야 함.
- QEMU
- KVM을 사용하기 위한 에뮬레이터
- 반가상화 방식의 하이퍼바이저이기 때문에 KVM은 반가상화, 전가상화 모두 지원한다고 할 수 있다.
- CPU의 반가상화는 지원하지 않는다.
- 게스트 OS의 가상화 디스크 이미지가 저장되는 디렉터리 : /var/lib/libvirt/images
※ Docker
- 리눅스 기반의 컨테이너 가상화 기술
- 반가상화 방식보다 더 경량화된 방식
- 하이퍼바이저나 게스트 OS 없이 서버 운영에 필요한 프로그램과 라이브러리만 격리해서 설치/사용 가능
- EX> 하나의 물리적 서버에 다수의 웹 서버 운영
※ 기타 가상화 관련 내용
- 다양한 하이퍼바이저를 통합 관리하기 위한 플랫폼
- OpenStack, CloudStack, OpenNebula 등
- CPU의 가상화 지원 여부는 /proc/cpuinfo 파일을 참조
- 관련 명령어
- vir-top 명령어 : 가상 머신별 자원 사용률을 실시간으로 모니터링하는 명령어
- virsh 명령어 : CUI 기반의 가상머신을 관리하는 명령어 (생성, 재시작, 종료 등)
- virt-manager 명령어 : GUI 기반의 가상머신 관리자 프로그램
- libvirtd 데몬 : 가상화 기술을 위한 데몬
4-7. NTP 관리
※ NTP 개념
- NTP (Netword Time Protocol) : 네트워크를 통해 네트워크 상의 컴퓨터 시간을 동기화 시키는 프로토콜
- NTP는 계층 구조를 가지며, 각 계층을 stratum이라고 한다.
- 포트번호 : TCP/123
※ NTP 계층 구조
- Stratum 0 : 세슘 원자시계, GPS, 표준 주파수 방송국 등
- Stratum 1 : 계급 0에 동기화 시킨 시간 서버
- Stratum 2 : 여기서부터 계층적 트리 구조를 형성
※ NTP 관련 명령어 / 파일
- ntpdate 명령어 : NTP 서버를 이용하여 시간을 동기화시키는 명령어
- ntpq -p 명령어 : peer들의 상태를 요약해서 출력
- /etc/ntp.conf 파일 : ntp 서버 설정 파일
4-8. VNC 관리
※ VNC 개념
- VNC (Virtual Network Computing) : 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템
- 거의 모든 OS에서 사용할 수 있는 오픈소스 소프트웨어
- 포트번호 : 기본적으로 5900번이고 디스플레이 넘버를 더해서 사용한다.
※ VNC 관련 명령어 / 파일
- vncpasswd 명령어 : VNC 서버 패스워드를 변경하는 명령어
- vncserver 명령어 : VNC 서버 가동
- [-kill] : VNC 서버 종료
- vncserver -kill : 1 -> VNC 1번 디스플레이 종료
- [-kill] : VNC 서버 종료
- vncviewer 명령어 : 클라이언트에서 VNC Viewer를 실행하는 명령어
- /etc/sysconfig/vncservers 파일
- VNCSERVERS="1:root 2:yhn032" //디스플레이 번호 : 계정명
- VNCSERVERS[1]="-geometry 1024x768" //1번 디스플레이에 대한 설정 (-geometry : 해상도 설정)
- VNCSERVERS[2]="-geometry 1024x768" //2번 디스플레이에 대한 설정 (-geometry : 해상도 설정)
'자격증 > 리눅스마스터 1급' 카테고리의 다른 글
리눅스 마스터 1급_2과목_CH6.시스템 보안 (0) | 2023.06.13 |
---|---|
리눅스 마스터 1급_2과목_CH5.장치관리 (0) | 2023.06.01 |
리눅스 마스터 1급_2과목_CH4.일반운영관리 (0) | 2023.04.12 |
리눅스 마스터 1급_1과목_CH3.네트워크의 이해 (0) | 2023.04.11 |
리눅스 마스터 1급_1과목_CH2.리눅스 시스템의 이해 (15) | 2023.03.29 |