Tomcat 웹 서버 환경에서의 디렉터리 인덱싱 기능 제거 — web.xml의 default 서블릿 초기 설정에 listings 파라미터를 false로 설정
2. 웹 서비스 메서드 설정 취약점
개요 — PUT, DELETE 등의 불필요한 메서드를 허용했을 경우 이를 악용하여 웹 서버에 악성 파일을 생성하거나 중요 파일의 삭제 및 수정 등이 가능한 취약점
실습
취약한 사이트 실습(APM 환경) — telnet으로 접속 후 OPTIONS 메서드 요청 메시지 전송
안전한 사이트 실습(APM 환경)
http.conf를 통한 불필요한 메서드 사용 제한 — 디렉터리 섹션의 LimitExcept 지시자
3. 관리자 페이지 노출 취약점
개요
실습
취약한 사이트 실습(APM 환경)
안전한 사이트 실습(APM 환경)
추측하기 어려운 페이지
관리자 페이지에 대한 접근 제어 설정
관리자 IP 등록 — Aloow from
디렉터리 접근 제어(httpd.conf) 테스트
4. 위치 공개 취약점
개요
실습
취약한 사이트 실습(AP 환경)
안저한 사이트 실습 — httpd.conf를 통해 특정 확장자를 가진 파일에접근 차단
5. 검색 엔진 정보 노출 취약점
개요
검색 엔진에 의해 해킹에 필요한 정보가 검색되는 취약점
로봇 배제 표준
검색 로봇에 대한 웹사이트의 디렉터리 및 파일들에 대한 검색 조건을 명시해놓은 국제 규약
접근 제한에 대한 설정을 robots.txt에 기술
검색 로봇
검색 엔진이 검색 데이터베이스의 내용을 보충하기 위해 웹사이트를 검색하여 정보를 가져오는 프로그램
robots.txt를 확인하고 이를 준수하여 컨텐츠 수집
악의적인 검색 엔진의 경우 로봇 배제 표준 무시
실습
robots.txt 설정 방법
User-agent와 Allow/Disallow
웹 사이트의 최상위 주소에 저장
설정 예
설정 파일명은 반드시 robots.txt이어야 함
대소문자 구분
띄어쓰기 유의
검색 엔진 접근 차단 여부 확인 방법
웹 사이트 URL/rotobts.txt 확인
해당 파일이 없는 경우는 검색 엔진 접근 차단 설정 미적용 상태
6. 기타 웹 서버 보안 대책(아파치 기준)
웹 서비스 최소 권한 사용자 운영
개요
대응책
웹 서버 프로세스를 실행할 별도의 사용자 및 그룹을 생성하고 해당 사용자로 시스템에 로그인할 수 없도록 설정 — apahce 사용자와 apache 그룹을 생성하고 해당 사용자의 로그인 셸 부분을 /sbin/nologin 또는 /bin/false로 설정하여 시스템에 로그인할 수 없도록 함
httpd.conf의 서버 프로세스 실행 권한을 해당 사용자 및 그룹으로 설정
심볼릭 링크 사용 설정 제거
개요
심볼릭 링크 기능을 사용하여 다른 위치의 파일이나 디렉터리와 연결하여 사용 가능
웹에서 허용하는 디렉터리 외에 다른 디렉터리를 참조하는 링크가 존재하는 경우 해당 링크에 액세스할 수 있는 위험성 존재
대응책 — httpd.conf의 / 섹션의 Options에서 FollowSymLinks 설정 제거
웹 서비스 정보 숨김
개요
대응책
httpd.conf의 ServerTokens 지시자
Prod — 웹 서버 종류
Min — Prod 정보 + 웹 서버 버전
OS — Min 정보 + 운영체제(기본값)
Full — OS 정보 + 설치된 모듈 정보
ServerSignature 지시자 — 웹 서버에서 직접 생성하는 에러 메시지, 디렉터리 리스팅 메시지 등에 웹 서버, OS 모듈 등의 정보 제공 여부 지정
웹 서버 설정 파일 주요 지시자
일반 설정
ServerRoot
Listen
User Group
ServerTokens
ServerSignature
ServerAdmin — 클라이언트에게 전달되는 에러 메시지에 포함될 관리자 메일 주소 설정
DocumentRoot
DirectoryIndex
타임아웃 관련 설정
Timeout — 초 단위
KeepAlive
클라이언트와 서버 프로세스 간 연결을 일정 조건에 따라 지속시켜 동일한 연결을 통해 동일 클라이언트의 다수 요청을 처리하는 기능 사용 여부 지정
일반적으로 매번 클라이언트 요청에 대해 연결을 설정하고 응답 이후에 연결을 종료하는 방식(Connectionless)에 비해 웹 서버의 TCP 연결 설정에 대한 부하 감소
MaxKeepAliveRequests
KeepAliveTimeout
RequestReadTimeout
클라이언트로부터 요청 메시지의 헤더부와 바디부를 모두 수신하는 시간에 대한 타임아웃 지정
Slow 계열 HTTP DoS 공격에 효과적 대응
로그 관련 설정
ErrorLog
CustomLog — 접속 기록을 저장하기 위한 로그 파일의 경로 지정
7. 웹 로그 분석
개요
액세스 로그 — 클라이언트가 웹 서버에 요청한 자원에 대한 정보
에러 로그
웹 로그 분석 목적
접속 사용자의 행위, 취향 등 분석
보안 사고 발생 시 추적 가능한 증거 자료
보안 사고 발생 전 이상 징후, 해킹 시도, 해킹 성공 여부 확인
다양한 웹 공격 패턴 파악
접속 시간, 접근 파일 정보, 사용자 정보, 요청 방식, 성공 여부 등 확인
웹 로그 구조
웹 로그 종류
NCSA CLF(Common Log Format) — Apache 및 Tomcat의 기본 포맷
NCSA ELF(Extended Log Format) — NCSA CLF에 Refere 값과 User-Agent 값이 포함된 포맷
W3C ELF — Referer와 User-Agent를 비롯한 Cookie 및 사용자 정보를 추가로 남길 수 있는 포맷. 주로 IIS에서 사용
웹 로그 포맷(NCSA ELF)
Host
Ident — 클라이언트의 사용자 이름. 보통 “-”로 대체
Authuser — 인증이 요청된 사용자 이름. 보통 “-”로 대체
Dat and Time
Request
Status
Bytes
Referer — 요청된 URL이 참조되거나 링크된 URL
User-Agent
로그 예
웹 로그 분석 실습
8. 보안 서버 구축
개요
인터넷상에서 정보를 암호화하여 송수신하는 기능이 구축된 웹 서버
이미 사용하고 있는 웹 서버에 SSL/TLS 인증서나 암호화 소프트웨어를 설치하여 암호 통신을 지원하는 것
보안 서버 구축의 필요성
정보 유출 방지
위조 사이트 방지 — SSL/TLS 인증서가 인증
기업 신뢰도 향상
보안 서버 구축의 법적 근거
개인정보보호법 관련 개인정보보호위원회 고시 개인정보의 안정성 확보 조치 기준
제7조(개인정보의 암호화)
개인정보처리자는 비밀번호, 생체인식정보 등 인증정보를 저장 또는 정보통신망을 통하여 송수신하는 경우에 이를 안전한 암호 알고리즘으로 암호화하여야 한다.
개인정보처리자는 개인정보를 정보통신망을 통하여 인터넷망 구간으로 송수신하는 경우에는 이를 안전한 암호 알고리즘으로 암호화하여야 한다.
SSL/TLS 관련 보안 가이드
SSL/TLS 서버 인증서 생성 시 보안 가이드
키쌍 생성 시 2048비트 이상의 키를 사용하고 서버 개인키에 대한 접근은 최소화하며 안전하게 관리한다.
인증서 발급 시 인증서 서명 알고리즘을 SHA-2 이상으로 설정한다.
인증서 발급 시 주체/소유자의 CN을 서브 도메인까지 명시한다.
서브 도메인을 명시하지 않으면 임의의 서브 도메인 인증서로 악용 가능
신뢰할 수 있는 인증 기관을 통해 인증서를 발급한다.
OpemSSL 라이브러리 보안 가이드
취약점이 발견된 OpenSSL 라이브러리 버전을 사용할 경우 보안 업데이트를 수행한다.
SSL/TLS 웹 서버 설정 보안 가이드
취약한 암호화 통신 방법으로 알려진 SSL 2.0, SSL 3.0 프로토콜을 비활성화하고, TSL 1.0 ~ 1.2 프로토콜을 사용한다.