본문 바로가기
정보보안 지망이!/Linux 심화

Linux2_Apache Web Server

by Edes Kim 2020. 6. 3.

Apahe Web Server

- Web Service를 담당하는 서버

- 일반적으로 FTP Server와 함께 사용

패키지(httpd-*) / 포트(80/tcp) / 서비스(http) / 데몬(httpd[.service])

 

아파치를 시작하면 아파치는 컴퓨터의 어떤 포트와 주소에 연결하여 들어오는 요청을 기다린다.

기본적으로 아파치는 컴퓨터의 모든 주소에서 요청이 들어오길 기다린다. 그러나 아파치가 특정 포트나 선택한 주소를 대상으로만 기다리게 해야할 경우가 있는데 이 문제는 아파치가 어떻게 다른 IP 주소, 호스트명, 포트에 반응할지를 결정하는 가상호스트 기능과도 연관이 되어있다.

 

설치....겂나 힘듦........... 그리고 mailcap*도 추가로 꼭 설치해야 데몬 실행된다. (*mime*)


[실습1]

도메인 지정 

: Apache 서버가 자신의 도메인명을 나타내는 이름을 지정한다. 

  즉, 일반적으로 IP주소에 대해 할당된 도메인 명이지만, 따로 이름을 할당하고 그것을 공식 도메인 명으로 원하는 경우에 사용한다.

ex) Apache가 오류를 표시 할때, 자신을 나타내는 도메인 명도 함께 표시할때 등에 여기서 설정한 도메인 명이 사용된다.

ServerName 지시어

요청을 받을 포트번호 지정

: Apache가 외부에서 요청을 받아들이는 포트 번호를 지정한다.

이렇게 설정했다면 80번 포트와 8080번 포트 두군데에서 요청을 기다리고 받는다.

 

>>>이거 안됨...ㅠㅠ 아이피 주소를 바꾸고 그 번호를 검색창에서 사용할수 있다는거 아닌가...왜안되지..ㅠㅜㅠㅠ

포트 번호만 지정하게 되면 모든 인터페이스에서 지정한 포트 번호의 요청을 받는데, Apache가 실행되는 그 한 서버에 여러개의 인터페이스가 연결되어 특정 인터페이스에서만 요청을 받기를 원한다면 그 인터페이스의 IP주소를 지정한다.

httpd.conf 추가

*Port Forwarding

공유기를 사용하는 애들은 NAT로 연결되어있는데 (모두 같은 공인IP를 사용) 그 때문에 외부에서 접근할때 어떤 기기(MAC 주소)에 정보를 전달해야 하는지 모르기에 통신이 불가능하다. 이때 "포트포어딩" 기술을 통해 각 기기가 지정받은 포트번호보고 어떤 기기에게 정보를 전달해야되는지 판단한다.

  ( 같은 공인 IP를 사용하는 기기들은 그 내에서 서로다른 각각의 포트번호 지정받는다. )

공유기가 또 모뎀과 연결하여...

 

모뎀 : 상위에서 조사하려는 IP주소에 해당하는 모뎀을 찾아가, 그 아이피를 사용한 기기들의 정보를 매핑된 MAC주소의 기록을 통해 수집할수 있다.


[실습2]

: guest PC 의 웹에서 www.gusiya.com을 검색창에서 사용하여 들어갔을때에도 아까 만들었던 html파일을 뜨도록한다.

* 에러

www.gusiya.com은 지금 httpd.conf 파일에서 설정한 대로 /var/www/html을 나타낸다.

이때 html의 디폴트 이름(?)이 index.html이다. 이름이 index.html이라면 www.gusiya.com까지만 검색창에 입력해도 잘 찾지만,  

만약 samadal.html 처럼 이름을 바꾸게 된다면 같은 경로에 있었을 지라도 www.gusiya.com/samadal.html  이렇게 끝까지 잘 적어줘야 잘 찾아간다.


[실습3]

1. 사용자 (main)

2. SKEL(/sam)

3. 자동생성 디렉터리(public_html)

    하위에 index.html 안에 "main"이라는 내용의 웹페이지가 나오게.

4. 똑같이 gusiya.com 접속가능한지

/etc/httpd/conf/httpd.conf 원본

에러 천국ㅋㅋㅋ

* 홈 디렉터리가 원래 설정대로 /home 하위에 생성이 되는데 지금만든 'main' user의 홈디를 /export/home/main으로 따로 지정했기때문에 /home 하위에 생성된 애들을 /export/home/main으로 cp해야한다.

* 에러가 뜰때는 권한의 문제일수 있다. 홈디렉터리의 권한 은 755의 권한을 가져야 한다.

* 경로를 끝까지 제대로 수정 

  은근 경로 제대로 안써서 에러 잘나온다..ㅠㅠ

* 데몬 재시작 잊지말기!


[실습4]

 gusiya.com 에는 "main"이라는 내용의 페이지가,

 gusiya.com/test 에는 "Directory Test"라는 내용의 페이지가 나오게 설정


[실습5]

user1이라는 사용자를 만들고 그 홈 디렉터리 하위에 html파일을 만들어서 www.samadal.com의 메인 페이지로 설정


Alias 설정하기

/etc/httpd/conf/httpd.conf 원본
이요 바로 밑의 <Directory>칸은 삭제.

 

Require all granted : "페이지를 요청하면 위에 적어논 경로에게 페이지를 띄울수 있는 모든 권한을 주겠다."

 

/export/home/user1/pulic_html 아래에 있던 index.html을 더 하위의 a/b/c/d 밑에다가 mv했을때,

만약에 Alias /user1 /export/home/user1/public_html/a/b/c/d라고 지정 해두면

www.gusiya.com 에서는 html파일이 뜨지않고

www.gusiya.com/a/b/c/d 또는 www.gusiya.com/user1라고 입력했을때 파일이 제대로 뜬다.

 

즉, www.gusiya.com 까지는 httpd.cof파일에서 설정해 놓은 루트를 나타내고 그 이후에 이어지는 루트가 더있다면 일일이 다 써야되는데 불편하니까 그 이후에껀 alias를 지정해 놓으면 편하다.

 

위에 사진처럼 했다면

그냥 www.gusiya.com www.gusiya.com/user1  이렇게 두개가 같은 의미로서 정상적으로 출력.

user1 이라는게 기본 설정한 루트를 alias로 두기 때문에 달라질게 없기 때문.