Ubuntu Server 11.10, apache2 기준 작성.
(참고: 운영체제나 apache 버전에 따라 경로가 조금씩 다를 수 있으니, 터미널에서 grep 명령어를 사용해 검색해보자.)
1. 서버 컴퓨터 OS는 최신 패치를 적용합시다.
2. 서버 컴퓨터에는 필요한 최소한의 프로그램만 설치합시다. 컴파일러 같은 거 깔아두면 최악..
우분투 서버 에디션을 갓 설치한 경우라면, 확인차 sudo apt-get remove gcc g++ python python3.. 정도만 해줘도 될 듯.
3. 관리자 PC의 IP만 접근 가능하게 설정해 두자.
/etc/apache2/sites-available/default 파일에서,
<Directory /var/www/관리자페이지> # 관리자용 웹페이지, 혹은 관리자만 접근 가능해야 하는 디렉토리
order deny,allow
deny from all
allow from 100.100.100.100
</Directory>
또한 시스템 루트 디렉토리는 allow from none, deny from all. 웹을 통해선 시스템을 헤집고 다닐 수 없어야 한다.
<Directory />
AllowOverride None
Order allow,deny
allow from none
deny from all
</Directory>
4. 패스워드는 강력한 것으로.
5. apache2 권한은 최소한으로.
기본적으로 www-data의 권한은 별로 없는 걸로 안다;
6. apache2 의 로그 파일이 노출되면 안됨.
기본적으로 /var/log/apache2/error.log 에 위치
7. 웹 서비스 루트 디렉토리는 OS 디렉토리의 루트 디렉토리와 다르게 설정한다.
/etc/apache2/sites-available/default 파일에 DocumentRoot 는 기본적으로 /var/www로 설정되어 있다.
이걸 고치지 않고 내버려둔다면 상관 없다.
7.1. 이왕이면 로그 디렉토리 및 컨텐츠 디렉토리는 웹 서비스 루트 디렉토리 밖에 위치시키자.log는 위에서 설명했듯이 어차피 다른 위치여서 상관 없는데..
웹 컨텐츠 디렉토리를 옮긴 뒤 설정하는 방법은 사용하고자 하는 웹 서비스마다 다르다.
8. 웹 컨텐츠 디렉토리 안에서 Symbolic Link (파일 바로가기) to outer directory 사용 금지.
9. 자동 디렉토리 리스팅 사용 중지.
/etc/apache2/sites-available/default 파일에 모든 Options에서 Indexes를 지워준다.
10. 샘플 파일, 메뉴얼 파일, 임시 파일 제거. 불필요한 정보 제공 방지. 동적 컨텐츠도 제거.
11. 웹 서버 종류, 사용 OS, 계정 이름 등도 노출 방지.
/etc/apache2/conf.d 파일에 ServerTokens 라는 항목이 있다. Prod[uctOnly]라고 써주자.
ServerTokens ProductOnly # 웹 서버가 apache라는 것 빼고는 아무런 정보도 알려주지 않는다.
그 연장선상에서, Error 시에도 에러 정보를 주지 않는 것이 좋다 한다. (몇 번 에러가 났는지 알려주면 안됨.)
사용자 정의 Error 메시지는 ErrorDocument 404 "사용자 정의" 와 같이 써주면 된다.
이 경우, 404번 Error 발생 시 사용자 정의 메시지가 뜬다.
메시지 말고 특정 웹문서로 연결시킬 수도 있다. Error 404 /error.html 과 같이.
12. 업로드 제어: 대량 업로드 금지, 업로드한 파일엔 실행 권한 주지 않기.
.htaccess 파일을 사용하는데.. 이는 apache 옵션 설정 파일 중 하나이다.
/var/www 디렉토리와 혹은 그 하위 디렉토리에 위치시키면, 디렉토리별 apache 옵션 설정이 가능한 것 같다.
기본적으로 /etc/apache2/apache2.conf 파일에 보면
AccessFileName .htaccess 라고 설정되어있고, ".ht" 로 시작하는 이름의 파일들엔 접근 금지 설정도 되어있다.
여하튼, .htaccess 파일은 웹 서비스 루트 디렉토리에 위치시키면 충분.
파일 내용은 이정도로.
<FilesMatch "\.(ph|inc|lib)">
Order allow,deny
deny from all
</FilesMatch>
이런 식으로 Server side script 파일들은 접근 금지된다.
13. 설정 파일은 백업.




최근 덧글