★iptables 란?

- 커널의 ip 패킷 필터링(Packet Filtering)기능을 하는 Netfilter에 규칙을 설정하고 관리하는 도구

- 체인이라고 불리는 방향성을 가진 규칙을 연결한 테이블이다.

 

★패킷 필터링

- 네트워크를 통과하는 모든 패킷들은 패킷 헤더에 출발지와 목적지 그리고 어떤 프로토콜을 이용하는지에

관한 정보를 담고 있다. 이러한 패킷의 헤더 정보를 보고 호스트로 들어오는 (INPUT)패킷과 나가는 패킷(OUTPUT)

통과하는 패킷 (FORWARD) 패킷 등을 검사하여 (TABLE과 비교 ) 불필요한 패킷이나 잘못된 패킷을 폐기

(DROP)하고 규칙과 일치하는 패킷만 허용(ACCPECT)시키는 기능을 한다.

 

 

 

 

 

★규칙 확인 및 제거

service iptables start

chkconfig iptables on

chkconfig --list iptables

 

iptables -L       //리스트 형태로 출력

iptables -nL     //숫자로 출력

 

iptables -L --line-numbers      //라인번호 + 리스트 형태로 출력, 규칙제거시 유용!

 

iptables -S     //체인에 설정된 규칙을 명령어 형태로 출력

/etc/sysconfig/iptables와 동일

 

iptables -D [chain] [num]

 

iptables -F    //모든 규칙제거 방화벽 초기화 ssh설정 날라가고 xsehll 접속x

netstat -nltp 22  //22번 포트 열려 있음을 확인

 

★기본 정책 설정 및 데몬 관리

 

iptables-save > /etc/iptables.tmp

- 기본 설정 파일 외 다른 파일에 저장시 사용

iptables-restore < /etc/iptables.tmp

- 해당 파일의 내용으로 설정을 되돌릴시 사용

iptables-save > /root/default_policy

iptables -A [chain] -p [protocol] --[S/DPORT] [PortNum] -j [Target]

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

- 어떤 IP든 22번 포트로의 접근이 가능하도록 설정

service iptables save

- 시스템 재기동 시 자동 실행되도록 저장

 

★실습 SSH통신하기

Client-Linux로부터 SSH접속은 허용하고, Server-B와 그외 다른 호스트 및 네트워크로부터의

SSH접속은 차단한다.

iptables -A [chain] -p [protocol] --[S/DPORT] [PortNum] -j [Target]

 

★Server-B, Client-Linux

yum -y install openssh-client

service iptables stop

 

★Server-A

iptables -A INPUT -p tcp -s 100.100.100.120 --dport 22 -j DROP

iptables -A INPUT -p tcp -s 100.100.100.130 --dport 22 -j ACCEPT

 

Server-B, Client-Linux

첫번째 규칙이 먼저 적용되 다 접속이 가능

 

Client-Linux

 

Server-B

 

다시 순서대로 시도

iptables -F 로 규칙 모두 삭제후 다시 순서대로 입력

iptables -A INPUT -p tcp -s 100.100.100.120 --dport 22 -j DROP

iptables -A INPUT -p tcp -s 100.100.100.130 --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

 

Server-B, Client-Linux

 

Client-Linux 접속 성공

 

Server-B 접속 실패

 

 

★실습1

Server-A 에서 nslookup 명령어로 Google.com IP확인하기 (DNS 53:UDP)

nslookup google.com

 

nslookup에서 ip확인이 안되 firefox에서 주소를 쳐봤더니 역시 서버 찾을수 없음 확인

 

service iptables restart

vi /etc/resolve.conf

 

iptables -A INPUT -p udp --sport 53 -j ACCEPT

nslookup google.com

 

★실습2

Server-A firefox를 이용해 네이버 접속하기

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

 

 

★실습3

Client-Linux가 Server-A의 WEB 접속을 허용하도록 설정

 

Server-A

yum -y install httpd

service httpd restart

 

Client-Linux

yum -y install elinks

 

Server-A

iptables -A INPUT -p tcp -s 100.100.100.130 --dport 80 -j ACCEPT

 

Client-Linux

elinks 100.100.100.110

 

 

★iptables 응용-로그기록

-규칙에 맞는 패킷을 로그에 기록

-기본적으로 생성되는 커널 로그 파일은 /var/log/messages이며 이곳에 로그가 저장

 

★LOG타겟 사용 - 실습

Server-A

iptables -I INPUT 1 -s 100.100.100.120 -j LOG

 

Server-B

ssh 100.100.100.110

 

Server-A

tail -f /var/log/messages    //실시간으로 로그 변경 확인

Server-A 접속

 

접속을 시도하면 로그가 저장되고 있다.

 

LOG타겟 사용-실습2

Server-B 접근 시 차단하며, 차단한 기록을 로그 파일에 저장한다.

 

Server-A

iptables -I INPUT 2 -s 100.100.100.120 -j DROP

 

Server-B

ssh 100.100.100.110

 

Server-A

tail -f /var/log/messages   //실시간으로 로그 변경 확인

접속을 시도하면 접속이 불가능하다

 

★LOG타겟 사용-실습3

다른 로그 기록과 차단한 로그 기록을 구별하기 위해 차단 로그 앞에 prefix(접두사)를 붙여 관리한다.

 

Server-A

iptables -D INPUT 1  //기존 로그 규칙 삭제

iptables -I INPUT 1 -s 100.100.100.120 -j LOG --log-prefix "Dropped IP:"

- 로그에 접두사 "Dropped IP:"를 붙여서 저장이 되도록 --log-prefix 옵션 사용

 

Server-B

ssh 100.100.100.110

 

Server-A

tail -f /var/log/messages

 

접두사 와 출발지 MAC주소 확인  차단된IP 확인할수 있다

 

 

★iptables와 연결 추적 (Connection Tracking)

-서비스 연결 상태에 따라서 그연결을 감시하고 제한할수 있다.

-연결 추적 방식은 연결 상태를 저장하기 때문에, 시스템 관리자가 연결을 허용하거나 거부할수 있다.

 

 

☆tcp 프로토콜 동작이해(시험)

SYN -> ACK+SYN-> ACK 

 

 

iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j  ACCEPT

- syn만 실행중 Xshell접속 안됨

 

VM에서 테스트

 

 

Server-A 접속 실패

 

 

iptables -D INPUT 6

 

Server-A xshell 접속 됨

 

★핑 테스트

ping 127.0.0.1      //자기 자신을 뜻하는 가상 인터 페이스 루프백으로 핑 테스트 -> 불가능

iptables -A INPUT -i lo -j ACCEPT

ping 127.0.0.1     //가능

 

<Server-A, Server-B>

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

 

<Server-A> <------> <Server-B>

 

 

'Server > Linux' 카테고리의 다른 글

xshell/ 쉘 스크립트  (0) 2017.05.25
xshell/ WEB,APM,XE  (0) 2017.05.21
xshell/ PXE & KICKSTART  (0) 2017.05.15
xshell/ NFS  (0) 2017.05.14
xshell/ SAMBA  (0) 2017.05.14

★bash script 작성시 #!/bin/bash 쓰는 이유

- 쉘은 여러가지가 있다. sh,bash,csh, 등등 스크립트를 어떤 쉘로 작성하겠다고 설정.

 

★Webhard

- 인터넷의 속도가 빨라지면서 사용자들은 usb나 CD/DVD를 사용하는 것보다 인터넷에 파일을

저장하고 보관하는 기능을 원하게 되었고, 이러한 기능을 해주는 것은 웹하드 라 불른다

- 오픈소스 AjaXplorer(Pydio)를 사용해 사용자의 서버 또는 클라우드에서 실행되는 파일공유 및

동기화 소프트웨어를 통해 구성

- 사용자는 자신의 계정이 있고 인터넷이 연결된 곳이 라면 어느곳이든 웹 브라우저로 접속해 자신의

파일을 다운로드 하거나 업로드 할수 있다.

 

★쉘 스크립트(shell script)

- 텍스트로 작성된 프로그램으로 한줄씩 순차적으로 읽어 실행되도록 작성된 프로그램

 

yum -y install gcc   //컴파일러 패키지 설치

vi ~/.vimrc

 

set number      //행번호 출력

set tabstop=4     //탭의 공백 문자개수를 4개로 지정

set shiftwidth=4    //탭 이동시 사용할 공백문자를 지정하는 옵션

set smartindent   //엔터를 입력하여 개행시 자동으로 들여쓰기 옵션

set cindent    //c언어 코드 작성시 c문법에 맞게 들여쓰기 옵션

 

 

vi /etc/passwd

자동 set number가 작동 확인

 

★C언어 vs 쉘 스크립트

 

cd /

mkdir /shell_script

cd shell_script/

vi c-style-sourc.c    //c언어 테스트 파일 생성

 

vi shell-style.sh     //확장자는 상관이 없지만 관례적으로.sh사용

!/bin/bash

// shebang : 스크립트의 맨 처음에 배쉬를 사용하겠다는 의미, 스크립트를 실행시켜줄 프로그램의

경로를 커널에게 전달하는 역할

echo "Hello Linux"

 

gcc -o [컴파일 결과] [컴파일 대상]

gcc -o c-style-compile.c c-style-source.c    //컴파일

ll

./c-style-compile.c

Hello Linux  //결과 확인

 

chmod +x shell-style.sh

./shell-style.sh          //실행권한x필요

sh ./shell-style.sh      //실행권한x 없이 실행

 

c언어로 작성된 프로그램은 컴파일하여 기계어로 변환된 목적파일로 만들어 준뒤 링크과정을

거치고 실행권한x가 있어야만 실행이 가능하지만 쉘 스크립트로 작성된 프로그램은 실행권한만 주면된다

.sh 확장자를 가진 파일은 실행권한이 없고 컴파일시 허가거부 확인

 

- c언어로 작성된 프로그램은 vi cat같은 명령어로 내용을 확인 할 수없는 바이너리 구조 변형되지만 쉘 스크립트

는 파일의 변환과정이 없다.

- c언어로 작성된 프로그램은 기계어로 변환되었기 때문에 커널에 의해 실행되지만 쉘 스크립트(bash,sh,ksh,zsh,bsh)

는 쉘이 한줄씩 읽어서 실행

 

★쉘 스크립트 문법 확인

sh -n [파일명]

vi first_script.sh

chmod +x first_script.sh

sh first_script.sh

 

vi second_script.sh

-echo 명령어 이후에 " " 큰 따옴표 안에서 백쿼터(' ')를 사용하여 명령어 사용이 가능하다.

 

컴파일 확인

 

★Read 명령어

-파일이나 입력한 문자열을 읽을때 사용한다.

-사용자가 enter 키를 입력할때 까지 프로그램을 중지시킨다.

 

Read 명령어 옵션

read answer        //한 라인을 읽고 읽은 내용을 answer변수의 값으로 할당

read first last      //한 라인을 읽고, 공백 또는 newLine을 기준으로 첫번째 단어는 first변수의 값

으로 두번째 단어는 last변수의 값으로 할당

read       //한 라인을 읽고,REPLY 변수(내장/예약되어있는 변수)의 값으로 할당

read -a array        //array 이름으로 된 배열의 단어 목록을 읽는다.

read -e    //대화형 쉘에 사용

read -p prompt   //prompt출력하고 입력을 기다리고 입력 내용을 REPLY변수에 저장

read -r line     //백 슬래쉬 포함하는 입력을 허용

 

vi question_script.sh

 

sh question_script.sh   //컴파일

 

★case~esac문 사용

-여러가지 경우의 수가 있을경우 사용

 

vi case.sh

#[인자] == stop 과 같을때 아래 명시한 문장 실행

 

 

★자동으로 본딩해주는 스크립트

★과정

1. 네트워크 카드 추가

2. ifcfg-eth0, ifcfg-eth1, ifcfg-bond0 파일 생성

3. /etc/modprobe.d/bonding.conf 파일 생성

4. 본딩 적용

5. 네트워크 재시작

6. 설정 확인

7. 본딩 테스트

 

★구성

 

테스트용 디렉토리 및 파일준비

mkdir /bonding_script

yum -y install lrzsz

설치 후 공유 폴더 두개(MASTER, SLAVE)를 해당 디렉토리로 이동

 

vi bonding.sh

 

 

★VMware 터미널에서 실행

 

ifconfig 본딩확인

'Server > Linux' 카테고리의 다른 글

xshell/ IPTABLE  (0) 2017.05.29
xshell/ WEB,APM,XE  (0) 2017.05.21
xshell/ PXE & KICKSTART  (0) 2017.05.15
xshell/ NFS  (0) 2017.05.14
xshell/ SAMBA  (0) 2017.05.14

★WEB Service

-WEB 브라우저를 이용하여 World Wide Web을 사용하는 클라이언트에게 미리 저장된 하이퍼 텍스트를 제공하는

서버를 지칭한다.

-리눅스 서버에서 가장 인기 있는 WEB server는 HTTP(HyperText Transfer Protocol)을 통해 이루어지며, WEB 브라우저로부터

WEB 서버에 대해 요청을 보내면 요청을 받는 WEB서버는 그요청을 처리하고 결과를 WEB브라우저(Client)에게 응답한다.

 

★WEB 브라우저의 종류

Microsoft - Edge, Internet Explore

Google - Chrome

Mozila - Firefox

Apple - Safari

Opera Software - Opera

 

★WEB서버의 종류

Microsoft

-IIS(Internet Information Server)

Aoache Software Foundation

-Apache HTTP server

Google

-GWS(google web server)

Nnginx

-Nginx

Sun Micro Systems

-Sun Java System Web Server

 

★Apache

-웹 서버

-웹 서비스를 제공하는 서버

-웹 상에 있는 서버이므로 인터넷에만 연결되어 있는 어느곳에서든 웹서버에 방문가능

-HTML,PHP 및 JSP 페이지가 실행 될 수 있는 환경을 제공하는 웹서버 프로그램

-server,client 

 

★PHP

-PHP(Hyppertext Preprocessor)   -웹문서 형식 전처리기

-서버에서 해석되는 html에 내장되어 동작하는 스크립트 언어

-c, java 등 많은 문자 형식을 차용

 

★HTTP와 HTTPS 차이점?(http://thrillfighter.tistory.com/417)

 

★Apache 서버 설치와 기본 설정

 

<Server-A>

yum -y install httpd    //Apache 패키지 설치    

rpm -qa | grep httpd

ls /etc/httpd   //apache 서버의 설정 파일이 위치한 디렉토리를 확인

ls /var/www   //brower상에서 인식할 데이터가 저장될 디렉토리를 확인

ls /var/log/httpd   //로그파일이 저장된 디렉토리를 확인

vi /etc/httpd/conf/httpd.conf   //서버가 사용하는 설정파일을 수정

 

57 ServerRoot "/etc/httpd"

// Apache 서버가 사용할 설정 파일들이 저장될 디렉토리를 지정한다.

 

136 Listen 100.100.100.110:80

// 네트워크 인터페이스가 여러개 있는 경우 클라이언트가 접속할 IP를 지정하여 설정한다. 포트만 입력하는 경우 모든 주소를 사용한다는 의미가 된다.

 

262 ServerAdmin admin@donghyun.com

// 문제가 발생하는 경우 Apache 서버가 보낼 E-mail 주소를 입력한다.

 

276 ServerName www.donghyun.com:80

// Apache 서버가 사용할 이름과 포트를 설정한다. DNS에서 설정된 이름을 사용하고 없을 경우 IP주소를 대신 사용할 수 있다.

 

292 DocumentRoot "/var/www/html"

// Apache 서버가 인식할 데이터들이 저장될 디렉토리를 지정한다.

 

402 DirectoryIndex index.html index.php

// 클라이언트가 WEB 서버 접속 시 초기화면으로 보여줄 파일명을 지정한다. 기본이 index.html 이며 해당 파일이 없을 경우 index.php 파일을 찾게된다.

 

484 ErrorLog logs/error_log

// Apache 서버에서 에러가 발생한 경우 기록할 로그 파일을 지정한다. logs는 /etc/httpd/logs를 의미하며, 해당 디렉토리는 /var/log/httpd에 링크로 연결되어 있다.

 

526 CustomLog logs/access_log combined

// Apache 서버에 접속하는 일반적인 접속 정보를 기록할 로그파일을 지정한다.

 

★Apache 서버 서비스 시작과 접속

 

service httpd start

service httpd status

chkconfig httpd on  //부팅이후 자동 시작

chkconfig --list httpd  //자동으로 시작되는 run level 확인

httpd -v    //데몬 이름에 -v옵션을 사용하여 Apache서버의 버전 정보를 확인

lsof -i tcp:80   //사용중인 파일과 프로세스의 정보를 출력하는 lsof명령어를 이용해 tcp80번을 사용하는

httpd 데몬이 http 서비스를 제공하고 있음을 알 수 있다.

 

★Apache 서버 서비스 시작과 PHP사용

1.firefox를 실행시켜 자신의 도메인 혹은 ip를 주소창에 입력하여 연결을 시도

2.Apache test page를 확인

3.해당 페이지는 index.html이 아닌, /var/www/errors 디렉토리에 위치한 noindex.html 페이지이다. http.conf 파일의 (221 Include conf.d/*.conf) 설정으로 /etc/httpd/conf.d/ 디렉토리에 위치한 *.conf 파일이 적용되어 welcome.conf 파일에 명시된 ErrorDocument 403 /error/noindex.html 설정으로 보여지는 화면이다.

 

cd /etc/httpd/conf.d    //httpd.conf파일에 설정한(221 include conf.d/*.conf)추가 설정 파일이 있는

/etc/httpd/conf.d디렉토리로 이동

ls   //ls명령어를 입력하여 welcome.conf파일확인

vi welcome.conf  //9번째 라인에 주석처리하여 403에러가 발생시 /var/www/error/noindex.html 파일을 실행

할수 없도록 설정

주석처리후 httpd 데몬 재시작

 

 

Forbidden 403 에러메시지를 확인할수 있다.

 

cp /var/www/error/noindex.html /var/www/html/index.html

// noindex.html 파일의 이름을 index.html으로 변경하여 /var/www/html 디렉토리로 복사

정상적으로 사이트가 나온거 확인

 

cd /var/www     //DocumentRoot 디렉토리의 상위 디렉토리인 /var/www로 이동

ll   //html 디렉토리의 권한 확인

chmod 700 ./html  //html 디렉토리의 권한을 700로 변경

 

에러 403 확인 후 복구

 


PHP (Hypertext Preprocessor) 

- 오픈 소스 스크립트 언어로서 이식성이 좋아 다양한 운영체제와 환경에서 사용되며, 특히 WEB 개발 및 HTML에 사용된다.

- php-pear는  PHP Extension and Application Repository 의 약자로 PHP의 유용한 코드와 라이브러리를 배포하는 저장소 사용을 위해 보통 함께 설치한다.


PHP 사용

yum -y install php php-pear         // yum 을 사용해 PHP 패키지를 설치

rpm -qa | grep php             // php 테스트를 위해 index.php 파일을 생성하여 내용을 입력

vi /var/www/html/index.php         // php의 정보를 출력하는 함수를 작성하고 저장

 

vi /etc/php.ini        //php설정 파일을 열어 현재 시간대를 설정

 

ll /etc/httpd/conf.d/php.conf   //php에 관련된 설정을 정의하는 파일이며, Apache에 사용하기 위해 필요한

모듈이 설정

ll /etc/httpd/modules/libphp*  //사용되는 모듈의 위치 및 파일을 확인

service httpd restart   //적용을 위해 httpd 데몬을 재시작

 

100.100.100.110:80/index.php   //php와 Apache의 각종 파라미터와 설정 정보를 확인

 

grep http /etc/services     // /etc/services 파일을 확인하여 http 서비스가 사용하는 포트 80번과 https

포트 443번을 확인

 

Python을 사용하여 CGI 테스트

CGI (Common Gateway interface) - 웹 서버와 웹 프로그래밍 언어가 통신하는 방법을 정의

 

yum -y install python

vi /etc/httpd/conf/httpd.conf   //Apache 서버의 주 설정 파일을 수정한다

 

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" // 지시어  ScriptAlias 통해 URL 상에서의 디렉토리 cgi-bin은

시스템상에서 /var/www/cgi-bin을 가리키도록 설정

<Directory "/var/www/cgi-bin"> // CGI 데이터를 실행할 디렉토리를 정의

Options +execCGI // ExecCGI 옵션을 추가해 Apache 서버가 해당 디렉토리에서

CGI 실행을 허용하도록 설정

 AddHandler cgi-script .cgi .py // 파일의 확장자가 .cgi .py로 끝나는 파일을 CGI로 인식 하도록 설정

service httpd restart

vi /var/www/cgi-bin/test.py

 

 

vmware -> Firefox -> 100.100.100.110/cgi-bin/test.py

★Ruby와 Perl사용실습

 

yum -y install ruby perl perl-CGI

vi /etc/httpd/conf/httpd.conf

 

service httpd restart

vi /var/www/cgi-bin/test.rb

vi /var/www/cgi-bin/test.pl

 

 

vmware -> firefox -> 100.100.100.110/cgi-bin/test.rb

vmware -> firefox -> 100.100.100.110/cgi-bin/test.pl

★Apache 인증

-Apache 인증 기법은 특정 디렉토리 접근시 ID와 PASSWORD를 요구하도록 설정하는 방법을 의미

-가장 많이 Basic과 Digest를 이용

 

★Basic 인증 (HTTP Basic Authentication)

-클라이언트가 WEB서버로 보내는 인증은 암호화 되지 않은 Base64로 인코딩 되어, 평문으로 전달되는

안전한 인증 방법이 아니다.

 

vi /etc/httpd/conf.d/auth_basic.conf

mkdir /var/www/html/basic

vi /var/www/html/basic/index.html

 

vi /var/www/html/basic/index.html

 

 

★Digest 인증 (HTTP Digest Authentication)

- Basic 인증보다 보안이 강화된 인증방법

- 사용자명, 패스워드 등을 조합하여 생성한 MD5값으로 인증에 사용

vi /etc/httpd/conf.d/auth_digest.conf

apachectl configtest //문법검사

 

 

★가상 호스트 (Virtual Host)

-한 서버에서 여러 WEB사이트를 서비스하는 Apache 서버의 기능을 의미

 

host -a 100.100.100.110 //IP 주소 정보 확인

 

vi /etc/httpd/conf/httpd.conf

vi /etc/httpd/conf.d/vhost.conf

 

mkdir -p /vhost/phz55/{logs,www}   //가상 호스트 설정에서 정의한 데이터와 로그 파일  

저장을 위한 디렉토리를 생성

chmod -R 755 /vhost/

service httpd restart

httpd -s    //가상 호스트 설정 정보를 확인하기 위해 httpd 에 S 옵션을 사용하여 주도메인과

가상 호스트 정보를 확인할 수 있다. 

 

vi /vhost/phz55/www/index.html

 

vi /etc/hosts

100.100.100.110

 

★Client-Linux

yum -y install elinks    //test웹브라우저 elinks설치

elinks www.naver.com

 

명령어를 사용하는 방법(일시적)

 

사용하지 않는 인터페이스 비활성화

 

 ★APM 이란?

-WEB 서비스에 필요한 가장 기본적인 프로그램들

-웹 서버를 제공하는 Apache WEB Server

웹 프로그래밍 언어인 PHP,

데이터 베이스 관리를 위한 Mysql,MariaDB

-이 세가지가 잘 연동되어 운영되도록 만든 환경이 APM이다

★APM 설치

yum -y install httpd mysql mysql-server php php-mysql

rpm -qa httpd php mysql

service httpd restart

service mysqld start

mysqladmin -u root password '123' 

-mysql 관리자 등록을 위해 mysqladmin 명령어를 이용해 계정과 암호 등록

mysql -u root -p    //생성한 root 계정으로 접속

mysql>show databases;   //동작 테스트를 위해 database를 출력

 

php -r 'echo"Linux\n";'     //동작 테스트

php -v    //php 버전 정보 출력 명령어

chkconfig httpd on ; chkconfig mysqld on   //부팅시 자동으로 시작되도록 chkconfig 명령어를 이용하여

httpd 와 mysqld데몬을 등록

cd /var/www/html

vi linux.php    //vi를 이용하여 php 연동 테스트를 위한 페이지 작성

 

 

yum -y install elinks    //텍스트 웹 브라우저 elinks

elinks

 

 

결과 확인

ESC키 File->q 종료

 

vi linux_error.php   //오타가 있는 에러페이지 작성 세미쿼터 안닫음

 

elinks   //linux_error.php 페이지 접속

100.100.100.110/linux_error.php

500 응답 코드 에러 확인

 

cp /etc/php.ini /etc/php.ini.original   //php 설정 파일 원본 백업

 

vi /etc/php.ini     //vi을 이용해 설정파일 수정

530 display_errors=On   //에러 메시지 출력을 위해 on 으로 변경

 

service httpd restart     //변경 사항 적용을 위해 httpd 데몬 재시작

 

elinks    //라인에 오타있는거 발견

 

★XE(Xpress Engin)

-XpressEngin 은 오픈소스 라이언스인 GNU LGPL을 채택하고 있으며 누구나 쉽고 편하고 자유롭게 콘텐츠를

발행 할수 있도록 하기 위한 CMS(Content Management System)이다.

-게시판/자료실/블로그/카페/회원관리등 다양한 분야에 사용되며 제로보드의 확장된 버전으로 많은 개발자가

새로운 기능을 추가하여 업로드하고 있으며 대부분 무료로 사용이 가능하다

 

mysql(Linux-APM에서 mysql설정)

 

mysql -u root -p    //mysql 명령어를 이용하여 root 계정으로 DB에 접근

mysql> create database xe;    //새로운 DB를 생성하며 명령어가 정상적으로 실행

mysql> show databases;      //생성된 DB를 확인

mysql> flush privileges;    //변경 사항을 적용하기 위해 flush privileges 명령어를 사용

mysql> exit

 

yum -y install wget     //xe 패키지를 받기 위해 wget설치

cd /var/www/html

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/xe-core/xe.1.7.3.6.ko.tar.gz
-공유 폴더 XE링크 파일에서 URL을 복사하여 XE를 다운

tar xvfz xe.1.7.3.6.ko.tar.gz    //tar 명령어를 이용해 아카이브와 압축을 해제

 

chmod 707 xe      //권한을 수정하여 모든 사용자가 접근이 가능하도록 변경

yum -y install gd php-gd     //XE 사용에 필요한 패키지를 추가 설치

 

vi /etc/httpd/conf/httpd.conf    //httpd 설정 파일을 수정

338 AllowOverride All    //DocumentRoot 디렉토리에 모든 접근을 허용 

 

service httpd restart

mysql -u root -p     //root계정으로 DB접근

mysql> GRANT ALL PRIVILEGES ON xeDB.* TO xeUser@localhost IDENTIFIED BY "1234";

-새로운 사용자 xeUser 와 해당 사용자가 사용할 DB와 암호를 지정

mysql> CREATE DATABASE xeDB;   //새로운 데이터베이스 xeDB를 생성

mysql> SHOW DATABASES;   //생성한 데이터베이스를 확인하기 위해 모든 DB를 확인

mysql> exit

 

firefox를 실행해 URL입력 100.100.100.110/xe/admin

 

 

 

 

 

 

 

설치 완료

- 사이트 설정 변경 클릭

 

사이트 디자인 설정 -> 레이아웃 -> 상세설정 클릭

 

제목, 헤더 스크립트 사진이미지 등록

 

레이아웃 일괄 적용 체크 후 저장

 

호스트 주소 클릭 후 메인 홈페이지 보기

왼쪽 하단 쉬운 설치 클릭후 XE Core 업데이트 클릭(파일 저장)

 

cd /root/다운로드

mv xe.zip/var/www/html

cd /var/www/html

unzip xe.zip

A

 

설치된 모듈에서 모두 업데이트

 

사이트 메뉴 편집-> 게시판

 

메뉴  이름 및 아이디 입력

 

생성된 게시판 확인 클릭

 

쓰기 클릭

 

'Server > Linux' 카테고리의 다른 글

xshell/ IPTABLE  (0) 2017.05.29
xshell/ 쉘 스크립트  (0) 2017.05.25
xshell/ PXE & KICKSTART  (0) 2017.05.15
xshell/ NFS  (0) 2017.05.14
xshell/ SAMBA  (0) 2017.05.14

★PXE(Pre-boot eXecution Environment) execution:처리 environment:환경   전처리환경


https://access.redhat.com/documentation/ko-KR/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/sn-automating-installation.html

- 사전 부팅 실행 환경

- 네트워크 인터페이스를 통해 컴퓨터를 부팅하는 환경

- Kickstart에 사용되며, 동시에 많은 서버에 OS설치시 유용

- 비용 및 인력 낭비가 줄어든다.

 

TFTP(Trivial File Transfer Protocol)

-이더넷(LAN)에서 파일을 다운받는 프로토콜

-UDP방식을 사용. 부트로더와 같은 작은 크기의 프로그램 전송시 사용

-보통 PXE와 같이 네트워크를 통해 부팅할때 사용.

 

부트로더(bootloader, 운영체제 시동하기 전 준비를 해주는 프로그램)

 

SYSLINUX

-LINUX 운영체제용 부트로더

-LINUX 설치과정을 단순화하여 부팅 디스크등에 사용되는 파일의 모음

 

<Server-B>(PXE서버)

IP를 Static으로 설정(ifcfg-bond0 | ifcfg-eth0)

yum -y install syslinux

yum -y install vsftpd

yum -y install tftp-server

yum -y install dhcp

 

syslinux : 부트 메뉴 구성을 위한 파일 및 부팅 시 필요한 파일 제공

tftp-server : PXE 부팅 직후 OS를 설치할 시스템에 리눅스 커널 이미지 전송 시 사용

vsftpd : OS설치 시 필요한 패키지 전송 시 사용

dhcp : PXE 부팅시 IP부여, vsftpd와 통신을 하기위해 사용

 

vi /etc/xinetd.d/tftp    //tftp 서버 설정 파일 수정

disable = no   //tftp 서버 활성화

 

 

cp /usr/share/doc/vsftpd-2.2.2/vsftpd.xinetd /etc/xinetd.d

- vsftp를 xinetd모드로 동작 시키기 위해 설정 파일 복사

 

vi /etc/xinetd.d/vsftpd.xinetd      //vsftpd 설정 파일 수정

disable = no   //vsftpd 활성화

 

 

 mount -t iso9660 /dev/cdrom /mnt

cd /mnt

ls

 

CD이미지 경로 (CentOS 설치 파일)

mkdir -p /var/ftp/centos/6.8/os/x86_64    //CD이미지 경로

cp -R /mnt/* /var/ftp/centos/6.8/os/x86_64

-CD이미지 파일을 전부 복사하여 로컬 저장소를 만들어 네트워크 부팅으로 부트로더를 탑재한

시스템이 필요한 파일을 vsftp를 이용하여 해당 경로에서 파일을 내려 받는다.

 

cd /usr/share/syslinux

 

복사해야할 파일 목록

pxelinux.0(네트워크 부트로더, Grub와 비슷한 역할을 한다)

menu.c32(설치 메뉴 구성 파일)

memdisk(설치 시 필요한 필수 파일)

mboot.c32(설치 시 필요한 필수 파일)

chain.c32(설치시 필요한 필수 파일)

 

cp {pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot

-설치된 syslinux 부트로더 파일을 TFTP 배포 디렉토리인 /var/lib/tftpboot에 복사

 

mkdir -p /var/lib/tftpboot/images/centos/6.8/os/x86_64/images/pxeboot

cp /var/ftp/centos/6.8/os/x86_64/images/pxeboot/* /var/lib/tftpboot/images/centos/6.8/os/x86_64

/images/pxeboot

cd /var/lib/tftpboot/images/centos/6.8/os/x86_64/images/pxeboot

ls

vmlinuz : 리눅스 커널을 컴파일한  결과인 바이너리 파일을 bzimage를 사용하여 gzip으로 압축한 파일

리눅스 부팅시 해당 파일이 압축해제 되어 메모리에 로딩이 된다.

initrd.img : 커널 모듈을 모아놓은 이미지로, 커널이 로딩되기 전 메모리에 로딩되어 마우스,키보드,그래픽카드

네트워크 카드 모듈 등이 메모리에 로딩 된다.

 

mkdir /var/lib/tftpboot/pxelinux.cfg

vi /var/lib/tftpboot/pxelinux.cfg/default  //메뉴 구성 파일

 

vi /etc/dhcp/dhcpd.conf    //dhcp설정 파일 수정

 

sentenforce 0

service xinetd restart

service vsftpd restart

service dhcpd restart

 

동작 과정

1) PXE를 통해 DHCP 서버를 발견 후에 IP를 할당 받는다

2) TFTP를 통해 /etc/dhcp/dhcp.conf 에 명시된 pxelinux.0,menu.c32,default 기타 설치 시 필요한

파일을 다운

3) default 파일의 내용대로 부팅 메뉴 실행

4) /var/lib/tftpboot/images/centos/6.8/os/x86_64/images/pxeboot 디렉토리에 위치한 initrd.img,vmlinuz

파일을 받아서 압출을 풀고 부팅

5) 부팅후 centos 설치시 필요한 파일을 받기 위해 /var/lib/tftpboot/pxelinux.cfg/default 파일에 명시한

경로에 설정된 repository경로 확인

 

vm 새로 생성(centos 64-bit)

 

 

Centos 6.8 설치

 

korean 선택

 

설치 완료 성공

 

★KICKSTART - PXE환경에서 자동으로 OS설치 시 필요한 설정 및 기본 설정을 구성해주는 서비스

 

<Server-B>

centos cd 삽입

 

yum -y install tftp-server

mkdir -p /ks/tftpboot/ {kickstart,pxelinux.cfg,centos6.8}

vi /etc/xinetd.d/tftp

 

yum -y install syslinux dhcp

 

vi /etc/dhcp/dhcpd.conf 

 

service dhcpd restart

mount -t iso9660 /dev/cdrom /mnt

yum -y install nfs-utls

 

vi /etc/exports

 

exportfs -a    //설정 적용

exportfs -v      //적용 확인

 

cp /usr/share/syslinux/pxelinux.0 /ks/tftpboot

cp /usr/share/syslinux.menu.c32 /ks/tftpboot

cd /mnt/images/pxeboot

ls

cp ./{initrd.img,vmlinuz} /ks/tftpboot/centos6.8/

 

vi /ks/tftpboot/pxelinux.cfg/default

 

cd /root

ls

vi anaconda-ks.cfg     //참고

vi /ks/tftpboot/kickstart/ks.cfg

 

service iptalbes stop

setenforce 0

service xinetd start

service rpcbind start

service nfs start

service dhcpd restart

 

vm에서 KICKSTART 적용할 리눅스 생성

 

설치 완료 이용가능

'Server > Linux' 카테고리의 다른 글

xshell/ 쉘 스크립트  (0) 2017.05.25
xshell/ WEB,APM,XE  (0) 2017.05.21
xshell/ NFS  (0) 2017.05.14
xshell/ SAMBA  (0) 2017.05.14
xshell/ NTP  (0) 2017.05.11

★NFS (Network File system)

-RPC를 이용하여 리모트 호스트 사용자가 원격지 컴퓨터에 있는 파일을 마치 로컬 파일에 엑세스 하듯이

사용 할 수있도록 하는 클라이언트/서버형 파일시스템 공유 프로토콜

 

★RPC(Remote Procedure Call)  procedure-절차

-원격 프로시저 절차 호출 네트워크 상의 다른 컴퓨터에 위치하고 있는 프로그램에 서비스를 요청하는데

사용되는 프로토콜

 

 

 

NFS서버 설정에서 사용되는 파일

/etc/export

-NFS 서버 설정 파일이며,NFS 서버에서 파일 공유를 위해 사용되는 모든 파일과 디렉토리를 정의

하기 위해 사용

/etc/fstab

-NFS 서버에서 설정한 공유 디렉토리를 NFS 클라이언트에서 사용하기 위해 사용되는 파일.설정 후 자동 마운트

/etc/sysconfig/nfs

-NFS 서버에서 제공하는 NFS 서비스를 위해 사용되는 모든 포트에 대한 정보를 설정하는 파일

NFS패키지 설치와 공유 디렉토리 지정

yum install nfs-utils

rpm -qa | grep nfs

mkdir /var/server_share   //클라이언트에게 공유를 허용할 디렉토리 생성

chmod -R 777 /var/server_share    //클라이언트가 이 디렉토리에 접속해서 파일을 읽기 및 쓰기권한을 사용설정 

vi /etc/exports   //공유 디렉토리 및 옵션을 정의해 설정

 

 

/var/server_share - 클라이언트에게 공유를 허용할 디렉토리 이름

100.100.100.0/24 - 공유된 디렉토리에 접근 가능한 클라이언트 IP범위

rw - 공유 디렉토리에 대한 읽기 및 쓰기 권한을 허용

sync - 파일 시스템 변경시 즉시 이 변경 사항을 동기화 하라는 의미

no_root_squash - root로 공유 디렉토리에 접근 시 NFS서버 시스템에서도 사용자 root로 인식하고

권한을 부여함을 의미

no_all_squash - 각 사용자의 권한을 공유 디렉토리에서도 허용함을 의미

 

exportfs -r  // /etc/exports 파일에 설정한 공유 디렉토리 목록을 리플래쉬 하라는 명령어

 

exportfs명령어는 nfs서버를 다시 시작하지 않고도 공유 목록을 수정할수 있다.

-a : /etc/exports파일을 읽어들인다

-r : /etc/exports파일을 다시 읽어들인다.

-u [ip]:/[디렉토리]  - 입력한 디렉토리를 공유목록에서 제외한다. 

-v : 현재의 공유목록을 확인한다

 

service rpcbind start

service nfs start

- 동적으로 서비스와 포트를 연결할때 RPC서비스를 관리하기 위한 rpcbind 서비스와 nfs-server 서비스를 활성화

lsof -i tcp:111

- rpcbind 서비스가 사용하고 있는 포트111번이 열려 있는지 확인

ps -ef | grep rpc

- nfsd 데몬과 함께 id와 이름을 매칭시켜주는 rpc.idmapd 데몬과 NFS클라이언트의 접근을 허용하는

rpc.moutd데몬도 같이 시작됐음을 알 수 있다.

 

★NFS 서버 시작

rpcinfo -p

-rpc프로토콜을 사용하는 서비스를 출력

 

-RPC는  일부 서비스의 포트를 동적(유동)으로 사용하여 NFS서비스 사용 시 포트를 확인 할 필요가 있다.

 

rpc.portmapper (111)

-rpc를 사용하는 프로그램을 지정된 포트에 맵핑시킨다.

 

rpc.mountd(유동)

-NFS 클라이언트가 마운트를 요청하면 /etc/exports 파일에서 설정된 내용에 따라 마운트 요청을 처리

 

rpc.rquotad(유동)

-NFS 파일 시스템을 마운트한 로컬 사용자에 대해 quota를 처리한다.

 

rpc.nfsd(2049)

-rpc.mountd 데몬에 의해 마운트가 이루어지면 마운트된 공유 디렉토리에 읽고 쓰는 등의 작업을 수행하게 해준다.

 

rpc.locked(유동)

-파일 잠금을 통해 여러 사용자가 동시에 한 파일을 수정하는 것을 방지한다.

 

rpc.statd(유동)

-rpc.locked와 함께 작동하면서 NFS서버가 비정상적으로 종료되었거나 리부팅 했을 경우 복구역할

 

vi /etc/sysconfig/nfs

-유동적인 포트번호는 방화벽에 의해 접근이 차단된다. 따라서 이경우 접속 포트를 유동에서 고정으로 변경해야 함.

STATD_PORT=4000

LOCKD_TCPPORT=4001

LOCKD_UDPPORT=4001

MOUNTD_PORT=4002

RQUOTAD_PORT=4003

 

★Client-Linux

yum -y install nfs-utils

service rpcbind start

service nfs start

mkdir /mnt/client_share  //NFS서버에서 제공하고 있는 공유 디렉토리를 클라이언트에서 마운트하기위해

한개 디렉토리 생성

showmoubt -e 100.100.100.110  //NFS서버가 어떤 공유 디렉토리를 제공하고 있는지 알기 위해 명령어

showmount와 옵션 e(export)를 사용하면 현재 /var/server_share 디렉토리가 제공되고 있음을 확인

 

mount -t nfs 100.100.100.110:/var/server_share/ /mnt/client_share

-mount에 파일 시스템 타입을 지정하고 서버의 ip주소와 디렉토리 이름을 지정한 후 이 디렉토리를

클라이언트의 /mnt/client_share에 마운트한다고 지정

 

mount | grep server

 

Server-A에서 /var/server_share에서 파일생성후

ll /mnt/client_share  //test 파일생성 확인

★Server-A

netstat -a | grep nfs

-NFS 서버인 Server-A에서 명령어 netstat 를 통해 연결을 확인해보면 서버인 master의 nfs와 클라이언트

node1의 임의의 포트가 연결되어 있음을 확인 할수 있다.

 

★자동 마운트

Client-Linux

 

vi /etc/fstab  //NFS서버의 ip주소 공유 디렉토리이름과 로컬의 디렉토리 이름 파일 시스템 타입(nfs)과

기본 옵션을 지정

reboot

mount

 

'Server > Linux' 카테고리의 다른 글

xshell/ WEB,APM,XE  (0) 2017.05.21
xshell/ PXE & KICKSTART  (0) 2017.05.15
xshell/ SAMBA  (0) 2017.05.14
xshell/ NTP  (0) 2017.05.11
xshell/ FTP, VSFTP  (0) 2017.05.11

★SAMBA

- 리눅스 서버에서 원격지의 리눅스 및 윈도우 를 비롯한 SMB/CIFS 프로토콜을 사용하는 다양한 운영체제의

클라이언트에게 파일 및 프린터 공유 서비스를 제공하는 오픈소스 프로그램이다.

- 마이크로소프트가 개발한 SMB(server message block)프로토콜을 사용. 현재는 CIFS이라는 이름으로 불린다

-최신 Samba는 윈도우 서버의 AD(Active Drectory)의 DC(Domain Controller)및 멤버 서버로서의 기능도 제공

 

★Samba서버의 대표적인 기능

- 리눅스 /유닉스 윈도우 클라이언트에 디렉터리 및 프린터 서비스 제공

- 윈도우 도메인에서의 Login을 통한 인증 제공

- 윈도우 NT 스타일의 PDC(Primary Domain Controller) 및 BDC(Backup Domain Controller)의 역할 제공

 

★서버 설치

Server-A(Samba server)

yum -y install samba samba-client samba-common samba-winbind

rpm -qa | grep samba

ls -l /etc/samba        //주설정 파일 확인

ll /var/log/samba        //로그가 저장되는 디렉토리 확인

ll /usr/sbin/{smbd,nmbd}        //서버를 사용하기 위한 두개의 데몬 확인

 

★서비스 시작

service smb start

service smb status

chkconfig smb on

chkconfig --list smb

 

service nmb start

service nmb status

chkconfig nmb on

chkconfig --list nmb

ps -ef | grep smbd    //프로세스 확인

ps -ef | grep nmbd    //프로세스 확인

smbclient -L localhost        //서버 작동 유무 확인 서버의 이름,버전,workgroup 정보 확인

 

nmblookup [HOSTNAME]           

- samba서버의 netbios 이름으로 ip주소를 조회하는 프로그램 . 조회하면 HOSTNAME 서버의 IP주소를 알수있다 

 

NetBIOS(Network Basic Input/Output System)

- Lan 환경에서 윈도우 컴퓨터들이 통신할때 사용하는 통신 서비스

nmblookup Server-A

 

yum -y install lsof        // lsof 패키지 설치
lsof -i udp:137 // lsof를 통해 포트 137번을 확인하면 nmbd 데몬이 Netbios 이름 등록과 삭제에 사용하는

 Netbios 이름 서비스가 작동 중임을 확인할 수 있다.

 

lsof -i udp:138 // lsof를 통해 포트 138번을 확인하면 nmbd 데몬이 Netbios 이름에 Datagram과 브로드캐스트를 주고받기 위해

사용하는 Netbios Datagram 서비스가 작동 중임을 확인할 수 있다.

 

lsof -i tcp:139 // lsof를 통해 포트 139번을 확인하면 smbd 데몬이 Netbios 세션 연결에 사용하는

Netbios 세션 서비스가 작동 중임을 확인할 수 있다.

 

lsof -i tcp:445 // lsof를 통해 포트 445번을 확인하면 smbd 데몬이 액티브 디렉토리 접근과 인증에

사용되는 microsoft-ds 서비스가 작동 중임을 확인할 수 있다

★Samba 서버의 종류

- Stand-alone 서버

- 도메인 멤버 및 도메인 컨트롤러 서버


★Samba Stand-alone 서버 설정

- 워크그룹 서버나 네트워크 환경에서 멤버로 사용되는 서버를 의미한다.

- 가장 많이 사용되는 Samba 서버의 역할이라고 할 수 있다.

- 일반적으로 클라이언트에게 디렉토리 및 프린터 공유를 제공하는

역할을 하는 Samba 서버를 의미한다.


★Samba 서버 설정

전역 섹션 설정

Samba 설정 파일은 세 개의 섹션으로 나누어져 있다.

- [global] - Samaba 서버 전체에 적용되는 환경을 설정하는 섹션

- [homes] - 사용자들의 홈디렉토리로 접근할 때의 권한을 설정하는 섹션

- [printers] - 프린터에 대한 권한을 설정하는 섹션

vi /etc/samba/smb.conf     // vi을 이용하여 Samba 서버 주 설정 파일을 수정

:57         // 글로벌 설정을 의미하는 섹션으로 이동 (57 [global])

:74         // Samba 서버가 속한 워크 그룹을 의미하며, 해당 그룹에 속한 클라이언트만이 서버에

접근이 가능하며, 공유그룹을 의미한다. (workgroup = MYGROUP)

★Samba 서버 설정 [global]

server string = Samba Server Version %v    

-Samba서버를 설명하기 위해 사용

77 : netbios name =MYSERVER

-Samba서버의 Netbios 이름을 의미

79 : interfaces = l0 eth0 192.168.12.2/24 192.168.13.2/24

-인터페이스 지정 IP주소 뿐만 아니라 인터페이스 이름도 가능

80 : hosts allow = 127.192.12. 192.168.13

-Samba서버접속이 가능한 네트워크 주소를 지정할수 있다.

 

[Global]

workgroup : Windows의 작업 그룹 이름

server string : Windows 네트워크에 보이는 컴퓨터 설명 생략가능

netbios name : Windows Network에 참가하는 컴퓨터 이름

hosts allow : 삼바서버에 접속할 클라이언트 IP


[공유이름]

comment = 공유디렉토리 설명 (생략가능)

path = 공유할 디렉토리 절대 경로 (절대 경로)

read only = 디렉토리 읽기 쓰기 여부 yes는 읽기전용 no는 읽기 쓰기

guest ok = 게스트 사용자도 사용하게 할지 여부

 

 

 

log file = /var/log/samba/log.%m     // 로그 파일의 위치 및 이름을 지정하는데, %m은 클라이언트의

NetBios 이름을 의미한다. 즉, 클라이언트 별로 로그가 기록된다.

 

max log size = 50     // 로그 파일의 크기글 지정하는데 단위는 킬로바이트(kb)다.

 

security = user     // Smaba 서버 실행되는 모드를 의미하며, 모드는 사용자 레벨과 공유레벨 두 가지가 있다.

 기본은 사용자 레벨이 사용되는데, Smaba 서버 접속 시 사용자 정보와 패스워드가 필요하다는 의미다.

 

passdb backend = tdbsam     // Samba 서버의 사용자 정보를 저장할 데이터 베이스 백앤드를 의미하며,

tdbsam과 ldapsam 두 가지가 올 수 있다. 기본값은 tdbsam으로서 명령어 smbpasswd를 이용해

사용자 및 패스워드를 생성할 수 있다.
 

map to guest = Bad user     //계정이 없는 로그인은 모두 guest계정으로 맵핑하라는 의미이다. 추가해주어야 한다.

 

★공유 디렉토리 설정

mkdir -p /samba/share       //클라이언트에게 제공할 공유 디렉토리 생성

chmod -R 777 /samba/share   //모든 권한 허용

vi /etc/samba/smb.conf        //서버 주설정 파일 수정  

 

 

path = /samba/share     // share라는 섹션을 생성한 다음 공유할 디렉토리의 경로를 지정

writable = yes         // 디렉토리에 대한 읽기 및 쓰기 권한을 부여

guest ok = yes     // 공유 디렉토리로 접근하는 사용자의 이름과 패스워드가 필요 없다는 의미

guest only = yes     // 공유 디렉토리로 접근하는 모든 사용자를 guest로 제한한다는 의미

create mode = 0777     // 공유 디렉토리에서 클라이언트가 생성하는 파일 및 디렉토리에     

할당되는 권한을 의미

directory mode = 0777 // ..

 

service smb restart

service nmb restart

testparm    //enter키 입력 결과 출력

 

<Client-Linux>

yum -y install samba-client

smbclient -L Server-A

-samba서버가 제공중인 공유 디렉토리를 확인하기 위해 명령어 smbclient에 server-A를 지정하면 그결과

에서 현재 공유중안 다랙토라 목록 share를 발견할수 있다.

 

cp /etc/passwd /root   //테스트 파일을 복사

smbclient //SERVER-A/share   //Server-A공유 디렉토리 share로 사용자 지정없이 접속을 시도

smb: \> put passwd

smb: \> mkdir test_dir

smb: \> ls

 

<Client-Win>

-윈도우 시작 메뉴의 검색창에서 실행을 입력해 samba서버의 ip주소와 디렉토리를 입력하고 확인을 클릭

-samba 서버에서 설정한 공유 디렉토리 share로 접근하면 디렉토리에 있는 파일이나 디렉토리를 확인할수 있다.

 

 

vi /etc/samba/smb.conf

 

[Security]  //samba 설정 파일을 열어 먼저 공유를 정의하는 곳에 security라는 섹션을 생성

 path=/samba/sec_share   //공유 섹션이 실제 어느 디렉토리를 이용하는지 경로지정

writable=yes

create mode=0770

directory mode=0770

guest ok=no  //인증을 거치지 않는 guest사용자들은 접속을 허용치 않는다

valid users=@smbgroup  //이 디렉토리에 접근 가능한 사용자들은 모두 smbgroup에 속한 사용자들임을 지정

@은 그룹이름을 의미.

 

★공유디렉토리 인증 설정

groupadd smbgroup

mkdir /samba/sec_share

chgrp smbgroup/samba/sec_share

chmod 770 /samba/sec_share

useradd samba-user1

passwd samba-user1

 

smbpasswd -a samba-user1

- samba서버에 접속 가능한 사용자를 명령어 smbpasswd로 생성하는데 이사용자는 시스템의 /etc/passwd에 등록된

사용자여야 한다.

- a(add user) 옵션을 이용해 사용자의 패스워드를 변경함으로써 smbpasswd파일에 저장하라는 의미

 

pdbedit -L    //samba 사용자 데이터베이스를 관리하는 명령어 pdbedit에 옵션 L(list) 사용하면 앞에서 생성한

사용자의 접오가 ID와 함께 나타난다.

usermod -G smbgroup samba-user1

service smb restart

service nmb restart

 

<Client-Linux>

cd /etc/

smbclient -L Server-A

smbclient //SERVER-A/Security -U samba-user1

-U 옵션을 이용하여 사용자 계정으로 공유 디렉토리 Security에 접속한다

 

smb: \> mkdir test     // 디렉토리 생성 테스트

smb: \> ls     // 생성 확인

smb: \> put passwd     // 파일 업로드 테스트 (현재 경로 /etc)

smb: \>         // 세션을 해제하지 말고 대기

 

<Server-A>

smbstatus Server-A

- 접속한 클라이언트의 IP주소와 접근한 공유 디렉토리 및 시간 등의 정보를 확인가능

 

<Client-Win>

\\100.100.100.110\ 실행창 입력

 

유저 아이디와 비밀번호 입력

 

'Server > Linux' 카테고리의 다른 글

xshell/ PXE & KICKSTART  (0) 2017.05.15
xshell/ NFS  (0) 2017.05.14
xshell/ NTP  (0) 2017.05.11
xshell/ FTP, VSFTP  (0) 2017.05.11
xshell/ DHCP  (0) 2017.05.06

★NTP(Network Time Protocol)-시간 동기화 프로토콜

-네트워크상에 분산된 NTP서버들로 부터 클라이언트의 시간을 동기화

-UDP:123포트를 사용한다

-NTP 방식은 Stratum이라는 계층 구조를 가진다.

 

Stratum 0 - 세슘원자시계,GPS,표준주파수 방송국 등 (Primary Reference Clock)

Stratum 1 - Stratum 0에 직접 연결하여 동기화 시킨 서버 (Primary Time Server)

Stratum 2 - 2계층부터는 트리구조

Stratum 3 - 3계층 서버 리스트 

 

time.bora.net        LG U+

ntp.ehwa.or.kr        이대부속초등학교

time.kornet.net        KT

time.windows.com        MicroSoft

time.kriss.re.kr        한국표준과학원(KRiss)

 

Stratum 4 - Server-A

Stratum 5 - Server-B,Client-Linux,Client-Win

★NTP 서버 (Server-A)

yum -y install ntp

cp /etc/ntp.conf/root    //원본 주 설정 파일 백업

vi /etc/ntp.conf

999dd 한번에 지우기

service ntpd restart    //데몬 시작

 

★NTP 클라이언트(Server-B, Client-Linux)

yum -y install ntp

cp /etc/ntp.conf /root    //원본 주 설정 파일 백업

vi /etc/ntp.conf

999dd

 

★NTP 확인

ntpq -p    // NTP서버와 동기화 상태 확인

 

Server-A

 

 

"공백" - reject 접속 불가    //reject - 거부하다

"+" - candidate 연결 가능한 서버  //candidate-지원자

"*" - sys.peer 동기화 중인 서버

remote - 원격 타임 서버 목록

refid - 참조 id (다음 NTP서버의 주소)

iburst옵션 - 기존 시간과 많이 차이가 나거나 동기화가 되지 않을경우 동기화 시간 단축 시키는 옵션

 

★rdate - ntp 서버의 시간 정보 확인

rdate[NTP서버]

-s 옵션 지정한 NTP서버의 시간으로 동기화

 

VM전체 적용

chkconfig ntpd on

 

★clock - CMOS 시간 명령어 (H/W에서 사용하는 시간)

clock [옵션]

-w 리눅스 시스템 시간으로 CMOS시간을 조정

-s CMOS시간으로 리눅스 시스템의 시간을 조정

 

BIOS와 CMOS?????

BIOS (basic input output system) 기본적인 입출력을 담당하는 기본적인 운영체제

CMOS - 바이오스가 새겨진 칩 칩이 새겨져 있어 맘대로 삭제 수정 불가능

 

cd /root

vi /ntp_script.sh

 

실습

문제1 - 20분에 한번씩 해당 스크립트가 동작하도록 설정(crontab)

힌트 - vi /etc/crontab

 

Server에서 시간이 중요한 이유

1.예약작업의 실행 불가능한 상황 방지

2.로그에 대한 신뢰도

로그 - 시스템 장애나 침해가 발생했을때 가장 먼저 확인해야할 파일이 로그.

로그 시간이 틀린다면 신뢰할수 없다.

 

3.인증 암호화 인증 프로토콜 과정에서 Timestamp 및 Lifetime(TTL)이 추가

4.백업 시점

-마스터와 슬레이브 간 시간차가 발생하게 되면 백업이 되어진 시간이 달라 서로 동기화가 되지 않을수 없다. 

 

'Server > Linux' 카테고리의 다른 글

xshell/ NFS  (0) 2017.05.14
xshell/ SAMBA  (0) 2017.05.14
xshell/ FTP, VSFTP  (0) 2017.05.11
xshell/ DHCP  (0) 2017.05.06
xshell/ DNS3 (Slave,Master,고급기능)  (0) 2017.05.05

★FTP(File Transfer Protocol)

- TCP/IP 프로토콜 기반의 서버와 클라이언트 간에 파일 전송 시 사용되는 프로토콜

- 대용량 /대량 의 파일 전송에 특화 되어 있는 프로토콜

 

초기 FTP는 Telnet과 로그인 과정에서 평문으로 데이터가 전송되어 보안에 취약.

 

★FTP 보안 강화

FTPS (FTP over SSL)

-  FTP의 확장된 기능으로 응용계층에서 동작하는 FTP와 전송계층 TCP사이에 보안 소켓 계층(SSL)을 추가하여 사용

SFTP(SSH)

- 서버와 클라이언트 간의 데이터 전송시 계정 정보등을 암호화 하여 보안을 강화한 프로토콜

★FTP 서비스 제공 포트

FTP 프로토콜은 TCP 20번과 21번을 사용해 서비스를 제공한다.

두개의 포트를 사용하는 이유

- 접속제어를 위한 포트와 데이터 전송을 위한 포트가 서로 다르기 때문

 

TCP 20 - 데이터 전송 시 사용 (DATE Port)

TCP 21 - 접속 제어를 위한 명령어 전달(Command Port)

 

★FTP 동작 방식

Active(능동)모드와 Passive(수동) 모드가 있다

 

★Active Mode

- 클라이언트는 임의의 포트(1800)를 사용해 서버의 포트 21번으로 접속을 시도한다

- 클라이언트는 서버에게 클라이언트의 포트(1801)가 몇번인지 알려준다

- 서버는 클라이언트가 알려준 포트(1801)로 접속을 시도

- 클라이언트가 접속을 허락하면 포트20번을 통해 데이터 전송이 이뤄진다.

 

문제점

- 서버가 클라이언트에게 접속하는 방식으로 방화벽 혹은 ISP에서 외부에서의 접속을 허용하지 않는다면

정상적인 FTP동작을 할 수 없다.

 

★Passive Mode

- 클라이언트에서 임의포트(1800)를 이용해 서버의 포트21번으로 연결을 시도

- 서버는 클라이언트에게 서버의 어느 포트(1024번 이후)를 사용해 데이터를 전송할지 알려준다

- 클라이언트는 서버가 알려준 포트로 접속 시도

- 서버는 클라이언트에게 정상 수신을 의미하는 메시지 보낸다. 서버포트20번은 사용하지 않는다

 

단점 - 서버의 방화벽은 서버의 1024번 이후의 포트도 모두 개방해야 하는 정책을 사용

  -  well-know 서비스는 1024번 이내에 제공되기 때문에 방화벽 정책상 그 이후의 포트 또한 모두 필터링

할수 없다는 문제가 발생하게 된다.

 

★VSFTP (very secure FTP)

- FTP서버용 프로그램

- 안정적이면서 빠른 속도로 서비스 제공과 뛰어난 보안적인 측면

- ASCII 모드로 파일이 전송되는 것을 금지하여 DoS 공격 방지

 

참고]
아스키모드 : html, htm, txt, cgi, pl, php, phtml, php3, sql, c, ph, py 등등
바이너리모드 : gif, jpg, swf, png, exe, asf, wmv, zip, rar, gzip, tar.gz 등등
아스키모드는 파일을 열었을때 번역이 되지않은것  (판독이 가능한것)
바이너리는 아스키모드와 반대로 번역이 된것    (소스판독 불가능)
html, htm, php 등등 일반적인 웹페이지 제작에 쓰이는 파일은 아스키모드, 바이너리 모드 모두 적용 가능하다.
그러나 cgi 와 같은 파일은 반드시 아스키모드를 사용해야 한다.
 
아스키란? (ASCII code)
미국에서 제정된 데이터처리 및 통신시스템 상호간의 정보 교환용 7bit표준 코드 ASCⅡ라고도 하는데,
이는 American Standard Codefor Information interchange(미국정보교환용표준코도)의 약칭이다.

 

★VSFTP 기본설정

 

★Server-A

yum  -y install vsftpd

rpm -qa | grep vsftpd

service vsftpd start    //vsftpd 서비스 데몬 시작

service vsftpd status      //데몬 기동후 동작 확인      

chkconfig vsftpd on        //부팅 후에 자동으로 서비스가 시작 되도록 설정

chkconfig --list vsftpd    //동작 런레벨 확인

 

ps -ef | grep vsftpd        //VSFTPD 프로세스 확인

netstat -tulpn | grep 21     //netstat를 사용해 FTP서버가 포트21번이 오픈되어 서비스 제공중인지 확인  

grep ftp /etc/services        //FTP서버가 사용하는 포트20번과21번 정의된 파일 확인        

 

★Anonymous 사용자 설정

- anonymous 계정으로 접속 되는 디렉토리는 /var/ftp다.

- anonymous 계정은 ftp전용 사용자로 기본적으로 내장되어 있다.

- 특별한 암호 없이도 ftp 접속이 가능하다

 

cat /etc/passwd | grep ftp    //ftp계정확인

 

vi /etc/vsftpd/vsftpd.conf    //vsftpd 서버의 기본 설정 파일 수정

 

anonymous_enable=yes   //anonymous사용자들에게 다운로드를 허용

anon_upload_enable=YES     //업로드를 허용

write_enable=YES    //업로드를 허용한후 실제 파일 쓰기 기능을 허용

anon_mkdir_write_enable=YES    //특정 디렉토리 생성을 허용

chown_uploads=YES    //업로드한 모든 파일의 소유권을 변경

chown_username=ftp        //업로드한 파일의 소유자를 ftp로 지정

anon_umask=077    //업로드한 파일의 기본권한을 지정

mkdir /var/ftp/upload

chown root:ftp /var/ftp/upload

chmod 773 /var/ftp/upload        //파일 업로드를 할 수 있도록 허가 권한을 부여

service vsftpd restart

cp /boot/vm* /var/ftp/pub/down_test1      //다운로드 테스트에 필요한 파일을 복사

 

Client-Linux(VSFTP Client)

cd /tmp

cp /etc/passwd ./        //업로드에 사용될 파일을 복사

 

★FTP Client 설치

★Client-Linux

yum -y install ftp

ftp ftp.donghyun.com = ftp 100.100.100.110

 

 

★FTP Client 명령어

 

<get,put> 실습

 

테스트 확인 >

put으로 passwd 업로드 , 파일 생성확인

 

<mget,prompt> 실습

promp 질의 없이 바로 다운

 

★실습 문제

(1)클라이언트에서 FTP 서버 접속 후, pub디렉토리와 upload디렉토리에서 'test_dir'생성후 결과확인

(2)ls명령어를 이용하여 디렉토리 목록 출력 결과 확인

(3)클라이언트에서 pub,upload 디렉토리에서 mkdir과 ls명령어 실행이 가능하도록 설정

 

(1),(2)

ls 명령어 확인이 안되는것을 알수 있다.

 

(3)

폴더 허가권 777모드로 해줘야된다.

 

★FTP 접속 허용을 위한 기본설정

-리눅스 서버에 등록된 계정 사용자에게 FTP서버 접속을 허용하기 위한 설정

vi /etc/vsftpd/vsftpd.conf

local_enable=YES    //로컬 계쩡 사용자의 접근 허용

write_enable=YES    //파일 생성,수정 허용 여부

local_umask=022    //디렉토리=755,파일=644 권한설정

service vsftpd restart

 

★접속 테스트

Server-A

useradd ftp-user1

passwd ftp-user1

 

Client-Linux

ftp ftp.donghyun.com

 

Server-A

fuser -v ftp/tcp

- (프로세스 확인 명령어 fuser) ftp 서비스와 프로토콜 tcp를 조회하면 ftp-user1이라는 사용자가 접속한 PID

번호를 확인 할수 있다.

 

★보안 설정

vi /etc/vsftpd/ftpusers    //로그인을 승인하지 않는 목록

//패스워드를 정확히 입력해도 거부

 

vi /etc/vsftpd/user_list    //로그인을 승인하는 목록

//패스워드 입력을 묻지 않고 거부

 

user_list 파일에 등록되어 있더라도 ftpusers에 등록된 사용자는 접속 불가능

user_list 파일은 거부/승인 목록이 될 수 있다. (userlist_deny=YES/NO)

Yes = 등록된 사용자 ftp 거부

NO = 등록된 사용자 ftp 허용

 

service vsftpd restart

 

★Client-Linux(VSFTP Client)

ftp ftp.donghyun.com

기본설정 로그인 불가

 

ftpusers에 root인경우 패스워드 입력후 거부

 

ftpusers에 샵root 로그인 성공 ls 확인 root경로 파일들 확인

 

<Server-A>

useradd ftp-user2

useradd ftp-user3

passwd ftp-user2

passwd ftp-user3

 

ftp-user1 계정 ftp접속 불가능 설정(/etc/vsftpd/ftpusers)

ftp-user2 계정 ftp접속 가능 설정(/etc/vsftpd/user_list)

ftp-user2 접속 확인

 

★PAM을 이용한 로그인 제한

PAM (Pluggable Authentication Module)

- 서비스 접속 및 각종 인증에 사용되는 모듈

 

Pluggable-접속할 수 있는

Authentication-인증

Module-단위

 

(1)cat /etc/pam.d/vsftpd

-인증을 담당하는 2번째 줄 auth에서 해당 설정 확인

vsftpd의 PAM설정을 확인한다

 

sense=deny -> 해당 파일이 없거나 파일명이 다르면 접속을 허용

file=/etc/vsftpd/ftpusers -> 해당 파일에 등록되어 있는 사용자는 접근 금지

 

★VSFTP 인증절차

 

(1) 클라이언트가 FTP서버에 서비스 요청(로그인)

(2) VSFTP서비스가 PAM에게 인증을 요청 (위임)

- /etc/vsftpd/vsftpd.conf 설정 중 pam_service_name=vsftpd 옵션 확인 후 PAM설정 확인

 

(3) PAM 설정 파일 확인

- /etc/pam.d/vsftpd 파일의 모듈 및 설정 내용 확인

(4) 인증 결과를 서버에게 전달

- sense=deny, onerr=succeed

(5) FTP서버는 PAM인증 결과로 VSFTP서비스 승인/거부를 진행

 

 ★실습

-vsftpd.conf 설정 변경 후 진행

#userlist_enable=NO    //주석

userlist_deny=NO

 

(1)/etc/vsftpd/ftpusers 파일에 ftp-user3을 추가한 후 접속을 시도한 뒤에 /var/log/secure 파일을

tail로 확인해 PAM에 의하여 인증이 실패해서 서비스 접근이 거부되었다는 메세지를 확인

 

(2)/etc/vsftpd/ftpusers 파일에 ftp-user3을 추가한 후 접속이 가능하도록 vsftpd PAM설정 파일수정

 

(3)ftp-user3접속을 성공 했다면 userlist_enable=YES로 변경하여 데몬 재시작후 로그인 시도

 

(4)userlist_deny=NO 옵션을 변경하여 로그인 시도

 

 

(1)

 

(2)

 

(3)

 

userlist_deny=NO로 하고 로그인 시도시 접속 실패 확인

userlist_deny=YES로하고 로그인 시도시 접속 성공 확인

 

★chroot 적용하기

 

vi /etc/vsftpd/vsftpd.conf        //사용자가 접근 가능한 최상위 디렉토리가 자신의 홈 디렉토리로 제한된다는 의미

chroot_local_user=YES            //로컬 유저에게 chroot 적용을 한다

allow_writeable_chroot=YES          //자신의 홈디렉토리로의 접근을 허용한다      

chroot_list_enable=YES        //chroot 예외 설정을 위한 기능을 활성화 한다

chroot_list_file=/etc/vsftpd/chroot_list    //모든 계쩡 사용자에게 chroot를 적용했지만 예외로 chroot기능을 적용하지

않을 사용자를 정의하기 위해 사용하는 옵션이다.

 

★chroot 실습

 

Server-A

(1)ftp-user1, ftp-user2 계정의 홈디렉토리 임의의 파일 생성

(2)vi /etc/vsftpd/chroot_list    

-chroot가 적용되면 홈디렉토리 이상의 경로로 이동이 불가능하게 된다.

(3)ftp-user1 계정을 chroot_list 파일에 포함

(4)ftp-user2 계정은 포함 하지 않는다

 

Client-Linux

(5)ftp-user1 계정으로 FTP서버에 접속하여 현재 경로 및 리스트를 출력한다.

(6)ftp-user2 계정으로 FTP서버에 접속하여 현재 경로 및 리스트를 출력한다.

-FTP서버의 보안을 고려한다면 chroot를 사용할것을 추천

 

ftp-user1만 chroot 적용

 

Client-Linux

 

ftp-user1

 

ftp-user2

보안상 ftp-user2가 더 뛰어나 보인다

 

★접근과 연결제한

TCP_WRAPPER

-Xinetd 데몬에 의해 수행되는 서비스들의 접근 제어 프로그램

 

(1)vi /etc/vsftpd/vsftpd.conf

tcp_wrappers=YES

 

(2)vi /etc/hosts.deny

vsftpd:ALL

-모든 네트워크로부터 VSFTP 서버로의 접근을 금지한다는 규칙생성

 

(3)vi /etc/hosts.allow

vsftpd:*.donghyun.com 100.100.100.0/255.255.255.0

-도메인의 모든 호스트에 접근을 허용하고 100.100.100.0/24 대역의 네트워크의 접근도 모두 허용한다.

 

(4)tcpdmatch vsftpd 100.100.100.130

-vsftpd 서비스에 대해 클라이언트를 조회하면 접속이 허용(granted)되어 있음을 알수있다.

 

vi /etc/hosts.allow 파일의 설정을 주석처리 한후 tcpdmatch와 클라이언트 접속 테스트 결과 확인

두 파일중 /etc/host.allow 파일은 /etc/hosts.deny 파일보다 우선순위에 있어서 hosts.allow에 규칙이 먼저 해석

규칙의 순서가 아주중요

host.allow나 hosts.deny 어떤 변경을 하게 되면 네트워크 서비스를 다시 시작하지 않더라도 바로 적용

 

★VSFTP 보안 기능 설정 : SFTP와 FTPS

-일반적으로 FTP 서버를 이용한 파일 전송은 보안 기능이 적용되지 않는다.

-안전한 파일 전송을 위해 사용하는 방법은 SFTP와 FTPS를 사용한다

 

★Server-A

 

yum -y install openssh-server openssh

-sftp 명령어를 사용하려면 SSH패키지가 설치

vi /etc/ssh/sshd_config

-SSH 서버에 외부 프로그램을 사용하기 위해 설정하는 키워드 Subsystem에 이름 sftp와 internal-sftp를 지정

Subsystem sftp internal-sftp

- internal-sftp는 ChrootDirectory옵션을 사용해 각 사용자별로 chroot를 적용하기 위해 새롭게 만든 이름

Match Group sftp-users

- 정의된 sftp를 사용할 그룹이름과 그옵션이 정의

ChrootDirectory /home/%u

ForceCommand internal-sftp

- 그룹에 속한 사용자들은 ssh및 scp를 사용할수없고 오직 sftp만 가능 또한 chroot가 적용되 자신의 홈디렉토리를

루트 디렉토리로 인식

 

service sshd restart

groupadd sftp-users    //SFTP 사용이 적용될 그룹 생성

useradd -g sftp-users sftp-user1

useradd -g sftp-users sftp-user2

passwd sftp-user1

passwd sftp-user2

id sftp-user1

 

mkdir /home/sftp-user1/test_dir

chmod -R 755 /home/sftp-user1

chown -R root:sftp-users /home/sftp-user1

-chroot를 적용하기 위해서 소유자 외에 쓰기 권한을 제거하며 디렉토리의 소유자를 변경

 

★Client-Linux

 

yum -y install openssh-clients

ssh sftp-user1@ftp.donghyun.com

-FTP 서버로 ssh 접속을 시도하면 sftp 서비스만 사용할 수 있다는 메시지와 함께 연결이 끊기게 된다

 

sftp sftp-user1@ftp.donghyun.com

-sftp 접속을 시도하면 정상적으로 접속이 이뤄진다

 

sftp sftp-user2@ftp.donghyun.com

-sftp 접속이 가능하나 디렉토리에 권한이 없어 명령어 사용에 제한이 된다

 

★Client-Win

filezila 접속

윈도우와 sftp-user1이 파일공유 가능하다

 

★SSL/TLS 이용한 FTPS 사용

-SFTP가 VSFTP 자체에 보안을 접목한 것이 아니라 SSH를 이용해 안전한 연결 및 전송을 보호하기 위해 사용된다면

FTPS는 VSFTP 서버에 SSL/TLS를 직접 적용해 FTP연결을 암호화함으로써 안전한 전송을 보장하기 위해 사용되는 프로토콜

 

 

'Server > Linux' 카테고리의 다른 글

xshell/ SAMBA  (0) 2017.05.14
xshell/ NTP  (0) 2017.05.11
xshell/ DHCP  (0) 2017.05.06
xshell/ DNS3 (Slave,Master,고급기능)  (0) 2017.05.05
xshell/ DNS2 (도메인 설정)  (0) 2017.05.03

 

DHCP서버 (Server-A)
DHCP Client (Server-B, Client-Linux, Client-win)

 

★DHCP(Dynamic Host Configuration Protocol)
-IP 주소와 각종 TCP/IP 프로토콜의 기본 설정을 각 클라이언트 에게 동적으로 제공하는 프로토콜
-IP 주소 설정, 중복 방지, Gateway, Subnetmask, DNS서버 주소등을 클라이언트가 네트워크 통신을

  하기위한 가장 기본적인 환경을 자동으로 구성해 준다.

-한정된 IP를 유연하게 활용할 수 있으며, 클라이언트 들의 IP관리가 수월해진다.

-IP주소 풀에서 클라이언트들에게 IP주소 임대(Lease)해주며,IPv4,v6지원을 한다.

 

Gateway - 컴퓨터 네트워크에서의 게이트웨이는 현재 사용자가 위치한 네트워크에서 다른 네트워크(인터넷 등)로 이동하기 위해 반드시 거쳐야 하는 거점을 의미한다. 자동차 고속도로로 진입하기 위해 통과하는 톨게이트(tollgate)와 유사한 개념이다.

 

서브넷 마스크 - 호스트 이름으로부터의 IP 주소지에 대한 네트워크의 이름을 규정하는 것으로 32비트의 크기로 만들어 졌다.

 

컴퓨터가 30대 -> IP주소 20개

 

<<각 클라이언트들의 IP주소를 동적으로 할당 후,정적(고정/static)IP 설정>>

 

★DHCP 서버(Server-A)
yum -y install dhcp*      //패키지 설치
vi /etc/dhcp/dhcpd.conf     //주 설정 파일 수정

 

subnet 100.100.100.0 netmask 255.255.255.0 {     //dhcp를 적용할 네트워크 범위지정
        range 100.100.100.10 100.100.100.20;        //IP 풀(IP임대 범위)
        option routers 100.100.100.2;        //Client 에게 적용할 게이트 웨이 주소
        option broadcast-address 100.100.100.255;    
//Client 에게 적용할 브로드케스트 주소
        option subnet-mask 255.255.255.0;        //Client 에게 할당할 서브넷 마스크 주소
        option domain-name-servers 100.100.100.110, 100.100.100.120;     
//Client에게 할당할 DNS주소
        default-lease-time 7200;        
//기본 임대 시간
        max-lease-time 14400;        
//최대 임대 시간 - 클라이언트가 기본임대시간을 초과하여 사용할 경우

최대로 임대  할 수 있는 시간

      }


service dhcpd restart     //dhcp 데몬 기동

 

/var/lib/dhcpd/dhcp.leases //IP임대 기록이 저장되는 파일

 

Server-B,Client-Linux
vi /etc/sysconfig/network-scripts/ifcfg-bond0
  //수정

 

service network restart     //Client-Linux.Server-B
xshell 네트워크 끈킴

 

vm 에서 ifconfig명령어 이용하여 ip주소확인
할당받은 ip는 range 즉 ip주소 풀내에서 할당 받아야한다
★(100.100.100.10~100.100.100.20)

 

Server-B

 

Client-Linux

 

Client-Win (DHCP Client)

고정 IP설정을 동적IP설정으로 변경


★Server-A (DHCP Server)

service dhcpd start        //dhcpd 데몬 chkconfig 등록

chkconfig dhcpd on

 

★Server-B,Client-Linux,Client-Win (DHCP Client)IP 주소 확인

LinuxOS        Windows

ifconfig            ipconfig /renew

eth0,bond0       로컬 영역 연결

 

★고정 정적 Static IP설정

Server-A (DHCP Server)
cat /var/lib/dhcpd/dhcpd.leases    //ip 임대 기록이 저장되는 파일

 

 

★MAC 주소 확인 방법

LinuxOS    WindowsOS

ifconfig        ipconfig

 

Server-B (MAC)

 

Clinet-Linux (MAC)

 

Client-Win (MAC)

 

★dhcp 주설정 파일에 아래와 같은 양식으로 추가

Server-A

service dhcpd restart 데몬 재기동 후


각 클라이언트 네트워크 재시작 이후 명시한 ip로 설정되어 있는지 확인

-service network restart


원도우즈 재부팅
server-B Client-Linux xhsell 접속 확인

 

'Server > Linux' 카테고리의 다른 글

xshell/ NTP  (0) 2017.05.11
xshell/ FTP, VSFTP  (0) 2017.05.11
xshell/ DNS3 (Slave,Master,고급기능)  (0) 2017.05.05
xshell/ DNS2 (도메인 설정)  (0) 2017.05.03
xshell/ DNS ssh  (0) 2017.05.01

★마스터와 슬레이브 네임 서버 구축

슬레이브 네임 서버마스터 네임 서버가 제공하는 도메인에 대한 정보를 그대로 저장해 마스터 네임서버가

어떤 이유로 인해 정보를 제공하지 못하는 경우 마스터 네임 서버를 대신해 서비스를 클라이언트에게 제공하는

네임 서버를 의미한다.

 

Master 네임서버 (Primary, Main)

Slave 네임서버 (Secondary, Backup)

마스터 서버에서 도메인에 대한 설정 정보를 슬레이브 서버에게 전달 할때 서로에 대한 인증이 필요하며, 이때

사용하는 방법은 2가지로 IP주소와 TSIG(Transaction Signatures)를 사용하는 방법이 있다.

 

★마스터 네임 서버 설정

vi /etc/named.rfc1912.zones

 

allow-transfer{ 100.100.100.120; };  추가

파일에서 정보를 전달할 존을 선택한 후 allow-transfer 옵션에 슬레이브 서버의 ip주소를 입력해 해당

도메인에 대한 정보를 전달 받을수 있도록 허용

 

vi /var named/DongHyun.zone

도메인 DongHyun.com에 대한 슬레이브 네임 서버 설정을 위해 데이터 베이스 파일을 열어

슬레이브 네임 서버의 ip를 추가한다.

 

service named restart     //변경된 정보가 적용되도록 네임 서버 데몬 시작

cat /var/log/messages | tail -2     //마스터 네임 서버가 DongHyun.com에 대한 정보를 제공할 준비가 되어 있다는 것을

확인 할 수있다.

 

★슬레이브 네임 서버 설정

 

Server-B

yum install bind*     //bind 패키지 설치

vim /etc/named.conf    //named.conf 기본 설정 변경

 

vi /etc/named.rfc1912.zones

type slave;

- type은 master가 아닌 slave로 해당 도메인에 대한 정보를 마스터 서버로 부터 제공 받을수 있도록 설정

file "slaves/DongHyun.zone";

- 마스터 서버로 부터 해당 도메인에 대한 정보를 제공받는 경우 저장될 디렉토리와 파일명을 지정해야 한다.

masters { 100.100.100.110; };

- 마스터 서버의 IP주소를 지정해 도메인 정보를 제공 받을 수 있도록 한다.

 

cd /var/named        //데이터 베이스가 생성될 디렉토리로 이동

service named restart      //데몬을 재시작하여  슬레이브 네임 서버가 마스터 서버로 부터 파일을 받아오는지 확인  

ls -l        //slaves 디렉토리 생성 확인

cd slaves    //slaves 디렉토리 이동

ls -l    //존 데이터베이스파일 확인

 

Server-A(Master)

tail -2 /var/log/messages    //마스터 네임 서버가 슬레이브서버에게 파일을 전송하면 해당 로그가 남는다.

★중간 설정 확인

vi /etc/resolv.conf

 

vi /etc/sysconfig/network-scripts/ifcfg-eth0

 

setenforce 0

service iptables stop

service network restart

service named restart

 

Server-B도 위와 같은 환경으로 바꿔준다

 

Server-B (Slave)

dig @ns.DongHyun.com DongHyun.com ns     //DongHyun.com의 현재 동작하고 있는 네임 서버가 무엇인지 확인 한다

Server-A (Master)

service named stop    //슬레이브 네임 서버가 정보를 제공 하는지 테스트를 위해 마스터 네임 서버의 데몬을 중지 시킨다.

 

Server-B(Slave)

dig @ns2.DongHyun.con www.DongHyun.com    //www.DongHyun.com 에 대한 정보를 제공하는 서버가 슬레이브 네임 서버의 IP주소임을 확인 한다.

 

nslookup        //정방향 조회 시도후 확인

★슬레이브 네임 서버 실습

실습:  master 네임 서버 (Server-A)의 named 데몬을 중지 후에도 slave 네임 서버 (Server-B)에서 Reverse lookup

이 가능하도록 설정

힌트) 마스터 서버로 부터 Reverse zone 파일을 받아오도록 설정, 마스터 서버는 슬레이브에게 Reverse zone 파일을

전송해주도록 설정

 

Server-A (Master)

vi /etc/named.rfc1912.zones //추가

 

Server-B (Slave)

vi /etc/named.rfc1912.zones     //추가

 

Server-A (Master)

service named stop

 

Server-B (Slave)

nslookup

>100.100.100.110    

 

★DNS 서버의 고급 기능

 

ACL (Access Control List)

- 네임서버로의 접근을 제어하기 위해 사용하는 Bind의 기능이다.

- 클라이언트의 네임 서버로 접근을 허용할지, 아니면 거부할지를 결정할 수 있다.

- 네트워크 대역이나 호스트들을 명칭으로 지정하여 사용하는 방법이다.

 

Server-A (Master)

vi /etc/named.conf

ACL 설정을위해 파일 수정. 키워드 acl를 사용해 이름 "trusted" 생성 후 네트워크 주소 혹은 IP주소를 추가하여

allow-query에 "trusted"를 적용을 하면 해당 클라이언트의 요청만 허용하도록 설정 할 수 있다.

 

슬레이브 네임 서버를 구축하는 경우 IP주소를 지정하고 acl slave를 만들어서 allow-transfer 와 함께 사용하면 각 도메인의

슬레이브 네임 서버를 지정할 필요가 없으며, named.rfc1912.zones 파일의 allow-transfer에서 ip 대신 acl이름을 사용 할수 있다.

 

acl slave에 지정된 서버에게만 도메인 정보가 담긴 파일 전송을 허용한다는 의미가 된다.

 

'Server > Linux' 카테고리의 다른 글

xshell/ FTP, VSFTP  (0) 2017.05.11
xshell/ DHCP  (0) 2017.05.06
xshell/ DNS2 (도메인 설정)  (0) 2017.05.03
xshell/ DNS ssh  (0) 2017.05.01
xshell/ Telnet  (0) 2017.04.29

★데이터베이스 파일 생성

★도메인 설정

vi /etc/named.conf        //네임 서버의 주 설정 파일

 

listen-on port 53 { any; };    //53번 포트에 접속을 허용할 IP를 작성하는 필드 any는 모두 접속 가능 하도록 설정

listen-on v6 port 53 { none; };    //IPv6 연결은 허용하지 않음

allow-query { any; };        //현재 네임 서버가 제공하는 도메인 정보에 대한 질의를 할 수 있는 클라이언트를 명시

recursion yes;     //yes는 다른 도메인에 대한 정보도 클라이언트에게 제공한다는 의미

//no는 오직 현재 설정 파일에 정의된 도메인 정보만 클리이언트에게 제공한다는 의미

 

도메인 추가

vi /etc/named.rfc1912.zones        // 도메인 추가를 위해 사용되는 기본 파일

 

zone - 도메인 DongHyun.com을 이용해 새로운 존을 생성한다.

Type 의 종류

1. master - 해당 존에 대한 정보를 제공하기 위해 지정되었음을 의미

2. slave - 해당 존에 정보를 마스터 서버로 부터 받아 제공하는 슬레이브 네임 서버로 지정

3. forward - 해당 존에 대한 요청을 모두 다른 네임 서버에게 전달하기 위해 지정되었음을 의미

4. hint - 질의에 대한 응답을 직접 제공하지 않고 루트 네임 서버로부터 응답을 받기 위해 서버들을 가리키는

특별한 형식의 존을 의미

file - 정보를 포함하는 파일의 이름

allow-update - 업데이트 여부

 

★인버스 도메인

- IP주소를 도메인 이름으로 변환하기 위해 네임서버에 설정하는 특수 도메인

- 인버스 도메인을 네임서버에 등록해 놓으면 IP주소에 대응하는 도메인 이름을 조회 할 수있다.

(Reverse Lookup)

-참고 : http://krnic.or.kr/jsp/resources/inverseInfo.jsp (한국 인터넷 진흥원)

★정방향 데이터베이스 파일

cd /var/named

cp named.empty Donghyun.zone

vi DongHyun.zone

@ - /etc/named.rfc1912.zones 파일에 설정된 존 이름을 의미

IN - Internet

S0A - Start of Authority의 약어 해당 존에 대한 정보를 제공할 권한을 가진 서버 이름을 지정

admin.DongHyun.com - 해당 도메인에 대한 이메일 이름을 지정하는데 주의할점은 이메일 표시하는

@ 대신에 점(.)이 해당 존을 의미하는 @과 혼란을 피하기 사용.

- admin@DongHyun.com  X

- admin.DongHyun.com  O

NS - name server 의 약어 해당 존에 대한 정보를 제공하는 네임 서버의 이름을 지정

MX - mail exchange의 약어로서 메일 서버를 지정하는 리소스 레코드

10 - 메일 서버 간 우선순위를 지정할 때 사용하고 보통 5또는 10단위로 숫자를 증가 시킨다

맨 앞 빈 공간 - 암묵적으로 존을 상징하는 @ 생략 즉 도메인의 ip주소가 100.100.100.110이라는 의미

ns - 현재 네임 서버의 이름 ns뒤에 @ 이 생략되어 있고 해당 네임서버가 사용하는 IP주소를 가르킨다.

ms - 메일 서버의 이름

www - 웹 서버의 이름

ftp - ftp서버의 이름

CNAME - Canomical name의 약어 보통 Alias name이라고 한다.

A - 도메인의 IP주소 (IPv4-32bit)를 지정하기 위해 사용한다

AAAA -  도메인의 IP주소 (IPv6-128bit)를 지정하기 위해 사용한다.

★ 역방향 데이터 베이스 파일

 

cp DongHyun.zone DongHyun.rev.zone

vi DongHyun.rev.zone

PTR - pointer, 100.100.100.in-addr.arpa= 도메인 DongHyun을 가리킨다 의미

110 - 숫자 110 뒤에 @이 생략되어 100.100.100.110이 ms.DongHyun.com을 가리킨다.

 

★데이터베이스 파일 확인

chown root:named DongHyun.zone           //named데몬이 접근이 가능 하도록 소유권 변경           

chown root:named DongHyun.rev.zone   

ll

service named restart              //설정을 모두 마친 후 네임 서버 다시 시작      

named-checkconf /etc/named.rfc1912.zones        //문법 검사하는 명령어

named-checkzone DongHyun.zone DongHyun.rev.zone    //존 설정을 검사할 경우 사용하는 명령어

 

★도메인 추가(linux)

vi /etc/named.rfc1912.zones

cd /var/named

cp -p DongHyun.zone linux.zone //

-p 옵션 = 원본 파일의 소유주, 그룹, 권한, 시간정보들이 그대로 보존되어 복사된다

vi linux.zone

동작확인

service named restart

nslookup

>server 100.100.100.110

>www.DongHyun.com

 

★라운드 로빈 부하 분산

- 동일한 서버를 여러대 운영하는 경우에 DNS서버를 통해 클라이언트로 부터 요청이 한 서버에 집중되지 않도록

적절하게 분산하는 DNS서버의 기능을 round robin방식의 load balancing이라고 한다

vi /var/named/DongHyun.zone

 

vi /var/named/DongHyun.rev.zone

 

service named restart        //데몬 재시작

 

ping -c3 www.DongHyun.com    

ping -c3 www.DongHyun.com

 

ping -c3 www.DongHyun.com

-명령어 ping을 이용해 동일한 웹 호스트로 연결을 테스트 하면 다른 IP주소가 조회가 되는지 확인한다.

(100.100.100.110, 120, 130)

dig @ns.DongHyun.com www.DongHyun.com +noall +answer

dig를 이용해서 웹서버의 정보 조회, 다른 정보는 생략하고 해당하는 도메인에 IP주소만 출력하는 의미이다.

 

★웹사이트로 열기 테스트

Server-A

yum -y install httpd

 

vi /var/www/html/index.html

<h1>[하고싶은 말]</h1>

service httpd start

 

Servei-A -> firefox ->www.DongHyun.com

 

'Server > Linux' 카테고리의 다른 글

xshell/ DHCP  (0) 2017.05.06
xshell/ DNS3 (Slave,Master,고급기능)  (0) 2017.05.05
xshell/ DNS ssh  (0) 2017.05.01
xshell/ Telnet  (0) 2017.04.29
xshell/ ping ip selinux  (0) 2017.04.24

★ssh - 원격접속설정 

 

#scp - ssh 통신을 이용하여 서버간에 파일을 복사하는 명령어

 

ssh ip주소     //ssh 접속방법

 

#scp [로컬파일] [계정명@IP주소:경로]     //계정명 생략하면 기본적으로 root접속

 

Server-A ---> Client-Linux
scp /etc/passwd root@100.100.100.130:~
- 서버 A /etc/passwd 파일을 Client-Linux에 root접속을하여 root의 홈디렉토리로(/root)
파일을 전송

 

Server-A <--- Client-Linux(접속하고자하는 서버에 존재하는 계정명/PW)
Client-Linux     //#scp /etc/passwd telnet-user1@100.100.100.110:~

 

★파일 가져오기
Client-Linux     //cd /root
Client-Linux     //touch test_file
                      [원본]                                [대상]
Server-A //scp 100.100.100.130:/root/test_file /root

 

★DNS(domain name service)
-도메인이라고 불리는 이름을 숫자로 구성된 ip주소와 일치시켜주는 데이터 베이스

-DNS서비스는 도메인을 IP주소로 변환 시켜주는 이름 관리 서비스

-도메인은 사람이 기억하기 쉬운 문자로 구성되어 있지만 컴퓨터는 글자가 아니라 숫자인 IP주소를

 이용해 컴퓨터간에 통신을 한다.

-사람이 글자로 이루어진 도메인을 입력하면 DNS는 이 도메인에 대한 IP주소를 찾아 변환/해석 해주고

컴퓨터가 IP주소로 접속할수 있게 도와줘 컴퓨터간에 통신을 가능하게 한다.

 

도메인?? - IP 주소를 기억하기 쉽게 하기 위한 이름이다

★DNS의 구조

-계층적 구조형태로 구성되어 있으며, 4단계의 도메인 레벨로 세분화 한다.

1. Root Level Domain - 최상위에 위치해 있으며 표시는 '.'을 이용한다.

2. Top Level Domain - ccTLD(Country-code),gTLD(Generic)가 있으며,인터넷의 모든정책 권한을

행사하는 기관에 의해 관리 된다.

3. Second Level Domain - 사용자들의 조직이나 회사, 개인의 목적에 부합하는 문자 및 숫자로 이루어져 있다.

4. Third Level Domain - 각 목적에 따라 도메인이 더필요할 경우 생성되고, 보통 서브 도메인이라 한다.

 www            nate                com             .

Third Level  Second Level    Top Level   Root Level

 

★nslookup테스트
yum -y install bind-utils    //DNS질의 시 필요한 유틸리티 제공패키지    유틸리티-유용성
nslookup        //네임서버의 정보를 검색하기 위해 가장 많이 사용하는 유틸리티
>server

>www.google.com    //네임서버에 등록된 구글 웹 서버 www.google.com에 대한 ip주소 질의

 

★/etc/hosts 테스트

-외부 DNS서버(8.8.8.8)연결하지 못하도록 수정

yum -y install firefox

firefox 실행

실행되는거 확인

 

vi /etc/resolv.conf    //Dns서버 주석처리 테스트


8.8.8.8        // 로컬에서 도메인 질의나 해석이 필요할때 사용 구글 dns 서버 매우중요

 

vi /etc/sysconfig/network-scripts/ifcfg-bond0 //DNS서버 주석

 

/etc/hosts ex)전화번호부

 

DNS서버 주석처리로 인터넷이 안된다.

 

vi /etc/hosts테스트

hosts파일에 IP주소와 URL(도메인) 입력

 

도메인으로 인터넷 실행 확인

 

★IP주소를 얻는 순서

1. 사용자가 웹브라우저에서 URL입력(FTP,ping 등의 명령 모두 해당)

2. /etc/host.conf 파일을 확인하여 우선순위 확인 (order hosts, bind)

3. /etc/hosts 파일을 확인하여 URL과 IP주소 확인

4. /etc/hosts 파일에 URL의 IP주소가 있다면, DNS서버에 질의 없이 해당 IP주소로 연결

5. /etc/hosts 파일에 IP주소와 URL 주소가 없다면, /etc/resolve.conf 파일을 확인

6. /etc/resolv.conf 파일에 DNS서버 설정이 없다면 URL주소의 IP확인 불가능

7. /etc/resolv.conf 파일에 DNS서버 설정이 있다면 해당 DNS서버에 URL주소의 IP주소 질의

8. DNS서버가 IP주소를 전달해주면 해당 IP주소로 연결

 

★Local Name Server

- 리눅스에는 각 서버 마다 사용하는 네임서버가 /ete/resolv.conf 파일에 'nameserver IP주소' 형식으로

설정되며 이것을 로컬 네임 서버라 한다.

★Name Server

- 알기 쉬운 도메인 주소를 컴퓨터가 처리할수 있는 IP주소로 변환 시켜주는 서비스

- 자신의 도메인 정보를 관리

 

Forward Lookup(정방향 조회): 도메인 주소 <-> IP주소

Reverse Lookup(역방향 조회): IP주소<->도메인 주소

 

/etc/resolv.conf

- (로컬)DNS서버의 IP주소를 설정하는 파일

 

★Bind 설치와 DNS서버 시작

BIND
- 패키지 설치 후 생성되는 주요 파일 및 디렉토리

 

/etc/named.conf
- 네임 서버의 주 설정 파일

 

/etc/named.rfc1912.zones
- 존 정보를 설정하기 위한 파일

 

/var/named
- 네임 서버의 데이터베이스 파일을 보관하는 디렉토리

 

/usr/sbin/named
네임 서버 데몬파일

 

4개파일 많이보는것

 

DNS서버 고장내트리면 고소당함
yum install bind bind-utils bind-libs bind-chroot

natu 포트번호검색 udp 53번

 

 

bind - DNS서버 구축 프로그램을 제공

bind-utils - DNS서버 질의를 위해 사용되는 유틸리티 모음을 제공

bind-libs - BIND와 BIND 유틸리티 프로그램이 사용하는 라이브러리 패키지

bind-chroot - BIND의 chroot 환경을 위 사용되는 파일들을 제공

 

chroot - change root의 약어로 named 데몬이 사용하는 홈디렉토리는 일반적으로 /var/named/chroot를 사용한다.

 

★chroot 동작 확인

cd /var/named/chroot/etc/

ls

service named start    //네임서버 원본 설정 파일이 복사 후 동작

ls        //named.conf 파일 생성됨

 

★DNS서버 시작

service named start        //named 데몬 시작

service named status        //프로세스가 활성화 되었는지 확인

chkconfig named on            //재부팅 이후에도 자동으로 데몬을 활성화 시키기 위해 사용

chkconfig --list named        //설정 확인

netstat -natu | grep 53        //named 데몬은 TCP UDP 53번이 열려 있는 상태로서 서비스 준비가 되어 있음을 뜻함

cat /etc/services | grep -w domain        // /etc/services에 명시된 정보 확인

//grep 옵션 -w  = 하나의 단어로 취급

 

★TCP / UDP를 사용하는 이유

-일반적으로 UDP를 사용하는데 두가지 이유로 인해 TCP를 통해 서비스가 이루어져야 한다.

 

1. UDP가 최대로 전송 가능한 DNS데이터 크기는 UDP상에서 512바이트 인데 DNS헤더를 포함한 DNS메시지

길이가 512바이트를 초과하는 경우 TCP 53번 포트를 사용하여 TCP연결을 통한 DNS 질의와 응답이 이루어지도록

설계 되어있다.

 

2. 마스터와 슬레이브 네임서버 간 도메인에 대한 존 전송을 하게 되는데 이경우 많은 양의 데이터의 전송이 필요하기

때문에 TCP를 사용해 전송이 이루어 진다.

 

 

 

 

'Server > Linux' 카테고리의 다른 글

xshell/ DNS3 (Slave,Master,고급기능)  (0) 2017.05.05
xshell/ DNS2 (도메인 설정)  (0) 2017.05.03
xshell/ Telnet  (0) 2017.04.29
xshell/ ping ip selinux  (0) 2017.04.24
xshell/ Bonding  (0) 2017.04.22

client-win window7 64bit 설치

 

★Telnet
-TCP/IP 기반의 프로토콜이며, 원격지 시스템 접속하여 사용할수 있게 하는 터미널
접속 서비스(TCP 23번)
-데이터 전송 시 암호화 되지 않고 평문(Plain Txt,보안x)으로 전송되어 보안에 취약함
현재는 ssh로 대체되어 거의 사용하지 않으며 활성화 되어있는 포트확인시 사용

 

보안 이유로 SSH를 많이 사용한다 telnet은 TUI환경을 제공해 CentOS에 접속하기 위해 서버 설정이

필요하지만 대부분 클라이언트는 telnet프로그램을 제공하고 있다. 안전한 서버 운영을 위해 SSH를 많이

사용하고 IP차단과 선택된 사용자만 서버에 접근할수 있게 설정해야한다.

 

서버구성
Server-A(Telnet-Server)

Server-B(Telnet-Server)
Clinet-Linux(Telnet-Client)
Clinet-Win (Telnet-Clinet)

 

접속 과정
1.Client : 접속시도

2.Server : 시스템 배너정보 리턴 접속계정,password 요구

3.Client : 입력

4.Server : 연결된 Client에게 가상의 터미널 제공

5.Client : 실제 터미널처럼 원격지 시스템에 명령어 실행

6.Server : Client의 명령을 수행하여 결과를 전송

 

Server-A

vi /etc/selinux/config
selinux disabled변경
setenforce 0          //selinux 비활성화 작업 준비

 

rpm -qa | grep telnet-server
yum -y install telnet-server      //서비스를 제공하는 컴퓨터

 

의존성을가진xinetd 패키지도 함께설치
xinetd.x86

 

★데몬의 동작방식
1.xinetd방식
xinet슈퍼데몬  데몬은 다른 데몬을 관리하는 xinetd기반으로 동작하는 데몬은
사용자의 요청이 있을때만 동작하여 반응속도는 느리나 시스템 자원 소모가 거의없다

 

2.standalone방식
항상 메모리에 상주해 있는 데몬으로 시스템 자원을 많이 소모하나 응답속도가 빨라
주로 실시간으로 응답을 줘야하는 서비스 데몬은 해당 방식으로 동작한다

Server-A(Telnet-server) 

vi /etc/xinetd.d/telnet
-슈퍼데몬 디렉토리아래 설정 파일이 위치하여 수정을 해주어야 한다
12번라인  disable=yes     //비활성화 상태
               disable=no      //telnet 데몬 활성화

 

service xinetd status      //xinetd 데몬의 상태 확인
     정지 되었습니다.
service xinetd start         //데몬 기동
service xinetd status     //데몬의 상태 확인

 

텔넷 테스트용 계정 생성
id:telnet-user1
pass:password1!

 

useradd telnet-user1
passwd telnet-user1

 

텔넷 연결 자가 테스트

 

yum -y install telnet //텔넷 클라이언트 패키지 설치

 

telnet [아이피주소]
telnet 100.100.100.110
id pass 입력

$whoami         //접속계정확인
$pwd
$ls /             //최상위 디렉토리 확인
exit

 

(서버)                       (클라이언트)
Server-A <---------->Cilent-Win
                                 Clinet-Linux    
                 NVT  연동

★NVT(Network Virtual Terminal)
-원격지 시스템과 로컬 시스템의 버전이나 데이터 형식이 다를 경우 원활한 통신
을 위해 데이터를 변환시켜주는 가장장치이다.

 

client win 어뎁터 ipv4 속성 변경
ping 100.100.100.140

 

Client-Win (Telnet-Client)

자료가 날라갈수 있으므로 업데이트 사용x

 

텔넷 클라이언트 체크

 

ipv4 주소 100.100.100.140확인

Server-A -> Client-Win

구글 DNS서버 인터넷ping 확인

 

ping 안나가시는분 //cmd창 ipconfig /renew

 

ip주소 ifcfg-eth0 xshell 연동 될수있게 설정
로컬dns 설정->/etc/resolve.conf
vi /etc/resolve.conf
nameserver 8.8.8.8
nameserver 8.8.4.4 //만약 로컬DNS설정이 안되어 있으면 YUM명령어를 사용할수 가 없다
                           //도메인 주소를 이용하여 동작하기 때문에 설정 필수

service iptables stop
chkconfig iptables off
vi /etc/sysconfig/selinux  disabled
setenforce 0

 

xshell과 yum명령어 실습을 할수있다.

 

핑테스트 정상이지만 텔넷 접속이안되는 경우
service iptables stop
iptables: 체인을 ACCEPT 규칙으로 설정 중:  filter          [  OK  ]
iptables: 방화벽 규칙을 지웁니다:                              [  OK  ]
iptables: 모듈을 언로드하는 중:                                    [  OK  ]
[root@Server-A ~]# chkconfig iptables off

 

server-B(텔넷서버) <-> Client-Linux(텔넷클라이언트)
telnet-server 설치           telnet패키지 설치

 

텔넷계정명 :telnet-test
패스 :자유

 

서버 b에 useradd 한후
Client-Linux telnet설치후 telnet 100.100.100.120

 

★tcpdump 텔넷 평문전송

 

client-Linux server-B접속후에
아래명령어 친후 클라이언트 쪽에서 명령어를 입력하면 패킷 전송시 패킷을 캡쳐하여
전송된 패킷의 내용을 확인하면 입력한 명령어 id pass가 그대로 노출되는것을 확인할수있다.
Client-Linux //yum -y install tcpdump
 
Server-B   //tcpdump port telnet -l -vvv -x -X > telnet-dump & tail -f telnet-dump

타이핑 할때마다 서버에 뜨는것을 볼수 있다.

'Server > Linux' 카테고리의 다른 글

xshell/ DNS2 (도메인 설정)  (0) 2017.05.03
xshell/ DNS ssh  (0) 2017.05.01
xshell/ ping ip selinux  (0) 2017.04.24
xshell/ Bonding  (0) 2017.04.22
xshell/ YUM  (0) 2017.04.22

컴퓨터 네트워크 개념 다시

- 전송 매체(케이블,무선)을 통해 연결되어진 pc들이 상호간의 정보를 교환하는 시스템

 

프로토콜

-데이터를 교환하기 위한 통신 시스템(통신규약) TCP/IP UDP HTTP ICMP FTP SNMP 종류

 

프로토콜 정보(http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=108&docId=64698625&qb=7ZSE66Gc7Yag7L2cIOyiheulmA==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=Tn1k8lpVuEVssvv9oqlssssssIw-230244&sid=3zl%2Boy6rnZwUJXStR65goA%3D%3D)

 

★SELinux(Security Enhanced Linux)

- 리눅스의 취약점을 보안하기 위한 모델(플러그인)

- 세가지 상태의 종류가 있다

enforcing : 강제. 시스템 보안에 영향을 미치는 기능이 감지되면 작동 안되도록 시스템에서 막아버린다.

permissive : 허용. 시스템 보안에 영향을 미치는 기능이 감지되면, 허용은 하지만 그내용을 로그에 남긴다.

disabled : 비활성. selinux 를 사용하지 않는다

-리눅스 최초 설치시 enforcing으로 되어 있다.

-서버 관리자라면 다양한 보안설정을 적용해봐야 되고 직접 관리해야 하기 때문에 보통 selinux를 비활성한다.

/etc/sysconfig/selinux 파일을 수정하여 상태를 변경한다. 7번째줄

 

설치변경후 재부팅 필수

 

리눅스 보안 설정방법은 2가지이다

selinux와 iptables

보통 selinux를 비활성 시키기 때문에 IPtables(방화벽)으로 보완한다.

 

setenforce 0     //selinux 끄기
vi /etc/sysconfig/selinux      //disabled 영구적 비활성
service iptables stop            //iptables 방화벽 중지
iptables: 체인을 ACCEPT 규칙으로 설정 중:  filter          [  OK  ]
iptables: 방화벽 규칙을 지웁니다:                               [  OK  ]
iptables: 모듈을 언로드하는 중:                                 [  OK  ]
chkconfig iptables off            //부팅시 iptables 적용 안되게 설정

 

★vm에는 3가지 network타입이 있다 (bridge,NAT,host-only)


1.브릿지(bridge)
물리pc와 가상머신이 같은 스위치에 연결된 형태
->같은 네트워크 위치해 있다.

호스트 PC가 연결된 네트워크에 직접 연결한것

 

 

이 컴퓨터의 IP주소는 123.142.55.116입니다

 

★속성 브릿지모드 실습

vm Network Adaptor 설정을 브릿지로 변경


vi /etc/sysconfig/network-scripts/ifcfg-eth0

#-주석   dhcp변경


service network restart  //네트워크 재시작
ifconfig   //ip확인
inet addr

 

공인ip? 
-ISP [Internet Service Provider]          //provider-제공자
-isp(kt,sk,lg)통신업체가 가지고 있는 ip주소
-전세계 어디서든 해당 ip주소를 가지고 있으면 통신이 가능하다.

 

2.NAT
-공인 ip <->사설ip 바꿔주는 역할
-ip가 부족하여 각각의 컴퓨터에게 모두 ip를 할당 할 수 있으므로 외부와 통신이 가능한
공인ip를 여러개의 사설ip로 나누어 사용할 수있는 기술

-공인ip주소가 한정되어 있기 떄문에 내부적인 네트워크를 형성하는 사설 ip주소를 만들어 많은 pc가

외부 네트워크와 연결되게 하기위해 NAT을 사용한다

★NAT 실습 모드

vm에 Network Adaptor 설정을 NAT로 변경

BOOTPROTO=static

service network restart

ifconfig 확인


아이피 주소 설정을   (1)DHCP(동적ip)
                               (2)static(고정ip) 할수 있다

 

(1)DHCP가 할당해주는 ip범위내에서 ip를 할당받는 설정
(2)DHCP에게 ip를 할당받는 것이 아닌 수동으로 ip를 입력하여 고정ip를 사용하는 방법

 

★Host-Only

-외부와 연결이 되지 않는 고립된 네트워크

-vm와 호스트pc끼리만 통신이 가능하다.

 

사설ip?
-NAT로 통해 외부와 통신할 수 있는 ip주소로 내부 네트워크에 위치한 컴퓨터끼리만
통신할 수 있는 ip

 

ip 주소 - 네트워크 상에서 컴퓨터를 찾아가기 위한 주소 , 인터넷상에서 컴퓨터를 구별하기 위한 고유 주소
00000000.00000000.00000000.00000000 32bit
  ~
11111111.11111111.11111111.11111111 ip주소 약 43억개

 

mac 주소 - 물리 네트워크 카드 할당된 고유한 주소         //eth0네트워크 카드
ifconfig
hwaddr 하드웨어주소 옆 mac주소

 

DHCP - 동적으로 사용자에게 ip를 할당해주는 프로토콜  //동적 -움직임
-사용자에게 네트워킹에 필요한, ip주소, DNS주소, 서브넷마스크, GATEWAY 에 대한
 정보를 자동으로 구성해준다.
-DHCP기능으로 인터넷이 가능하다

 

ipv4? ipv6?

 

ipv4

- 인터넷이 만들어진 초창기부터 현재까지 쓰고 있는 인터넷주소

ip 255x255x255x255=43억개

 

ipv6

-부족한 ip를 늘리기위해 만들어진 주소체계

128비트 주소체계를 사용하며 무한대의 ip를 만들수 있다

 

물리 pc주소 ip
가상 머신 주소 ip 같다

 

ping test 테스트
ping www.naver.com

 

xshell 접속이 안될 경우
ping 8.8.8.8 //google dns 서버 통신 확인
취소 ctrl + c, ctrl + z

 

핑 테스트 실패->ip설정 파일 오타,vmware 네트워크 설정 확인
핑 테스트 성공->vmware network editor 설정에서 vmnet8 remove후 apply클릭후 다시 add네트워크
  vmware8다시

 

DEVICE=eth0               //이더넷 인터페이스 종류(장치이름) 디스크카드 넣으면 eth1
TYPE=Ethernet               //통신 타입 이더넷
ONBOOT=yes               //부팅시 장치 활성화
NM_CONTROLLED=no      //네트워크 매니저 데몬 제어 여부
BOOTPROTO=static          //ip할당 방식(DHCP,STATIC,NONE)
IPADDR=100.100.100.110  //ip주소
NETMASK=255.255.255.0      //서브넷 마스크 값
GATEWAY=100.100.100.2      //외부로 나가기 위한 주소
DNS1=8.8.8.8               //1차 dns 주소
DNS2=8.8.4.4               //2차 dns 주소

'Server > Linux' 카테고리의 다른 글

xshell/ DNS ssh  (0) 2017.05.01
xshell/ Telnet  (0) 2017.04.29
xshell/ Bonding  (0) 2017.04.22
xshell/ YUM  (0) 2017.04.22
xshell/ RPM  (0) 2017.04.22

Bonding?

- 네트워크 이중화

- 리눅스 커널에 내장된 기술로 2개 이상의 Network interface card를 논리적으로 하나의 interface

묶에서 NIC물리적 장애에 대응하거나 처리량을 늘리는 기술

 

interface?- 상호간의 소통을 위한 프로토콜

 

★Boding의 장점

1. 대역폭 확장

 

2. 장애 대비 (Fault Tolerant)

- 실무에서는 대역폭을 확장 하기 위함 보다는 장애 대비 용으로 사용 한다.

- Switch, Cable, NIC Port등의 장애를 대비하여 이중화 구성을 한다.

 

★작업 순서

(1)네트워크 카드(NIC)추가

(2)ifcfg-eth0, ifcfg-eth1, ifcfg-bond0파일생성

(3)/etc/modpobe.d/bonding.conf 파일생성

(4)본딩 적용

(5)네트워크 재시작

(6)설정 확인

(7)본딩 테스트(장애 테스트)


1. 네트워크 카드 추가후 재부팅

Add를 선택해 Network Adapter를 생성


   슬레이브   마스터
2. ifcfg-eth0(active) ->ifcfg-bond0
   ifcfg-eth1(backup) ->

 

vi /etc/sysconfig/network-scripts/ifcfg-eth0

vi /etc/sysconfig/network-scripts/ifcfg-eth1

``

 

DEVICE=ethx                //인터페이스 이름
TYPE=Eternet                //통신 타입
ONBOOT=yes                 //부팅시 활성화 여부
MASTER=bond0              //마스터가 될 본딩 파일의 이름
SLAVE=yes                    //종속여부
BOOTPROTO=none         //ip설정 방식(사용x)
USERCTL=no                 //일반사용자 제어 허용 여부
NM_CONTROLLED=no     //네트워크매니저 데몬 제어 허용 여부

 

vi /etc/sysconfig/network-scripts/ifcfg-bond0

 

DEVICE=bond0            //본딩 인터페이스 이름
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=100.100.100.110
NETMASK=255.255.255.0
GATEWAY=100.100.100.2
DNS1=8.8.8.8
DNS2=8.8.4.4
BONDING_MASTER=yes                      //본딩 주체 여부
BONDING_OPTS="mode=1 miimon=100" //본딩옵션(모드,모니터링설정)

 

mode=1         //active-backup으로 네트워크 이중화할때 가장 많이 사용

miimon=100    //얼마나 자주 mii link를 감시할것인가를 0.001초 단위로 설정

mii는 NIC가 살아있는지를 확인하는데 사용되며 고가용성을 요구 하는 경우에 사용한다

 

3. vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=1 miion=100

 

4.본딩 적용
modprobe bond0 //본딩 모듈을 사용하기 위해 커널에게 알려주는 명령어

 

 

5.service network restart

6.ifconfig
eth0
eth1
bond0

NIC 세개 확인

 

7. 설정 확인
cat /proc/net/bonding/bond0
(1)본딩을한 eth 장치가 정상적으로 출력되는지 확인
(2)bonding mode가 (active-backup)으로 잘 되어 있는지 확인  본딩모드 확인
(3)현재 active 상태의 인터페이스 확인
Currently Active Slave: eth0
(4)모니터링 및 통신상태 확인 mii status : UP

 

Active Backup ( 1또는 active-backup)
- Active Backup 모드는 가장 많이 사용되며 장애 대비를 위해 설정한다.
- 여러 개의 Slave Interface 구성 할 수 있지만, 여러 개의 Slave Interface 중 오직 하나의

    Slave Interface만 전송에 사용한다.
- Slave Interface를 많이 사용한다고 해서 성능이 향상되는 것은 아니다.

★8.본딩(장애)테스트
외부 지속적으로 통신 하고 있어야한다
ex) ping 8.8.8.8
네트워크 카드 (NIC)비활성화 시키면서 테스트

 

세션-1                                        세션-2
ping 8.8.8.8                  watch -d -n 1 "cat /proc/net/bonding/bond0"

eth0과 eth1이 연결중이면 모니터링 여부up 확인

 

eth0연결끈으면 eth0 down 확인

 

eth1연결끈으면 eth1 down확인

 

server-B Clinet-Linux 본딩설정진행

'Server > Linux' 카테고리의 다른 글

xshell/ Telnet  (0) 2017.04.29
xshell/ ping ip selinux  (0) 2017.04.24
xshell/ YUM  (0) 2017.04.22
xshell/ RPM  (0) 2017.04.22
xshell/ Find  (0) 2017.04.22

+ Recent posts