책 소개
웹 해킹 기법을 소개하고, 홈페이지에서 해당 웹 해킹에 대한 취약점의 존재 여부를 확인하는 방법, 안전한 소스코드 개발 방법과 서버의 보안 설정 방법을 설명한다. 이 책을 통해 홈페이지 개발자는 안전한 홈페이지 개발에 도움을 받을 수 있고, 운영자는 안전한 보안 설정 방법을 확인할 수 있다. 또한 보안을 공부하고자 하는 사람들에게 웹 해킹의 이해와 공격 및 대응 방법에 대해 배울 수 있는 좋은 교재가 될 것이다.
이 책에서 다루는 내용
■ 웹 해킹 기법
■ 웹 취약점을 확인하는 방법
■ 안전한 홈페이지 개발을 위한 소스코드 예
■ 웹 서버와 WAS 서버의 보안 설정
이 책의 대상 독자
이 책을 통해 개발자는 안전한 소스코드로 홈페이지를 개발할 수 있고, 서버 운영자는 안전한 보안 설정을 할 수 있으며, 보안을 공부하고자 하는 사람에게는 좋은 지침서가 될 것이다.
이 책의 구성
이 책은 2개 부와 부록으로 구성했다.
1부의 내용은 다음과 같다.
공격 방법이나 공격이 일어나는 부분 등을 고려해 입력 값 조작, 잘못된 보안설정, 자동화 도구, 취약한 보안 기능에 관한 4개 장으로 구성했다.
각 취약점 대해서는 취약점에 대한 개략적인 설명을 기술하고, 웹 서버에 해당 취약점이 존재하는지 여부를 점검하기 위한 방법과, 취약한 시스템 대한 증상을 기술한다. 해당 취약점을 이용한 공격 성공 시 예상되는 피해를 기술하고, 해당 취약점을 제거하기 위한 일반적인 보호 대책이나 서버 설정 방법을 기술한다.
끝으로 소스코드를 수정해야 하는 경우 개발 언어별로 해당 취약점을 제거하기 위한 웹 애플리케이션의 샘플 코드를 기술했다. 책에 소개된 예제들은 참고용으로 소스코드의 일부분을 기술한 것이므로 각 서버와 서비스의 특성에 맞게 수정한 후 사용해야 한다.
2부의 내용은 각 웹과 WAS별로 보안 설정을 해야 하는 부분을 정리해 실제 서버에 설정할 경우 참고하기 편리하게 정리했다. 여기에 기록한 설정들은 일반 서비스에 대한 설정이 아니라 보안 설정에 관련된 부분만을 기술했으며, 여러 버전에 대한 내용을 포함하고 있지는 않으므로, 해당 설정을 참고해 자신의 환경에 맞게 설정해야 한다.
부록에서는 ‘기타 보안 고려 사항’과 홈페이지에서 발생하는 에러 상태 코드에 대한 설명과 웹 해킹 시 가장 많이 사용하는 웹 프락시 툴인 버프 스위트(Burp Suite)의 간단한 사용법을 기술했다.
추천의 글
1969년, 미국 대학을 중심으로 추진된 아르파넷(ARPANet)을 흔히 인터넷의 효시라고 이야기한다. 당시 인터넷은 일종의 상호 신뢰를 바탕으로 참여한 4개 대학을 중심으로 장애 등에 대비한 데이터의 효율적인 전송을 위한 통신 규약을 사용했다.
1982년, TCP/IP 규약이 정립된 이후에도 대부분 기업이나 기관에서는 전용회선이나 패킷 통신 방식을 주로 사용했다. 이후에도 기업이나 기관은 속도 면에서 장점이 있는 프레임 릴레이(Frame Relay), ATM 방식을 주로 사용하곤 했다. 하지만 1990년도 초반부터 브라우저라는 일종의 접속 프로그램이 발표되면서 인터넷이 대중화되기 시작했으며, 이에 따라 기업이나 기관은 인터넷이라는 통신 방식을 사용해 기업의 정보를 제공하는 수단으로 관련 시스템을 구축하고 운영하게 됐다. 이는 단순히 텍스트 위주의 데이터 표현에 HTML이라는 그림, 표 등 일종의 멀티미디어를 표시하는 기능을 포함시키게 됨으로써 정보의 바다라는 인터넷이 모든 통신 방식을 흡수하게 됐다.
하지만 인터넷은 PC나 네트워크, 서버, DBMS의 복잡한 운영체제, 시스템 소프트웨어, 프로그램 기술을 바탕으로 구현돼 있다. 따라서 인간은 신이 아니므로 작성된 소프트웨어에 취약점을 포함하게 된다. 일종의 소스코드 취약점 분석용 소프트웨어도 있지만, 복잡한 기능을 모두 다 검진하기는 사실상 불가능하다.
이와 같은 인터넷상의 보안 위협 상황에서 저자는 다년간 홈페이지 취약점에 대한 분석과 시큐어 코딩(Secure Coding) 업무를 수행한 경험을 바탕으로 이 책을 집필하게 됐다. 또한 이 책은 국내에서 많이 사용되는 각종 웹 서버 보안 설정 값 등도 언급함으로써 해킹 방지를 위한 종합적인 지침서로 활용이 가능하다.
이 책은 주요 보안 취약점에 대한 실전적 분석과 대응 방안을 언급해 현장 보안 기술자나 홈페이지 개발 등에 종사하는 IT 기술자를 위한 참고서로 활용할 수 있다. 특히 홈페이지 개발자, 서버 운영자, 보안을 공부하고자 하는 IT 기술자는 많은 도움이 될 것으로 믿는다.
이 책이 인터넷 보안에 조금이나마 도움이 돼 안전한 사이버 대한민국을 구축하는 데 도움이 되길 바라며, 저자의 노력에 격려를 보낸다.
- 김우한 / 정부통합전산센터장
매년 다양한 해킹 사고들이 반복되고 있습니다. 사고가 발생할 때마다 기업에서는 해킹 방지를 위한 대책 마련에 분주하지만, 정작 어디서부터 어떻게 시작해야 할지 모르는 경우가 다반사입니다.
이 책은 이런 고민을 해결하는 데 실질적인 도움을 주고자 출간된 책입니다. 특히 정보 보안을 공부하는 학생부터 홈페이지 개발자, 서버 운영자 등 현업에 종사하는 실무자까지 누구나 쉽게 이해할 수 있는 용어와 설명을 통해 다양한 해킹 기법과 대응 방안을 소개합니다. 또한 해킹 방어를 위한 보안 설정을 비롯해 WEB이나 WAS 보안 설정, 소스코드 개발 예제 등 보안 실무자에게 꼭 필요한 정보를 체계적으로 소개함으로써 안전한 홈페이지 개발에 큰 도움을 줄 것입니다. 이 책은 저자가 사이버 안보의 최전선에서 각종 해킹과 정보 유출 사고를 방어하는 핵심 실무자로 근무하면서 경험했던 내용이 고스란히 담긴 만큼 현업에서의 활용도 역시 매우 높을 것으로 기대합니다. 특히 점검해야 할 항목이 일목요연하게 정리돼 있어, 담당자가 책을 보고 따라 하는 것만으로도 보안 체계가 크게 개선될 것입니다.
해킹에 대한 어려운 접근 방식에 불편함을 느낀 학생이나 현실과 동떨어진 내용에 답답함을 느낀 보안 실무자에게 이 책은 가장 합리적인 선택이 될 것으로 판단되며, 정보 보안에 관심이 많은 사람이라면 편안한 마음으로 이 책을 읽어보길 권합니다.
- 이득춘 / ㈜이글루시큐리티 대표이사
인터넷의 편리성 이면에는 어쩌면 그보다 더 큰 위험성이 내재돼 있다. 2011년에는 총 4,000만 명 이상의 개인정보 유출 사고(3개 기관) 및 전산망 마비 사태 발생, 2012년에는 1,300만 명의 개인정보 유출 사고 발생(3개 기관), 2013년에는 언론사, 방송국 및 은행 등의 전산망 마비 등과 같은 대형 보안 사고들이 발생한 것이 이를 대변한다. 대부분의 기관이나 기업에서는 고객들에게 편리한 서비스를 제공하기 위해 웹 서비스를 활용하고 있는 실정으로, 웹은 조직 운영의 필수 도구라 할 수 있다. 또한 이 필수 도구인 웹이 해킹의 주요 대상이 되고 있음은 주지의 사실이다. 분산 서비스 거부 공격을 제외한 대다수 공격이 웹을 대상으로 하고 있음을 보면 조직에 있어 웹 보안의 중요성은 아무리 강조해도 지나치지 않을 것이다.
저자는 이 책을 통해 개발자나 운영자들이 해킹에 대해 올바로 이해하고 애플리케이션 개발 시 보안을 고려해 어떻게 개발해야 하는지, 서버 설정은 어떻게 해야 하는지 등을 실무 측면에서 집필하게 됐다고 한다.
기존 웹 해킹 관련 서적들은 웹 해킹 기법들에 대한 소개들은 많이 하고 있으나, 실제 안전한 응용 개발과 보안 설정에 대한 설명이 미흡해 이 책에서는 해킹 기법들보다는 안전한 소스코드 개발과 서버 설정에 중점을 두고 있다. 즉, 웹 해킹에 대한 설명과 해당 공격이 발생했을 경우 어떤 위험이 따르는지, 해당 공격을 방어하기 위해 각 웹, WAS의 종류별로 보안 설정을 어떻게 해야 하는지, 그리고 소스코드 개발을 어떻게 해야 하는지에 대해 세부 지침을 기술했다. 이 책은 해킹 기법과 대응 기법을 통합적으로 기술하고 있어 웹 보안에 관심이 있는 독자들은 물론, 웹 보안을 책임지고 있는 현장의 실무자 분들에게 실질적이며 효과적인 지침을 제공할 것이다. 그러므로 끝없는 창과 방패의 싸움인 웹 보안 분야에서 방패가 승리하는 데 이 책이 크게 기여할 것으로 믿으면서 적극 추천한다.
- 이상호 / 충북대학교 전자정보대학 소프트웨어학과 교수, (사)중소기업융합학회 학회장
목차
목차
- I부 웹 해킹 기법과 대응 방안
- 1장 입력 값 조작 공격
- 1.1 운영체제 명령 실행
- 1.2 SQL 인젝션
- 1.3 크로스사이트 스크립팅
- 1.3.1 ASP에서의 크로스사이트 스크립팅 취약점 제거
- 1.3.2 PHP에서의 크로스사이트 스크립팅 취약점 제거
- 1.3.3 JSP에서의 크로스사이트 스크립팅 취약점 제거
- 1.4 크로스사이트 요청 변조
- 1.5 파일 업로드
- 1.5.1 ASP에서의 파일 업로드 점검
- 1.5.2 PHP에서의 파일 업로드 점검
- 1.5.3 JSP에서의 파일 업로드 점검
- 1.6 파일 다운로드
- 1.7 정리
- 2장 잘못된 보안 설정
- 2.1 디렉터리 인덱싱
- 2.2 정보 누출
- 2.3 관리자 페이지 노출
- 2.3.1 ASP에서의 관리자 IP 인증
- 2.3.2 PHP에서의 관리자 IP 인증
- 2.3.3 JSP에서의 관리자 IP 인증
- 2.4 위치 공개
- 2.5 웹서비스 메소드 설정 공격
- 2.6 정리
- 3장 자동화 도구
- 3.1 브루트포스
- 3.2 자동화 공격
- 3.3 정리
- 4장 취약한 보안 기능
- 4.1 불충분한 인증
- 4.2 불충분한 인가
- 4.2.1 불충분한 인가 취약점의 확인 방법
- 4.2.2 불충분한 인가 취약점의 대응 방안
- 4.3 불충분한 세션 관리
- 4.3.1 불충분한 세션 관리 취약점의 확인 방법
- 4.3.2 불충분한 세션 관리 취약점의 대응 방안
- 4.4 데이터 평문 전송
- 4.4.1 데이터 평문 전송 취약점의 확인 방법
- 4.4.2 데이터 평문 전송 취약점의 대응 방안
- 4.5 쿠키 변조
- 4.6 정리
- II부 웹 서버 설정 가이드
- 5장 IIS 보안 설정
- 5.1 디렉터리 인덱싱 차단 설정
- 5.2 웹 서버 정보 누출의 차단 설정
- 5.3 홈 디렉터리 쓰기 권한의 차단 설정
- 5.4 파일 업로드 디렉터리 실행 권한의 차단 설정
- 5.5 사용자 오류 페이지 설정
- 5.6 메소드 제한 설정
- 5.7 웹 관리자 페이지 접근 IP 설정
- 5.8 디폴트 페이지 삭제
- 5.9 상위 경로로의 이동 차단 설정
- 5.10 소스 파일이나 설정 파일의 접근 권한 설정
- 5.11 기타 보안 설정
- 5.11.1 세션 타임아웃 설정
- 5.11.2 디버깅 오류 메시지 차단
- 5.11.3 미사용 스크립트 매핑 제거
- 5.11.4 로그 관리
- 6장 아파치 보안 설정
- 6.1 디렉터리 인덱싱 차단 설정
- 6.2 웹 서버 정보 누출 차단 설정
- 6.3 웹 서버 데몬의 root 권한 구동 제한 설정
- 6.4 홈 디렉터리의 쓰기 권한 차단 설정
- 6.5 파일 업로드 디렉터리의 실행 권한 차단 설정
- 6.6 로그 디렉터리의 일반 사용자 접근 차단 설정
- 6.7 사용자 오류 페이지 설정
- 6.8 메소드 제한 설정
- 6.9 디폴트 페이지 삭제
- 6.10 소스 파일이나 설정 파일 접근 권한 설정
- 6.11 웹 관리자 페이지의 접근 IP 설정
- 6.12 기타 보안 설정
- 6.12.1 Access_Log 설정
- 6.12.2 심볼릭 링크 사용 제한
- 6.12.3 MultiViews 사용 제한
- 6.12.4 최신 보안 패치 적용
- 7장 웹투비 보안 설정
- 7.1 디렉터리 인덱싱 차단 설정
- 7.2 웹 서버 정보 누출 차단 설정
- 7.3 웹 서버 데몬의 root 권한 구동 제한 설정
- 7.4 홈 디렉터리 쓰기 권한 차단 설정
- 7.5 로그 디렉터리의 일반 사용자 접근 차단 설정
- 7.6 사용자 오류 페이지 설정
- 7.7 메소드 제한 설정
- 7.8 디폴트 페이지 삭제
- 7.9 소스 파일이나 설정 파일의 접근 권한 설정
- 8장 아이플래닛 보안 설정
- 8.1 디렉터리 인덱싱 차단 설정
- 8.2 웹 서버 정보 누출 차단 설정
- 8.3 웹 서버 데몬의 root 권한 구동 제한 설정
- 8.4 홈 디렉터리 쓰기 권한 차단 설정
- 8.5 로그 디렉터리의 일반 사용자 접근 차단 설정
- 8.6 사용자 오류 페이지 설정
- 8.7 메소드 제한 설정
- 8.8 웹 관리자 페이지 접근 IP 설정
- 8.9 소스 파일이나 설정 파일 접근 권한 설정
- 8.10 기타 보안 설정
- 8.10.1 디폴트 페이지 삭제
- 8.10.2 심볼릭 링크 사용 제한
- 9장 톰캣 보안 설정
- 9.1 디렉터리 인덱싱 차단 설정
- 9.2 홈 디렉터리 쓰기 권한 차단 설정
- 9.3 로그 디렉터리의 일반 사용자 접근 차단 설정
- 9.4 사용자 오류 페이지 설정
- 9.5 메소드 제한 설정
- 9.6 디폴트 페이지 삭제
- 9.7 관리자 콘솔 접근 제한 설정
- 9.8 관리자 콘솔의 디폴트 계정/패스워드 변경
- 9.9 관리자 콘솔용 패스워드 파일의 접근 제한 설정
- 9.10 소스 파일이나 설정 파일 접근 권한 설정
- 10장 제우스 보안 설정
- 10.1 WAS 서버 정보 누출 차단 설정
- 10.2 홈 디렉터리 쓰기 권한 차단 설정
- 10.3 로그 디렉터리의 일반 사용자 접근 차단 설정
- 10.4 사용자 오류 페이지 설정
- 10.5 메소드 제한 설정
- 10.6 디폴트 페이지 삭제
- 10.7 관리자 콘솔 접근 제한 설정
- 10.8 관리자 콘솔의 디폴트 계정/패스워드 변경
- 10.9 관리자 콘솔용 패스워드 파일의 접근 제한 설정
- 10.10 소스 파일이나 설정 파일 접근 권한 설정
- 11장 웹로직 보안 설정
- 11.1 디렉터리 인덱싱 차단 설정
- 11.2 WAS 서버 정보 누출 차단 설정
- 11.3 홈 디렉터리 쓰기 권한 차단 설정
- 11.4 로그 디렉터리의 일반 사용자 접근 차단 설정
- 11.5 사용자 오류 페이지 설정
- 11.6 메소드 제한 설정
- 11.7 디폴트 페이지 삭제
- 11.8 관리자 콘솔 접근 제한 설정
- 11.9 관리자 콘솔의 디폴트 계정/패스워드 변경
- 11.10 관리자 콘솔용 패스워드 파일의 접근 제한 설정
- 11.11 소스 파일이나 설정 파일 접근 권한 설정
- 부록A 기타 보안 고려 사항
- 부록B 웹 상태 코드
- 부록C 웹 프락시 툴 사용법
도서 오류 신고
정오표
정오표
[ p141 2행 ]
SMTP -> SNMP
[ p141 하단 각주 3번 ]
(각주) 3. SMTP는 -> 3. SNMP는