IP 보안을 사용할 경우 장점은 종단 사용자의 응요엥 투명성을 제공해주고 범용 해결책을 제시
필터링 기능을 가지고 있어서, 오직 선별된 트래픽에서만 IP 보안 처리를 하기 때문에 이에 대한 호버헤드만 추가된다.
안전 소켓 계층(SSL)과 전송 계층 보안(TLS)이라고 알려진 그 후속 인터넷 표준
2. 월드와이드웹과 HTTP
(1) 하이퍼텍스트 전송 프로토콜(HTTP, Hypertext Transfer Protocol)
1) 개요
웹에서 웹페이지를 가져오기 위해 어떻게 클라이언트-서버 프로그램이 작성될 수 있는지를 정의하는데 사용
HTTP 클라이언트는 요청을 하고 HTTP 서버는 응답을 한다. 서버는 포트 80번을 사용하고 클라이언트는 임시 포트 번호 사용
2) 영속성
3) HTTP 트랜잭션
3. SSL/TLS
(1) SSL/TLS의 개요
1) 기본개념
클라이언트/서버 환경에서 TCP 기반의 Application에 대한 종단간 보안서비스를 제공하기 위해 만들어진 전송계층 보안 프로토콜
대칭키 암호, 공개키 암호, 일방향 해시함수, 메시지 인증코드, 의사 난수 생성기, 전자서명을 조합해서 안전한 통신 수행
특정 암호 기술에 의존하지 않는다.
2) 클라이언트와 서버
웹 브라우저는 앨리스의 컴퓨터상에서 동작하는 프로그램이고, 웹 서버는 밥 서점에 있는 컴퓨터상에서 동작하는 프로그램이다.
3) SSL/TLS상의 HTTP
통신 내용을 암호화해주는 프로토콜로 SSL 혹은 TLS를 이용한다.
4) SSL/TLS 보안 서비스
기밀성 서비스
클라이언트와 서버 상호 인증
메시지 무결성 서비스
(2) TLS(Transport Layer Security) 프로토콜
1) 개요
가정 널리 사용하는 보안 서비스 중의 하나가 전송 계층 보안
TCP에 의존하는 프로토콜로 구현되는 일반용도 서비스
2) TLS 구조
신뢰성 있는 종단간에 안전한 서비스를 제공하기 위해 TCP를 활용한다. TLS는 단일 프로토콜이 아니고 2계층에 걸친 프로토콜이다.
Record 프로토콜은 운반자이며, 응용 계층으로부터 오는 데이터뿐만 아니라 TLS의 상위 프로토콜로붜 오는 메시지를 전송
Handshake 프로토콜은 Record 프로토콜에 대한 보안 매개변수를 제공한다. 암호 집합을 설정하고 키와 보안 매개변수를 제공한다. 또한 필요하다면 클라이언트가 서버에 대해 그리고 서버가 클라이언트에 대해 인증
ChagneCipherSpec 프로토콜은 암호학적 비밀을 신속하게 보내는 데 사용된다.
Alert 프로토콜은 비정상 조건을 알리는데 사용된다.
Heartbeat 프로토콜은 프로토콜 개체의 가용성을 모니터링 할 때 사용하는 프로토콜이다.
3) SSL/TLS 공격
- OpenSSL의 HeartBleed 취약성
- SSL 3.0의 취약성과 POODLE 공격
- FREAK 공격과 암호 수출 규제
- 완전 순방향 비밀성
(3) HTTPS와 S-HTTP
1) HTTPS
2) S-HTTP
4. 웹서버 보안
(1) IIS 보안 설정
1) 권한 설정
2) 관리자 페이지 접근통제
3) 메소드 제한
4) 헤더 정보 숨김
(2) Apache 보안설정
1) 서버 실행 계정 확인
2) httpd.conf 파일(아파치 설정 파일)
3) 검색엔진 정보 노출 취약점
robots.txt 파일은 반드시 웹사이트의 최상위 주소에 저장
5. 웹(Web) 보안위협 및 대응책
(1) 웹 서비스 공격의 개요
1) 기본 개념
크게 web 사용자 클라이언트의 취약점을 잉요한 사용자 컴퓨터 공격과 웹 서버의 취약점을 이용한 웹서버 공격으로 나뉘다.
2) OWASP TOP10 (2017년)
A1-Injection
A2-Broken Authentication
A3-Sensitive Data Exposure
A4-XML Extend Entities(XXE)
A5-Broken Access Control
A6-Security Misconfiguration
A7-Cross Site Scripting(XSS)
A8-Insecure Deserializtion
A9-Using Componets with Known Vulnerabilities
A10-Insufficient Logging & Monitoring
(2) 웹 보안위협 및 대응책
1) SQL Injection
DB와 연동되어 있는 애플리케이션의 입력값을 조작하여 DBMS가 의도하지 않은 결과를 반환하도록 하는 공격기법
2) 사이트 간 스크립팅(CSS[XSS], Cross Site Scripting)
웹 애플리케이션에서 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우, 공격자가 입력이 가능한 폼에 악의적인 스크립트를 삽입, 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행하는 취약점
사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹페이지 변조 등의 공격 수행
악성 스크립트가 클라이언트에서 실행된다.
3) 사이트 간 요청 위조(CSRF[XSRF], Cross Site Request Forgery)
웹 애플리케이션에서 정상적인 경롤르 통한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우, 공격자가 스크립트 구문을 이용하여 정상적인 사용자로 하여금 조작된 요청을 전송 하도록 하여, 게시판 설정 변경, 회원 정보 변경 등의 문제가 발생할 수 있는 취약점
사용자가 악성 스크립트를 서버에 요청한다
4) 직접 객체 참조
파일, 디렉터리, 데이터베이스 키와 같이 내부적으로 구현된 객체에 대한 참조가 노출될 때 발생
- 디렉터리 탐색 공격(파일 다운로드 취약점)
- 파일 업로드 제한 부재
- 리버스 텔넷
5) 보안 설정 취약점
- 백업 및 임시 파일 존재
- 주석 관리 미흡
(3) 웹의 취약점 보안
1) 특수문자 필터링
2) 서버측 통제 작용
3) 지속적인 세션 관리
(4) 웹 방화벽(WAF, Web Application Firewall)
1) 개요
웹 애플리케이션을 대상으로 시도되는 해킹을 차단해주는 보안장비
SQL 인젝션, 크로스 사이트 스크립트(XSS) 등과 같은 웹 공격을 탐지하고 차단하는 기능이며, 직접적인 웹 공격 대응 이외에도 정보 유출 방지, 부정 로그인 방지, 웹사이트 위변조 방지 등으로 활용이 가능
파일 전송 프로토콜(FTP, FIle Transfer Protocol)은 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 표준 기능이다.
FTP는 호스트 간에 두 개의 연결을 설정한다는 점에서 다른 클라이언트 서버 응용들과 다르다. 하나의 연결은 데이터 전송을 위하여 사용되고, 또 다른 하나는 명령과 응답 등의 제어 정보를 위하여 사용한다. 이러한 제어와 데이터 전송의 분리는 FTP를 좀 더 효율적으로 사용할 수 있도록 만들어 준다.
FTP는 두 개의 잘 알려진(well-known) TCP 포트를 사용한다. 포트 21번은 제어 연결을 위해 사용되고, 포트 20번은 데이터 연결을 위해 사용된다.
2) FTP 로그인 순서와 인증
USER 명령을 통해 사용자명을 전송하여 어떤 사용자가 접근을 시도하는지를 확인한다. 그리고는 PASS 명령을 통해 사용자의 비밀번호를 전송한다.
서버는 사용자 데이터베이스에서 사용자명과 비밀번호를 대조하여 접근을 시도하고 있는 사용자가 서버에 접근할 권한이 있는지를 확인한다.
3) FTP 연결
- 능동(Active) Mode (일반 연결)
FTP 클라이언트의 기본 값으로 설정. 클라이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성하고 데이터는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식
서버 21, 20번 포트 사용
서버에서는 두 개의 포트만 열면 서비스 가능
두 번째 connection은 서버에서 클라이언트로 접속
클라이언트에 방화벽 설치 시 접속 불가
- 수동(Passive) Mode (수동 연결)
클라이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성하고 데이터 채널도 클라이언트에서 서버로 접속하여 데이터를 보내는 방식
서버가 21, 1024번 이후 포트 사용
데이터 전송을 위해 1024번 이후 포트 사용
서버에서 클라이언트로 접속해야 하는 모순 해결을 위해 고안된 방식
(2) 익명 FTP
(3) TFTP(Trivial File Transfer Protocol)
1) 개요
FTP의 기능을 전부 지원할 필요가 없거나 모두 지원하는 것이 비현실적인 경우 위해 사용
UDP(69번 포트) 사용
소프트웨어 패키지를 읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할 때 주로 쓰인다.
특징
- 한정된 개수의 명령 : 파일을 보내고 받는 기능만 지원
- 한정된 데이터 표현 방식 : ASCII와 바이너리 지원
- 인증의 부족
2) 데이터 전송
신뢰성 없는 UDP 서비스 사용
파일은 데이터와 블록으로 나뉘고, 마지막 블록을 제외한 각 블록은 정확히 512바이트의 크기를 갖는다. 마지막 블록은 0에서 511바이트의 크기를 갖는다.
연속적인 데이터 블록으로 파일을 전송하기 위하여 흐름 제어와 오류 제어 메커니즘을 생성해야 한다.
(4) NFS와 삼바
1) NFS(Network File System)
TCP/IP 프로토콜을 사용하여 네트워크상에서 파일시스템을 운영할 수 있도록 해주는 프로토콜
데이터의 보안과 무결성 보장
인증된 네트워크 사용자가 공유된 네트워크 파일을 사용할 수 있는 방법 제공
2) 삼바(Samba)
유닉스 계열 시스템과 윈도우 시스템 간에 파일 및 프린터 자원을 공유할 수 있는 기능 제고
2. FTP 보안 위협 및 대책
1) FTP 보안
비밀번호는 평문(암호화되지 않음)으로 되어 있어, 공격자가 가로챙 사용할 수 있다.
2) SFTP(Secure File Transfer Protocol) 프로그램
보안 파일 전송 프로토콜
SSH 프로토콜의 일부분인 SFTP라 불리는 Unix 프로그램
3) TFTP 보안
보안에 대한 고려가 없다.
사용자 확인이나 비밀번호 없다. -> 파일 보호하기 위한 예방조치가 취해져야 한다.
중요하지 않은 파일에만 접근할 수 있도록 제한
TFTP가 필요한 경우 secure mode로 운영, chroot 기능을 이용
4) Bounce attack
제어 채널과 데이터 채널을 다르게 사용하고 데이터 채널을 생성할 때 목적지를 확인하지 않는 FTP 설계의 구조적 취약점을 이용하는 공격
능동모드에서 FTP 서버의 파일을 요청하면 클라이언트에서 파일을 받을 IP와 포트를 지정해서 전달해준다.(PORT 명령) 이때 IP와 포트를 요청항 클라이언트가 아닌 임의의 주소로 지정할 수 있는데 이러한 FTP 설계의 취약점을 이용하는 방식이다.
5) anonymous ftp 취약점
보안 절차를 거치지 않은 익명의 사용자에게 FTP 서버로의 접근 허용
익명 사용자가 서버에 쓰기 권한이 있을 때 악성 코드 생성 가능
보안대책
보안상 심각한 취약점을 가지고 있기 때문에 반드시 사용해야하는 경우가 아니라면 서비스르 제거