DAY_29 가상호스트
체크리스트
● 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

====================================================
[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테이블에 정보저장

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

제일 처음 설정인 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 |



