Linux

Linux 명령어 - (6) server 관리 - DNS Virtual host, 사용자제어

우당탕탕인생기 2023. 8. 22. 11:20

이번에는 가상호스트을 통해 다양한 웹페이지을 서비스하는 가상호스트와 , 특정 페이지에 접속을 막는법과, 사용자 인증을 통해 접속하는 법에 대해 알아보도록 하겠습니다.

 

1. VirtualHost (가상호스트)

  • 웹사이트가 여러개인 경우 서비스 가능한 방법
  • ip도 동일하고, port도 동일한 경우 DNS에서 host 이름을 설정해줘야 한다.

 

아래 설정을 하기 전에는 나의 환경은 dhcp가 설정되어 있고,

기본적인 dns 설정을 해준 상태이다.


가상호스트 설정

 

순서
1. DNS 레코드테이블 수정
2. 파일권한설정
3. httpd.conf 가상호스트 설정
4. 방화벽 제어
5. 홈페이지별 디렉토리 및 index.html 설정
6. systemctl

1. DNS 레코드테이블 파일 수정

 

일단 , dns 레코드 테이블 파일인 /var/named/test.local 파일에서 

각각 blog 과 intra 라는 dns을 설정해준다.

 

vi /var/named/test.local



## 편집모드
$TTL 1D
@       IN SOA  ns1.test.local. web. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.test.local.
        MX 10   mx.test.local.


@       A       10.0.0.11
www     A       10.0.0.11
ftp     A       10.0.0.11
ns1     A       10.0.0.11
mx      A       10.0.0.11
blog    A       10.0.0.11     # blog dns
intra   A       10.0.0.11	  # intra dns

 

2. 파일 권한설정

 -test.local에 대한  other 사용자도 읽을 수 있도록 권한설정을 한다.

chmod -o+r /var/named/test.local

 

3. 가상호스트 설정

 - http config 파일에서 가상호스트를 설정해야한다.

vi /etc/httpd/conf/httpd.conf # 가상호스트 설정을 위한 httpd 설정파일 진입

이렇게 많이 나오는데 ,그냥 맨 끝으로 가서 가상호스트를 설정해야한다.

 

NameVirtualHost *:80
## blog 가상호스트 설정

<VirtualHost *:80>
        DocumentRoot /var/www/blog
        ServerName      blog.test.local
</VirtualHost>

# intra 가상호스트 설정
<VirtualHost *:80>
        DocumentRoot /var/www/intra
        ServerName      intra.test.local
</VirtualHost>

# 메인 페이지 가상호스트 설정
<VirtualHost *:80>
        DocumentRoot /var/www/html
        ServerName      test.local
        ServerAlias     www.test.local
</VirtualHost>

이렇게 서비스 하는 메인페이지 , 블로그페이지, 인트라 페이지에 대한 가상호스트를 설정해줘야한다.

사실 메인페이지는 가상호스트를 설정안해도되지만, 그럼 서비스 진행할때 종종 오류가 발생할 수 있어 그냥 메인 페이지까지 가상호스트 설정을 한다,

 

 

 

4. blog , intra 디렉토리 생성 및 페이지 html 설정

mkdir /var/www/{blog,intra}

그래서 각각 블로그 ,인트라 페이지의 html을 구성한다.

 

 

5. 방화벽제어

 - httpd는 80번 포트 dns는 53번 포트를 사용하기 때문에 다 열어줘야한다.

firewall-cmd --permanent --add-port= 53/tcp
firewall-cmd --permanent --add-port= 53/udp # 데이터양이 512byte가 넘어가면 udp 방식을 사용하기 때문에 미리 열어둔다.
firewall-cmd --permanent --add-port= 80/tcp

 

6. systemctl

- 이제 httpd와 named(dns) 서비스를 실행시킨다.

systemctl start httpd
systemctl start named

 

 

Windwo 가상환경을 통해 확인해보자

 

(1) 메인페이지

(2) blog 페이지

 

(3) intra 페이지

 

 

 


사용자 인증

순서
1. httpd.conf 사용자 인증 설정
2. htaccess 파일 작성
3. htaccess 사용자 추가

이번에는 특정 페이지에 접속할려면 id와 비밀번호를 통해 접속하는 방법이다.

 

1. httpd.conf 사용자 인증 설정

인트라 페이지에 사용자 인증을 적용하고자한다.

 

vi /etc/httpd/conf/httpd.conf

######## 편집모드

<Directory "/var/www/intra">  # 해당 디렉토리 설정
        AllowOverride Authconfig  # 사용자 인증설정
        #Options Indexes FollowSymLinks # 홈페이지에서 하위 디렉토리를 보여주는것 
        ## 보안상 안하는것이 좋음
</Directory>

 

2. htaccess 파일 작성

.htaccess 파일은 Apache 기반 웹 서버에서 특별히 사용하여 웹 사이트에 직접 연결된 파일 / 폴더와 관련된 특정 기능을 관리하는 데 도움이되는 구성 파일입니다.  여기서 사용자 제어 기능을 구성하면됩니다.

 

vi /var/www/intra/.htaccess ## 

###################편집,구성모드

AuthName "app"           # 이름
AuthType Basic			#인증타입
AuthUserFile /date/.auth	# 인증 유저에 관한 정보파일 위치
Require user aaa bbb		# 인증유저

이후 /date 라는 디렉토리를 생성해야만 위에 인증유저정보파일이 제대로 기록된다.

 

 

3. htaccess 사용자 추가

htpasswd -c /date/.auth aaa 
비밀번호 입력
htpasswd /date/.auth bbb
비밀번호 입력

처음생성해야 할 때는 -c 옵션을 줘야 하지만, 두번째 생성부터는 -c 옵션을 주면 안된다.

 

이후 /date/.auth 파일에 가보면

자동으로 이렇게 유저가 생성되어 있다.

 

이제 인트라홈페이지에 들어가면 이렇게 사용자이름과 암호를 입력하라고 나온다,

 

 


특정 IP 접근거부

 

특정 IP를 거부도 가능하다.

이번에는 그럼 10.0.0.101 ip을 가진 컴퓨터의 경우 블로그 페이지의 접근을 제한해보도록 하겠다.

 

1. httpd.conf 

<Directory "/var/www/blog">   # 설정할 디렉토리
        Order allow,deny	# 옵션
        Allow from all
        Deny from 10.0.0.101	# 거부할 IP
</Directory>

이렇게 10.0.0.101.은 blog 페이지에 접속이 안되게 된다.

 

 

DNS 가상호스트 개념과 설정방법들의 설정파일 경로도 각기 다르고,

내용도 어려워서 이해하고 구현하는데까지 시간이 조금 걸렸다.