끄적끄적 아무기록

Linux HTTP 서비스 설치 및 Directory Listening 기능, ACL 설정

by 현생사는갓생지망생
반응형

HTTP

(Hypertext Transfer Protocol)

인터넷에서, 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송학 위해 사용되는 통신 규약

 

yum 명령어를 이용하여 http서비스를 설치해준다.

yum install -y httpd

설정 파일의 위치는 /etc/httpd/conf/httpd.conf

 

먼저 HTTP 서비스의 디렉토리 리스닝 기능에 대해 알아보자.

 

설정 파일에는 문서의 기본 루트 디렉토리가 지정되어 있다.

 

기본 루트 디렉토리 안에 간단히 HTML파일을 만들어보자.

vi /var/www/html/index.html

 

기본 루트 디렉토리 안에 하위 디렉토리들도 만들어보고

서비스를 시작한다.

 

실제피시에서 접속을 해보기 위해 방화벽을 열어준다.

iptables을 수정을 하기 전엔 서비스를 중지하고 수정 후 다시 시작해준다.

 

HTTP는 80번 포트를 사용하므로 80번 포트 열어주고,

 

실제피시에서 실습 중인 리눅스 가상머신의 IP를 입력해주면

내가 작성했던 HTML파일이 잘 뜨는 것을 확인할 수 있다.

 

위에서 기본 루트 디렉토리 안에 하위 디렉토리를 생성해주었고,

그 디렉토리로 직접 들어가면 하위 디렉토리로도 바로 이동이 가능하다.

이를 디렉토리 리스닝 기능이라고 한다.

보안상 이 기능은 사용하지 않는 것이 좋다.

 

설정 파일 중 317 ~ 346번 째 줄이 /var/www/html 디렉토리의 설정 관련 부분이다.

Options Indexes FollowSymLinks -> Indexes 부분을 삭제해주면

디렉토리 리스닝 기능을 사용하지 않게 된다.

 

위의 1.0.0.21/1 결과를 봤을 때

하단에 버전 정보가 나오기 때문에, 잘못하면 취약점을 알려주어 쉽게 공격당할 수 있다.

안전한 옵션은 Prod이므로 'ServerTokens Prod' 로 설정해준다.

 

57줄은 서버 루트 디렉토리의 위치.

65줄은 프로세스 저장 위치.

76줄은 사용자가 로그인하고 연결이 살아있도록 설정.

 

웹 서비스 포트는 기본 80포트로 설정되어 있다.

 

보안상 아파치 계정으로 실행되도록 설정되어 있다.

 

아파치 서버 전체에 영향을 미치는 전역 설정.

 

AllowOverride는 사용자별 접근 제한 설정 부분이다.

 

Order allow,deny에서 allow와 deny의 순서가 매우 중요하다.

적는 순서에 따라 먼저 적용이 되기 때문에

Order deny,allow

Allow from 1.0.0.253

Deny from all

으로 설정하면 deny가 먼저 적용되어 모든 IP가 접근 제한되고,

그 다음 allow가 적용되어 1.0.0.253 IP를 가진 사용자만 접근 허용된다.

 

ACL(Access Control List)

- 순차적으로 적용된다.

- 마지막에는 묵시적으로 deny all이 적용된다.

- 따라서 맨 첫 줄에 모든걸 allow하거나 deny하면 안 된다.

 

'UserDir disabled' = 사용자 디렉토리 사용 안 함

주석 처리하고, 'UserDir public_html' 주석을 해제해주면

사용자 디렉토리를 사용하며 그 디렉토리는 public_html이란 뜻이다.

 

이 부분에 사용할 파일 형식을 적어주면 된다.

 

참고로 vi편집기에서 잠깐 빠져나오는 명령어는 :!bash 이며, 다시 vi로 돌아가려면 exit 입력해주면 된다.

사용자 a의 디렉토리를 /home/a/public_html로 생성하고

그 안에 HTML파일을 간단히 만들어준다.

 

외부에서 /home/a 디렉토리로 접근하여 HTML파일을 읽어야 하기 때문에

하위까지 권한을 바꾸어 준다.

 

1.0.0.21/~a 로 들어가면 사용자 a 디렉토리로 접근하게 된다.

 

위에서 allow,deny 언급했던 부분이 IP별 접근 제어라면

이 부분은 사용자별 접근 제어이다.

사용자별 접근 제어를 하기 위해서는 .htaccess 라는 파일을 만들어야 한다.

자세한 내용은 실습에서 다룬다.

 

IP 접근 제한 - deny, allow

사용자 접근 제한 - AllowOverride

 

이 부분을 주석 해제하고 1.0.0.253 (실제피시의 NAT카드 IP)을 허용해주면

 

1.0.0.21/server-status 서버 상태를 확인 가능하다.

 

마찬가지로 주석 해제 후 허용 IP를 설정해주면

 

1.0.0.21/server-info 서버 정보도 확인 가능하다.

 

80번 포트 사용하니 주석을 해제해준다.

 

각 페이지별로 설정해주는데,

이 부분도 실습에서 자세히 다룬다.

 

만약 접근 제어 등의 문제로 접속이 안 될 때 이러한 페이지가 뜬다.

접근이 허용되지 않은 사용자에겐 아무런 페이지도 보이지 않는 것이 보안상 좋다.

 

vi /etc/httpd/conf/welcome.conf

모두 주석처리 해주면 더 이상 저 페이지가 보이지 않는다.

 

접속이 안 되면 이러한 페이지가 뜨게 될 것이다.

반응형

블로그의 정보

현생이네

현생사는갓생지망생

활동하기