2019. 12. 10. 14:55ㆍSecurity/리눅스
* apache의 개요
HTTP(Hyper text transfer protocol)
- Web application layer protocol
- Client/server model
Client : browser는 웹용 client app, 질의를 전달하고 요구한 web page를 보여주는 기능을 담당.
Server : Web server로 client의 질의에 응답하고 여러 web object를 client에 전송.
- HTTP 1.0 : RFC 1945
- HTTP 1.1 : RFC 2068
* 아파치 설치 과정
1.httpd-2.2.32.tar.gz 버전을 /usr/local/ 에 다운로드.
2. # cd /usr/local/
3. # tar xvfz httpd-2.2.32.tar.gz
4. # cd ./httpd-2.2.32
5. # ./configure --prefix=/app/apache --enable-so
6. # make
7. # make install
8. /app/apache/conf/httpd.conf에 'ServerName localhost'를 추가.
9. /app/apache/bin/apachectl start
10. /etc/rc.d/rc.local에 /app/apache/bin/apachectl start 추가
* httpd.conf
- 3개의 섹션으로 구성(전역 환경 설정, 기본 서버 구성, 가상 호스트 부분)
전역 환경 설정
- ServerRoot “/app/apache”
-> 웹서버의 설정파일, 로그파일 등이 저장되는 최상위 디렉토리
-Timeout 120
-> 서버와 클라이언트의 연결시에 아무런 메시지가 없을 때에 오류로 처리되는 초단위 시간
- MaxClients 150
-> 접속 가능한 최대 client 수. 통상적으로 MaxClients의 5배 정도의 사용자가 접속 가능.
- Startservers 20
-> 초기 서버 프로세스의 수
- MinSpareServers/MaxSpareServers
-> 대기 상태의 프로세스 수. 딱히 큰 의미가 없기때문에 별도로 지정 안함.
- ServerName [명칭]
-> DNS나 hosts 파일에 등록된 이름을 지정.
ServerAdmin root@localhost
-> 관리자의 메일주소.
기본 서버 구성
- ServerTokens Major|Minor|Min|Prod|OS|Full
-> client에 보내는 응답에 포함될 서버의 정보에 대한 설정. 지금은 딱히 설정하지 않음
-> Full은 권하지 않음
- DocumentRoot “/app/apache/htdocs”
-> 웹 서버의 홈 디렉토리
- DirectoryIndex index.html index.java index.php
-> 메인페이지 파일명
- ErrorLog logs/error_log
-> 웹서버에 문제가 발생시에 에러를 기록하는 로그파일
CustomLog logs/access_log combind
-> 외부에서 접근한 기록에 대한 로그파일
UserDir public_html
-> 개인 홈디렉토리 지정. 예전에는 있었으나 지금은 다른 파일에 있음.
Directory 설정
<Directory "/app/apache/htdocs"> ...</Directory>
- 웹서버는 디렉토리 단위로 설정
ex) <Directory "/app/apache/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
option 항목
- ALL : 가능한 모든 옵션을 다 사용한다.
- None : 아무런 옵션도 없다.
- Indexes : 메인 페이지가 없는 경우 파일 목록을 보여준다.
- FollowSymLinks : 디렉토리의 심볼릭 링크를 이용한다.
- ExecCGI : CGI를 실행 등등
AllowOverride 항목
- 디렉토리에 대한 apache 레벨에서의 접근 제한
- 사용자 인증 파일인 .htaccess 파일 사용여부
- 현재 인증은 apache 레벨에서 구현하지 않는다.
Order 항목(require와 둘중 한 개만 사용)
- 접근 권한 적용 순서
ex) Order deny, allow
Deny from all
Allow from 192.168.123.
-> 192.168.123. 으로 시작하는 IP를 제외하고 모든 접속을 막는다.
Require 설정(order와 둘중 한개만 사용)
Require all [denied | granted] : 기본 설정
Require [not] ip ip_주소 : IP별 설정
ex) Require all granted
Require not ip 192.168.123.0/24
-> 192.168.123.0 네트워크를 제외하고 모두 접속 허용
httpd.conf의 Document Root 설정
- HTTPD 서버 관리와 Web page 관리는 서로 다른 책무이므로 반드시 분리 구성.
- Web page 관리자가 시스템 디렉토리에 접근해서는 안된다.
- Web page 관리자 계정 web 계정을 생성하고 홈디렉토리 내에서 관리가 이뤄지도록 한다.
관리자 정보
- 계정명 : web
- 홈디렉토리 : /home/web
- Document Root : /home/web/httpd/html
1. web이라는 계정 생성 후 Document Root로 사용할 폴더 생성
3. vi /app/apache/conf/httpd.conf의 DocumentRoot 부분의 경로를 /home/web/httpd/html로 변경(총 2곳)
DocumentRoot "/app/apache/htdocs"를 DocumentRoot "/home/web/httpd/html"로 변경
<Directory "/app/apache/htdocs">를 <Directory "/home/web/httpd/html">로 변경
4. web폴더의 권한을 755로 수정
#chmod -R 755 web
-> 바꿔 주지 않으면 다른 사용자가 들어와서 볼 수 없기 때문에 볼 수 있도록 other에 5를 줘야한다.
5. 초기 서비스 파일인 index.html을 /home/web/httpd/html로 복사해온후에
퍼미션 및 파일의 소유자, 그룹 소유자를 변경.
#cp /app/apache/htdocs/index.html index.html : 파일 복사
#chown web.web index.html : 파일의 소유자 및 그룹소유자를 변경. 해주지 않으면 web 계정에서 수정이 안됨
6. 아파치 서버 재시작
/app/apache/bin/apachectl restart
7. 제 3의 사용자(다른 사용자)가 접속할수 있는지 확인
8. web 계정에서 index.html을 수정후에 정상적으로 적용 되는지 확인
/home/web/httpd/html의 index.html을 web계정에서 수정
'Security > 리눅스' 카테고리의 다른 글
Day17-apache(3) (0) | 2019.12.12 |
---|---|
Day16-apache(2) (0) | 2019.12.11 |
DAY 14-DNS 서버(4) (0) | 2019.12.06 |
Day 13-DNS 서버(3) (0) | 2019.12.05 |
DAY 12-DNS 서버(2) (0) | 2019.12.04 |