- User와 Group이 로그인 불가한 계정으로 설정되어 있는지 확인
User nobody
Group nobody
- DocumentRoot 디렉토리 구조가 노출되지 않도록 설정
DocmuentRoot는 모든 웹 컨텐츠가 저장될 디렉토리 구조이다. 시스템의 루트 파일시스템 등과는 별도의 파일시스템을 사용해야 한다.
웹 서버 데몬은 chroot에 설치하는 것을 권고한다. 만약 웹서버 데몬이 공격당해도 chroot 이외 디렉토리로는 접근할 수 없어 피해를 최소화할 수 있다.
웹 브라우저에서 사용자가 URL을 입력했을 때 웹 컨텐츠가 없을 경우 기본적으로 DocumentRoot 디렉토리 리스트를 보여주게 된다.
이를 방지하기 위해서 Options 지시자에서 Indexes 옵션을 제거한다.
웹 서버에서 심볼릭 링크를 이용해서 파일시스템에 접근하는 것이 가능하다.
이를 방지하기 위해 Options 지시자에서 FollowSymLinks 옵션을 제거한다.
SSI(Server Side Includes)는 HTML 페이지 안에 위치한다. 이는 "exec cmd"를 사용해 서버에 어떤 종류의 실행이 가능하다.
이를 방지하기 위해 Options 지시자에 IncludesNoExec 옵션을 추가한다.
- 불필요한 cgi-bin 실행 방지
cd /usr/local/apache2/cgi-bin
기본적으로 설치된 모든 CGI 스크립트는 제거하는 것이 좋다.
근데 나는 왜 이 경로가 없지... apache2가 없다...? 그냥 apache도 없고...
어쨌든 실행 가능한 디렉터리를 제한시켜준다.
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
- 웹 서버 응답시 헤더 정보 숨기기
curl --head domain.com
현재 서버에 요청했을 때 받아오는 head값을 확인할 수 있다.
적나라하게 공개중
httpd.conf에서
ServerTokens Prod
Prod가 가장 최소 노출 설정이다. 서버가 Apache인 것만 알려준다.
이 설정이 없을 시 기본값은 OS까지 노출된다고 한다.
- Prod: 웹서버 이름만
- Min: 웹서버 이름과 버전
- OS: 웹서버 이름과 버전, 운영체제
- Full: 웹서버 이름과 버전, 운영체제, 설치된 모듈(응용프로그램) 정보
변경 후 이렇게 바뀜
참고:
'main > Server' 카테고리의 다른 글
[CentOS 7] wget 버전 업그레이드 (0) | 2022.02.11 |
---|---|
[CentOS 7] Apache 서버 로그 관리 - httpd.conf (0) | 2022.02.10 |
[Apache] 유저 생성, 정보 확인, sudo 권한주기, 비밀번호 pass 하기 (0) | 2022.02.09 |
[CentOS 7] let's encrypt 인증서 확인하기 / 갱신하기 (crontab) (0) | 2022.02.07 |
[정규표현식] Rewrite 지시자로 정규표현식 이해하기 (0) | 2022.02.07 |