Linux 18 . httpd 서비스

2024. 2. 19. 09:35Linux/CentOS7

웹 서비스 제공을 위한 

httpd 프로그램을 설치해주자

 

설치를 완료했으면 

/etc/httpd/conf/httpd.conf

 

위 경로에 존재하는 설정 파일을 살펴보자

많은 기능이 있지만 

주요한 설정들만 확인해보자

 

31 ServerRoot "/etc/httpd"   >> 서버루트의 경로로 주요설정파일,에러,로그 파일등이 있는 경로다.

42 Listen 80  >> 예시로 Listen 12.34.56.78:80 이런 식으로 사용해 어떤 IP에 서비스 할 지 정하는 것인데

현재 IP가 없고 port만 표기된 것은 모든IP의 80port로 서비스 하겠다는 것이다.

 

56 Include conf.modules.d/*.conf  > DSO(동적공유객체)로 각종 모듈을 해당경로에서 필요할때 불러오는 기능

 

66 User apache  >>  이 apache 서버를 실행하는 사용자를 설정하는 기능.  현재 apache로 설정
67 Group apache  >>  이 apache 서버를 실행하는 사용자의 그룹을 설정하는 기능. 현재 apache로 설정

(66,67행이 모두 apache로 설정된 이유는 보안상의 이유다, 이 웹서버를 탈취 당해도, apache 계정,그룹만 탈취 당하기 때문에

공격자는 탈취했더라도 root권한을 위해서 다시 권한상승 작업을 거쳐야한다.)

 

86 ServerAdmin root@localhost >> 이 서버를 관리하는 관리자의 메일주소 (보안상 좋지않다.)

86 ServerAdmin web@doghj.local >> 이처럼  보안상 root 계정을 노출시키지말고 팀 메일(개인 메일x)을 사용하자

 

95 #ServerName http://www.example.com:80 >> DNS에 동일한 이름이 존재해야한다.

주석처리 해두면 DNS에서 가져다 쓴다, 우리는 DNS를 이용하니 주석처리 로 두자

 

102 <Directory />
103     AllowOverride none
104     Require all denied
105 </Directory>

위 문구는 디렉토리 지시자로서 해당 디렉토리에 대한 권한을 나타낸다. 

(만약 파일을 나타내고 싶다면 <Directory /aaa/a.txt> 로 작성하면 된다)

AllowOverride none 는 사용자 인증을 사용할지 여부를 나타낸다, none = 사용안함

Require all denied 는 모든 사용자를 denied (거부)한다.

보안상 웹 서버에 접근하는 사용자들을 웹 컨텐츠들에만 접근하게해야지

루트 디렉토리에 접근하게 할 순 없기 때문에 설정해준다

 

 

119 DocumentRoot "/var/www/html"  >> 웹 컨텐츠가 있는 디렉토리(변경가능)

 

124 <Directory "/var/www">      >>> 디렉토리 지시자
125     AllowOverride None
126     # Allow open access:
127     Require all granted
128 </Directory>                       >>>             ''

/var/www 디렉토리에 사용자들이 접근할 수 있게 허용 되어있는 것을 볼 수 있다.

이 경로에 웹컨텐츠를 제작하면 하위 파일들도 접근이 허용된다.

 

144     Options Indexes FollowSymLinks

Options Indexes >> 디렉토리 리스닝 기능

(디렉토리 리스닝 : 웹서버의 특정 경로에 있는 파일들을 웹서비스를 통해 디렉토리 형식으로 보는것)

FollowSymLinks >> 심볼릭링크 허용 여부

 

151     AllowOverride None >> 웹컨텐츠의 인증 여부

156     Require all granted   >> 웹컨첸츠의 접근 여부 (모든 접근을 허용한다.)
157 </Directory>

서로 굉장히 멀리 떨어져서 각자 다른개체로 보이겠지만 124~157행은 같은 디렉토리 지시자다!

 

 

163 <IfModule dir_module>
164     DirectoryIndex index.html
165 </IfModule>

웹 시작 페이지를 어떤 파일로 제공 할 것인지 정하는 기능

(index.html이 웹컨텐츠가 존재하는 /var/www/html/ 에 없다면 , 기본 웰컴페이지가 출력된다.

 

171 <Files ".ht*">
172     Require all denied
173 </Files>

사용자 인증에 관한 설정 : 사용자별 접근 제한을 위해 사용한다.

 

 

186 # Possible values include: debug, info, notice, warn, error, crit,
187 # alert, emerg.
188 #
189 LogLevel warn

로그 레벨에 관련된 설정 (warn이상의 로그만 기록한다)

 

 

레벨
emerg 서버 가동불가의 심각한 오류
alert 즉각적 조정이 필요한 상황
crit 중대한 에러
error 비교적 중대하지 않은 에러
warn 경고
notice 중대하진 않은 일반적인 메세지
info 정보
debug 디버그 레벨

위로 갈수록, 설정 파일에선 오른쪽 끝에 있을 수록 높은 로그 레벨이다.

 

196     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

로그의 기본적인 포멧을 간략히 나타낸 것 (User-Agent : 사용자가 사용하는 브라우저)

 

353 IncludeOptional conf.d/*.conf

 conf.d/디렉토리 아래의 모든.conf 파일들을 포함한다는 뜻

나중에 직접 개인적인 설정을.conf로 넣어 사용할 수 있다.

 

 

설정을 살펴봤으면 임시 html 파일을 하나 

/var/www/html 웹컨텐츠 디렉토리 밑에 index로 만들어주자

그다음

httpd 서비스를 시작하고

방화벽에 http 포트를 열어주자

그 후 윈도우에서 웹서버의 IP 주소로 접속해보자

접속이 완료됐다..

httpd 설정 자체는 여기서 끝인 것이다..

DNS,이중화, 사용자별 접근제한,IP별 접근제한 등을 제외하면

httpd 로 웹컨텐츠를 올리는 것 자체는 정말 간단하다!

 

 

그외 기능에 대해서도 알아보자

 

먼저 

mv /etc/httpd/conf.d/{welcome.conf,welcome.bak}

명령

가상 호스트

기본적으론 하나의 IP당

하나의 웹 페이지만 제공할 수 있다.

이 기능을 사용하면 한 IP로 여러 웹 페이지를 제공할 수 있게 해준다.\

 

먼저 한 IP로 main,blog,intra 라는 페이지를 서비스해보겠다

 

먼저 /var/www/ 아래

 기본적으로 있는 html디렉토리

blog , intra 페이지를 만들어 내부에

각각 index.html을 만들겠다.

위처럼 간단하게 세곳에 만들어주자

 

웹페이지 작성을 끝냈으면

가상 호스팅으로 해당 주소를 분류해주면 된다.

httpd.conf 마지막 줄에 

353 IncludeOptional conf.d/*.conf  라는 문구를 기억해야한다.

conf.d 폴더 아래의 .conf 를 포함하고 있다는 것이다!

우리는 httpd.conf 맨 밑줄에 가상 호스팅을 추가해도 좋지만

conf.d/ 아래에 .conf 파일을 따로 만들어 관리,식별이 편하게 하자!

 

vi /etc/httpd/conf.d/virtualhost.conf 를 입력해 새로 작성하자

위처럼 index파일의 위치, 서버 주소를 입력해주자

 

DNS에도 intra, blog등의 주소로 찾아올 수 있게 등록해주자

 

그럼 이제 각각의 주소로 접속이 가능하다,

 

 

 

IP별 접근제한

가상호스트 파일에 접근제한 명령을 추가해주자

그럼 W11 (201) 외에는 모두 접속이 불가능 해진다.

 

만약 저 Testing이라 써있는 웰컴페이지가 싫다면 

etc/httpd/conf.d/ 아래에 있는 welcome 파일의 확장자명을 바꿔주자!

에러 페이지까지 정상 출력 시켰다.

 

 

사용자별 접근제한

이번에도 가상 호스팅 파일에 추가해주자

사용자 인증을 적용했으면

해당 디렉토리 지시자 경로에 .htaccess 파일을 작성해주자!

작성을 완료 했으면 

위 사진에서 설정한 경로에 사용자 계정,패스워드를 만들어주자

http의 인증엔

htpasswd 라는 명령어로 계정을 생성한다

조심해야할 것이 하나 있다.

-c 옵션은 최소 생성시에만 적용 해야한다.

-c 옵션을 또 쓰면 이전에 있던 정보가 지워지고 쓰여진다!

 

이제 intra 페이지 접속시 사용자 계정을 인증해야 한다!

 

 

이상으로 http 서비스에 대해서 알아봤다

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

Linux 20 . NFS 서비스  (0) 2024.02.19
Linux 19 . Mail 서비스  (0) 2024.02.19
Linux 17 . DNS 서비스  (0) 2024.02.15
Linux 16 . ftp 서비스  (0) 2024.02.14
Linux 15 . dhcp 서비스  (1) 2024.02.13