웹 보안 개요
계층별 웹 보안 적용
네트워크 레벨(IPSec)
전송 레벨(SSL, TLS)
응용 레벨(S/MIME, Kerberos)
월드와이드웹과 HTTP
HTTP
서버는 80번 포트를 사용, 클라이언트는 입시 포트 번호를 사용
영속성
데이터를 생성한 프로그램이 종료되어도 사라지지 않는 데이터의 특성
HTTP 버전 1.1은 영속적 연결을 기본값으로 한다
HTTP 트랜잭션
요청 메시지
요청 메시지의 첫 줄은 요청 라인이 있고 문자 구분 기호에 의해 분리된 세 개의 필드가 존재(메소드, URL, 버전)
응답 메시지
응답 메시지의 첫 줄은 상태 라인이 있고 첫 필드는 HTTP 프로토콜의 버전을 의미
상태 코드는 요청의 상태를 정의(200, 400, 404 등)
SSL/TLS
전송계층 보안 프로토콜
IPSec과 비슷하게 애플리케이션에 대해 독립적
대칭키 암호, 공개키 암호, 일방향 해시함수, 메시지 인증코드, 의사난수 생성기, 전자서명을 조합해서 안전한 통신을 수행
SSL/TLS상의 HTTP
통신 내용을 암호화해 주는 프로토콜로 SSL 혹은 TLS를 이용
SSL/TLS 보안 서비스
기밀성 서비스(대칭키 암호화), 클라이언트와 서버 상호 인증(비대칭키 암호 알고리즘 / 전자서명), 메시지 무결성 서비스(해시 알고리즘)
암호 스위트
대화하는 클라이언트와 서버가 같은 암호 기술을 사용하지 않으면 통신을 할 수 없음
TLS
가장 널리 사용하는 보안 서비스 중의 하나
TLS 구조
2 계층에 걸친 프로토콜
Handshake 프로토콜
초기협상(ClientHello, ServerHello)
서버인증(Certificate, Server_Key_Exchange, Certificate_Request, Server_Hello_Done)
Client 인증(Certificate, Client_Key_Exchange, Certificate_Verify)
종료(Change_Cipher_Spec, Finish, Change_Cipher_Spec, Finished)
Recode 프로토콜
기밀성과 메시지 무결성을 제공
ChangeCipherSpec 프로토콜
종단 간에 협상된 보안 파라미터를 이후부터 적용 / 변경함을 알리기 위해 사용하는 프로토콜
Alert 프로토콜
오류를 통보하기 위해 사용
하트비트 프로토콜
하드웨어나 소프트웨어가 생성하는 주기적 신호
HTTPS와 S-HTTP
HTTPS
443번 포트 사용
기밀성 및 클라이언트와 서버의 인증, 데이터 무결성을 제공
S-HTTP
HTTP로 전송되는 내용을 보호하는데 중점
웹서버 보안
IIS 보안 설정
권한 설정, 관리자 페이지 접근통제, 메소드 제한, 헤더 정보 숨김
Apache 보안설정
서버 실행 계정 확인, httpd.conf 파일(아파치 설정 파일), 검색엔진 정보 노출 취약점
검색엔진 정보 노출 취약점
검색엔진에 의해 웹사이트 해킹에 필요한 정보가 검색되어 해킹의 빌미가 제공되는 취약점
웹 보안위협 및 대응책
웹서비스 공격의 개요
웹사용자 클라이언트의 취약점을 이용한 사용자 공격과 서버의 취약점을 이용한 웹서버 공격
SWASP TOP10에 대해 이해하고 있어야 함
주요 웹 보안위협 및 대응책
SQL Injection
입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안 약점
취약점 판단 방법
검색어 필드 및 로그인 필드에 큰 따옴표, 작은 따옴표, 세미콜론을 입력하여 DB에러가 발생하는지 확인
공격 종류
Union SQL Injection
union select 쿼리를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법
select문의 필드 개수가 같아야 하며 필드 타입이 호한 가능해야 한다.
Error-Based SQL Injection
DB 쿼리에 대한 에러값을 기반으로 한 단계씩 점진적으로 DB 정보를 획득할 수 있는 방법
Blind SQL Injection
쿼리 결과의 참과 거짓을 통해 의도하지 않은 SQL문을 실행함으로써 데이터베이스를 비정상적으로 공격하는 기법
대응 방법
모든 입력값에 대해 적절한 검증절차를 설계하고 구현
SQL 서버의 에러 메시지를 표시하지 않는다
Prepared Statement를 이용하면 SQL Injection이 발생하지 않는다
XSS
스크립트가 클라이언트 측에서 동작하도록 하여 악의적인 행위를 수행하는 공격
서버가 아닌 클라이언트를 공격
공격 종류
Stord XSS
사용자가 글을 저장할 수 있는 부분에 정상적인 평문이 아닌 스크립트 코드를 입력하는 기법
Reflected XSS
사용자가 악성 스크립트 코드가 인자 형태로 포함된 URL을 클릭할 때 악성 스크립트 고드가 서버 사이트에 의해 HTML 문서로 반사되어 웹 브라우저에서 실행
DOM based XSS
DOM
HTML 및 XML 문서에 접근방법을 표준으로 정의하는 문서객체모델
공격 스크립트가 DOM 생성의 일부로 실행되면서 공격
보안대책
<, >, ", ' 등을 문자 변환 함수나 메소드를 사용하여 치환
사용자 입력값에 대한 검증은 반드시 서버단에서 해야 함
HTML 태그를 허용하는 게시판에서는 지원하는 HTML 태그의 리스트(White List)를 선정한 후, 해당 태그만 허용하는 방식을 적용
CSRF
공격자가 의도한 행위를 사이트가 신뢰하는 인증된 사용자의 권한을 통해 실행하게 하는 취약점
CSRF는 사용자가 악성 스크립트를 서버에 요청, XSS는 악성 스크립트가 클라이언트에서 실행된다.
공격 과정
사용자가 인증한 세션이 특정 동작을 수행하여도 계속 유지되어 정상적인 요청과 비정상적인 요청을 구분하지 못하는 점을 악용
보안대책
CSRF토큰 사용, 시용자와 상호 처리 기능 적용, 재인증 요구
직접 객체 참조
내부적으로 구현된 객체에 대한 참조가 노출될 때 방생
디렉터리 탐색 공격
경로 조작에 사용될 수 있는 문자를 필터링하지 않으면, 예상 밖의 접근제한 영역에 대한 경로 문자열 구정이 가능해져 시스템 정보누출, 서비스 장애 등을 유발할 수 있는 취약점
파일 업로드 제한 부재
클라이언트에서 서버 측으로 임의의 파일을 보낼 수 있다는 것은 웹서버가 가질 수 있는 가장 치명적인 취약점
리버스 텔넷
방화벽이 존재하는 시스템을 공격할 때 자주 사용
보안대책
업로드되어 저장되는 파일의 타입, 크기, 개수, 실행권한을 제한
업로드되어 저장되는 파일은 외부에서 식별되지 않아야 한다.
파일 다운로드 요청 시, 요청파일명에 대한 검증작업을 수행
다운로드한 소스코드나 실행파일은 무결성 검사를 실행
보안 설정 취약점
디렉터리 리스팅, 백업 및 임시 파일 존재, 주석 관리 미흡
웹의 취약점 보안
특수문자 필터링, 서버 측 통제 적용, 지속적인 세션 관리
웹 방화벽
웹 애플리케이션을 대상으로 시도되는 해킹을 차단해 주는 보안장비
소프트웨어 개발 보안
SW개발 생명주기
정의 단계, 개발 단계, 유지보수 단계
주요 소프트웨어 개발 생명주기 모델
폭포수 모델, 프로토타입 모델, 나선형 모델
소프트웨어 개발보안 방법론
프로젝트에서 안전한 소프트웨어를 만들기 위해 요구되는 보안활동들을 적용하는 개발방법
'공부 > 정보보안기사필기정리' 카테고리의 다른 글
35. 데이터베이스 보안 (0) | 2023.05.28 |
---|---|
34. DHCP와 DNS (0) | 2023.05.27 |
32. 이메일 보안 (0) | 2023.05.23 |
31. FTP 보안 (0) | 2023.05.22 |
30. 최신 네트워크 보안기술 (0) | 2023.05.21 |