DAY_29 가상호스트

2021. 2. 3. 18:20

체크리스트

● NAT 란 무엇인가 ?

- network address translation 네트워크 주소 변환을 해주는 기술이다.

- 제한된 IP주소를 해결하기 위해서 NAT가 필요하다.

● DNAT 와 SNAT란 무엇인가 ?

- DNAT : destination nat 외부에서 내부로 들어갈 때 설정하는 것이다. 목적지 주소를 변환한다.

- SNAT : source nat 내부에서 외부로 나갈때 설정하는 것이다.

 

● iptables에서 nat 테이블이란 무엇인가 ?

- 패킷의 소스나 목적지 주소를 변환하는 기능을 가진 테이블이다.

● nat 테이블에서 아래 체인은 무엇인가 ?

- PREROUTING : 라우팅 전에 목적지 주소를 변환하는 기능을 가진 체인이다. (외부 -> 내부망을 통과할 때 거침)

- POSTROUTING : 외부에서 내부로 들어올때 설정하는 체인이다. 

- OUTPUT : nat 테이블을 빠져 나갈 때 사용하는 체인이다.

 

● iptables에서 DNAT 룰을 설정하는 형식은 무엇인가 ?

- iptables -t nat -A PREROUTING -d 목적지주소 -j DNAT --to 변환목적지주소  

● iptables에서 SNAT 룰을 설정하는 형식은 무엇인가 ?

- iptables -t nat -A POSTROUTING -s 출발지주소 -j SNAT --to 변환출발지주소  

● 공인 IP란 무엇인가 ?

- 외부에 공개 되어 있는 IP이다. 인터넷망에서 사용할 수 있는 IP

● 사설 IP란 무엇인가 ?

- 일반 사용자 혹은 회사내에 할당받은 IP주소이다. 인터넷망에서 사용할 수 없는 IP

 

● 192.168.8.101 을 192.168.1.101 서버로 돌려주는 DNAT를 설정하는 룰은 무엇인가 ?

- iptables -t nat -A PREROUTING -d 192.168.8.101 -j DNAT --to 192.168.1.101  

● 192.168.1.101 을 192.168.8.101 서버로 돌려주는 SNAT를 설정하는 룰은 무엇인가 ?

- iptables -t nat -A POSTROUTING -s 192.168.1.101 -j SNAT --to 192.168.8.101 

 

● 커널 파라미터의 /proc/sys/net/ipv4/ip_forward는 무슨 역할을하는가 ?

- 포워딩을 허락하는 역할을 한다. 외부망과 내부망과 서비스를 주고 받기 위해서 설정한다.

- 커널파라미터 : 동작하는 커널에 값을 변경할 수 있는 변수

- /proc/sys/net/ipv4/ip_forward : 패킷 포워딩을 On/Off 할 수 있는 커널 변수

- 1 : 패킷 포워딩 On

- 0 : 패킷 포워딩 Off

● /etc/sysctl.conf 파일은 무엇을 하는 파일인가 ?

- 커널 파라미터의 값을 변경할 수 있는 변수를 저장할 수 있는 파일이다.

- 형식 : 경로1.경로2 =1

- ex) net.ipv4.ip_forward = 1  --> /pro/sys/net/ipv4/ip_forward = 1

- # sysctl -w /pro/sys/

● /etc/sysctl.conf 에 패킷 포워딩 기능을 On으로 설정하고 적용하는 명령어는 무엇인가 ?

- # vi /etc/sysctl.conf

- net.ipv4.ip_forward = 1

- # sysctl -p


가상호스트 

- 하나의 서버에 여러 도메인을 운영할 수 있는 기능이다.

 

가상호스트에는 2가지 종류가 있다.

- 첫번째 : IP기반의 가상호스트 (여러개의 IP주소가 필요하다.)

- 두번째 : 이름 기반의 가상호스트 (하나의 IP주소가 있으면 그 IP주소에 도메인들을 매핑시킨다.)

 


실습 > 이름 기반의 가상호스트

모듈 : vhost_alias_module

모듈의 위치 : /lib64/httpd/modules/mod_vhost_alias.so

설정파일 : /etc/httpd/conf.modules.d/00-base.conf

LoadModule vhost_alias_module modules/mod_vhost_alias.so

 

이제 웹 페이지를 /var/www/html 여기서 제공하는게 아니다.

도메인 사용자  웹페이지 경로 디폴트 index 파일  IP 주소
sbs.com  sbsuser /home/sbsuser/public_html  index.html 192.168.8.3
kbs.com  kbsuser /home/kbsuser/public_html  index.html 192.168.8.3
mbc.com  mbcuser /home/mbcuser/public_html  index.html 192.168.8.3

  

-- 실습 순서 --

1. 도메인 설정

2. 사용자 생성

3. 기본 문서 생성

4. 가상호스트 설정

5. 웹서버 시작

6. 도메인 접근

-- 실습 순서 --

 

1. 도메인 설정

DNS(Domain Name System)로 도메인명을 ip주소로 변환하는 시스템이다.

 

/etc/hosts 파일이 DNS보다 우선순위를 먼저한다.

# vi /etc/hosts

# ping -c 3 sbs,kbs,mbc 가 다 제대로 가는지 확인한다.

2. 사용자 생성

skel 디렉터리 : 사용자 생성 시 복사되는 뼈대 디렉터리

[root@server1 ~]# mkdir -m 711 /etc/skel/public_html

[root@server1 ~]# useradd -g users sbsuser

[root@server1 ~]# passwd sbsuser

같은 그룹에 넣는것이 중요하다.

3. 기본 문서 생성

sbsuser 로 변경해서 웹페이지 서비스를 제공하기 위해서

웹서버 사용자(apache)가 접근할 수 있도록 자신의 홈디렉터리의 권한을 열어준다.

[root@server1 ~]# su - sbsuser

[sbsuser@server1 ~]$ chmod o+x .

[sbsuser@server1 ~]$ ls -ld

drwx-----x. 3 sbsuser users 102 2월 3 13:14 .

[sbsuser@server1 ~]$ ls -l

합계 0

drwx--x--x. 2 sbsuser users 6 1월 29 02:08 public_html

 

기본 웹문서인 index.html을 public_html 디렉터리에 저장한다.

[sbsuser@server1 ~]$ vi public_html/index.html

<html>

<head>

<meta charset="utf8">

<title> ::: sbs.com ::: </title>

</head>

<body>

<center> sbs.com 에 오신 것을 환영합니다. </center>

</body>

</html>

[sbsuser@server1 ~]$ exit

 

위와 같은 설정을 sbs 뿐만 아니라 kbs, mbc 모두 해준다.

 

[root@server1 ~]# vi /etc/httpd/conf.d/userdir.conf

<IfModule mod_userdir.c>

#UserDir disabled

UserDir public_html

</IfModule>

 

[root@server1 ~]#ipt httpd -t

Syntax OK

[root@server1 ~]# systemctl restart httpd

 

만약 실행되지 않으면 SELinux를 설정해준다.

SELinux 확인

[root@server1 ~]# getenforce

Enforcing

[root@server1 ~]# sestatus

SELinux status: enabled

SELinuxfs mount: /sys/fs/selinux

SELinux root directory: /etc/selinux

Loaded policy name: targeted

Current mode: enforcing

Mode from config file: enforcing

Policy MLS status: enabled

Policy deny_unknown status: allowed

Max kernel policy version: 31

 

setenforce가 enforcing이 되어있는데 실행이 안된다면 아래와 같이 설정한다.

====================================================

설정된 selinux 설정을 보여주는것이다.

[root@server1 ~]# ls -Z /home/

 

chcon : SELinux 변경 명령어

-R : recursive (하위 디렉터리까지 변경)

-v : verbose (변경사항 보여주기)

 

[root@server1 ~]# chcon -Rv -t httpd_sys_content_t /home/kbsuser/public_html

sbs, kbs, mbc 모두 설정 해 준다.

====================================================

[root@server1 ~]# lynx --dump http://192.168.8.3/~sbsuser/

sbs.com 에 오신 것을 환영합니다.

 

[root@server1 ~]# lynx --dump http://192.168.8.3/~kbsuser/

kbs.com 에 오신 것을 환영합니다.

 

[root@server1 ~]# lynx --dump http://192.168.8.3/~mbcuser/

mbc.com 에 오신 것을 환영합니다.

 

4. 가상호스트 설정

파일명 : /etc/httpd/conf.d/vhostalias.conf

[root@server1 ~]# vi /etc/httpd/conf.d/vhostalias.conf

 

 

ServerAdmin 관리자 이메일 주소

DocumentRoot 웹페이지가 제공되는 경로 (절대경로)

ServerName 도메인 주소

ServerAlias 도메인 주소

ErrorLog 웹페이지 접근 시에 에러 로그가 기록되는 경로

CustomLog 웹페이지 접근 시에 정상/에러 로그가 기록되는 경로

 

[root@server1 ~]# vi /etc/httpd/conf.d/vhostalias.conf

# 수정 날짜 : 2021. 02. 03. (수) 16:04:35 KST

# ServerAdmin 관리자 이메일 주소

# DocumentRoot 웹페이지가 제공되는 경로 (절대경로)

# ServerName 도메인 주소

# ServerAlias 도메인 주소

#ErrorLog 웹페이지 접근 시에 에러 로그가 기록되는 경로

#CustomLog 웹페이지 접근 시에 정상/에러 로그가 기록되는 경로

 

<VirtualHost *:80>

ServerAdmin webmaster@sbs.com

DocumentRoot /home/sbsuser/public_html

ServerName sbs.com

ServerAlias www.sbs.com

ErrorLog logs/sbs.com-error_log

CustomLog logs/sbs.com-access_log common

</VirtualHost>

 

<VirtualHost *:80>

ServerAdmin webmaster@kbs.com

DocumentRoot /home/kbsuser/public_html

ServerName kbs.com

ServerAlias www.kbs.com

ErrorLog logs/kbs.com-error_log

CustomLog logs/kbs.com-access_log common

</VirtualHost>

 

<VirtualHost *:80>

ServerAdmin webmaster@mbc.com

DocumentRoot /home/mbcuser/public_html

ServerName mbc.com

ServerAlias www.mbc.com

ErrorLog logs/mbc.com-error_log

CustomLog logs/mbc.com-access_log common

</VirtualHost>

 

 

 

 

 

 

5. 웹서버 시작

 

설정이 완료되면 설정파일의 문법을 체크해서 Syntax OK 메세지가 나오면 아파치 웹서버를 재시작한다.

 

가지고 있는 가상호스트들의 정보를 보여준다.

httpd -S : 현재 설정된 가상호스트들의 정보

[root@server1 ~] httpd -S

 

httpd -t : 문법 체크

[root@server1 ~]# httpd -t

Syntax OK

[root@server1 ~]# systemctl restart httpd

 

6. 도메인 접근

lynx로 각 도메인에 접속한다.

[root@server1 ~]# lynx --dump sbs.com

sbs.com 에 오신 것을 환영합니다.

 

 

[root@server1 ~]# lynx --dump kbs.com

kbs.com 에 오신 것을 환영합니다.

 

 

[root@server1 ~]# lynx --dump mbc.com

mbc.com 에 오신 것을 환영합니다.

 

# vi /etc/httpd/conf/httpd.conf

 

7. DB설정

DB 사용자 생성/DataBase 생성

DB 사용자가 DatabBase를 사용할 수 있도록 권한을 부여한다.

mysql.user 테이블 : db사용자 로그인/ DBMS 권한 테이블

mysql.db 테이블 : db사용자 DB를 사용할 수 있는 권한 테이블

 

host 사용자 비밀번호 DB명

localhost sbsuser 111111 sbsuser

localhost kbsuser 111111 kbsuser

localhost mbcuser 111111 mbcuser

 

이전에 다 설정해 놨다고 가정한다.

S1 # mysql 

 

1. database만들기

2. mysql사용자 안에 user테이블에 정보저장

3. mysql사용자 안에 db테이블에 정보저장

 

 

db 내용은 많으니까 세로로 볼 수 있도록 한다.

-h localhost : 생략하는 이유는 client와 dbserver가 함께 있으니까 생략한것이다.

 

 

이제 /var/www/html 는 열리지 않는다.

제일 처음 설정인 sbsuser의 정보가 나온다.

 

위와 같이 나오게 된다면 가상호스트가 설정되어 있는지 확인한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'정보보안(시스템,네트워크) > 리눅스' 카테고리의 다른 글

DAY_31 두번째 DB연결해주기  (0) 2021.02.05
DAY_30 서버 교체해보기  (0) 2021.02.04
DAY_28 vmware로 방화벽 설정해보기  (0) 2021.02.02
DAY_27 방화벽  (0) 2021.02.01
DAY_26 웹 설정파일  (0) 2021.01.29

BELATED ARTICLES

more