애플리케이션 기본
--DNS
DNS는 Recursive DNS서버(재귀/캐시 서버)와 Authoritative DNS(인증/허가) 서버가 존재. 사용자가 DNS 쿼리를 전송하면 우선 재귀 서버에 캐싱된 정보가 있는지 조회한 후 없으면 인증 DNS 서버로 순차 재귀적 질의를 전송하는 방식으로 동작함. 기본적으로 UDP 53번 포트를 사용하며 512Byte가 넘어가는 경우 TCP 53번 포트 사용. DNS서버가 관리하는 도메인 영역을 존이라고 하고, 관리 도메인에 대한 정보를 담고 있는 파일은 존파일이라고 함.
DNS질의보다 우선순위 높은 파일: 윈도우_host.ics, 유닉스/리눅스_hosts 파일
DNS 관련 유닉스/리눅스 파일명: /etc/resolv(시스템의 기본 네임서버 정보), /etc/hosts(도메인/호스트와 IP주소 매핑해둔 파일로, DNS 질의 전 가장 우선으로 참조), /ets/hosts.conf(DNS 질의 순서 저장), /etc/named.conf(존 파일 및 리버스 존 파일에 대한 설정)
DNS 관련 명령어: 윈도우_ipconfig displaydns&ipconfig flushdns, nslookup, dig(유닉스/리눅스에서 기본 제공), whois
DNS 관련 공격
1) 스니핑을 이용한 DNS Spoofing
DNS가 UDP로 동작하여 DNS 서버와 클라이언트 간의 연결을 유지하지 않고 트랜잭션 ID 및 출발지/목적지 IP 주소만 같으면 가장 첫 번째로 반환되는 정보를 신뢰하는 특성을 이용한 공격. 클라이언트와 DNS 서버 사이에서 스니핑을 하던 공격자가 클라이언트로부터 DNS 쿼리 발생했을 때 DNS 서버보다 빠르게 조작된 DNS 응답 패킷을 보냄으로써 클라이언트의 DNS 정보를 조작하는 공격 방법
>> 스니핑을 탐지할 수 있는 보안 장비 사용, 주요 도메인에 대해서는 DNS 쿼리보다 우선순위가 높은 hosts 파일에 저장
2) DNS cache Poisoning
공격자가 재귀적 DNS서버(캐시서버)에 다수의 DNS 쿼리를 반복 요청하고, 서버가 부하를 막기 위해 캐시와 TTL을 유지하는 동안 또다시 자신이 보낸 쿼리에 대한 다수의 응답을 전송함. 이때 DNS 캐시 서버의 캐시 정보가 변경되어 유지되는 동안 일반 클라이언트가 조작된 캐시 정보에 대해 DNS 쿼리를 요청하면 해당 클라이언트는 공격자의 정보를 받게 됨.
>> Authoritative DNS서버가 재귀적 쿼리를 허용하지 않거나 제한된 사용자만 사용 가능하도록 설정, DNS에 보안 기능을 추가한 DNSSEC를 사용, bind 버전 항상 최신으로 유지하여 보안 패치 되도록 함
--HTTP
웹(정식명칭은 WWW_World Wide Web) 상에서 클라이언트와 서버 사이를 연결해 주는 프로토콜. 비연결형 프로토콜로 상태정보를 저장하지 않는 특징을 가짐.
연결 상태 유지를 위한 방법: HTTP/1.1부터 HTTP Connection 헤더에 Keep_Alive 옵션 추가되어 일정 시간 연결 상태 유지 가능
상태정보를 저장하기 위한 방법
1) 쿠키: 개별 클라이언트 상태정보를 HTTP 요청/응답 헤더에 담아 전송하는 작은 데이터. 서버에서 Set-Cookie 응답헤더를 통해 쿠키 설정하여 클라이언트로 전달하면, 클라이언트는 Cookie 요청헤더를 이용해 지속적으로 쿠키를 전달하는 형태로 동작. 영속 쿠키(클라이언트에 파일 형태로 지속적으로 존재하는 쿠키. 설정된 사이트 요청시마다 cookie 요청헤더에 쿠키 정보를 담아 전달)와 세션 쿠키(클라이언트 메모리상에 세션이 유지되는 동안 존재하는 쿠키로 세션이 종료되면=일반적으로 웹 브라우저 종료되면 소멸됨. 따라서 영속 쿠키보다는 보안성이 좋음)로 나뉨
>> 쿠키 관련 보안 옵션: httponly_스크립트를 통한 쿠키에 대한 접근을 막는 옵션으로 XSS에 대응 가능, secure_HTTPS(SSL/TLS) 통신일 때만 쿠키를 전송하여 쿠키에 대한 기밀성을 보장할 수 있음.
2) 세션: 개별 클라이언트 상태정보를 서버에 저장하는 기술. 개별 클라이언트 세션을 식별하기 위해 세션 ID를 부여하고 세션 ID는 세션쿠키를 이용해 서버와 클라이언트 간 주고받음.
HTTP 주요 상태 코드: 100_continue, 200_Ok, 400_bad request, 401_Unauthorized, 403_Forbidden(요청한 자원에 대한 접근 차단), 404_Not Found(요청한 자원 존재하지 않음), 500_Interner Server Error
--FTP
원격 파일 전송 프로토콜. mode는 FTP 서버에서 데이터 채널 생성하는 기준. 클라이언트는 항상 서버 측의 21번 포트로 FTP 제어 신호 연결 채널 형성. FTP 접근 제어 설정은 ftpusers 파일로 접속 제한할 계정 관리하거나, TCP Wrapper를 통해 IP 기반의 접근제어 수행.
1) Active mode: FTP 클라이언트에 기본으로 설정되는 FTP 모드로, 서버에서 클라이언트의 포트로 접속해 데이터 채널을 형성함. 이때 클라이언트 측에 방화벽 설정으로 인한 외부 접속이 허용되지 않은 경우, 제어 채널 신호는 주고 받을 수 있으나 데이터 전송은 불가능함. 따라서 클라이언트 측의 방화벽 설정에 FTP 서버를 허용하는 설정을 하거나, passive 모드로 바꿔 데이터를 전송하도록 해야 함.
2) Passive mode: FTP 클라이언트가 서버에서 알려준 포트에 접속해 데이터채널을 형성하는 방식.
FTP 관련 공격
1) FTP bounce attack: FTP가 제어 채널과 데이터 채널을 따로 사용하며 데이터 채널 생성 시 목적지를 확인하지 않는다는 FTP의 구조적인 취약점을 이용
2) TFTP 공격: TFTP는 읽기 전용 메모리나 디스크가 없는 워크스테이션에 설치될 수 있을 정도로 매우 단순한 프로토콜로 69/udp 포트를 사용하며 별도의 인증과정이 없이 지정된 디렉터리로의 접근이 가능함. 따라서 접근제어를 제대로 하지 않을 경우 공격자가 임의의 파일에 접근할 수 있음.
>> inetd.conf 내의 tftp 서비스 주석처리, xinetd.conf에서는 tftp 서비스 설정 부분에서 disable=yes로 설정, TFTP 서비스 이용해야 하는 경우에는 secure mode로 운영
3) Anonymous: 익명 계정 즉, 아이디가 anonymous이고 비밀번호가 없는 계정을 통해 FTP 접속이 가능한 경우를 이용한 공격. >> 반드시 사용해야 하는 경우가 아니라면 vsftpd.conf 파일 내의 anonymous_enable=NO로 설정
--메일 관련 프로토콜
1) SMTP: 메일 MUA(클라이언트)와 메일서버(MTA) 또는 송수신 메일 서버 간 메일 전송을 위해 사용하는 프로토콜. 25/tcp 사용하며 SMTPS는 465/tcp 사용.
2) POP3: 메일 접근 프로토콜로 클라이언트가 메일을 읽을 수 있도록 함. 클라이언트가 메일 다운로드하면 서버에서는 삭제. 110/tcp
3) IMAP: 메일 접근 프로토콜. 클라이언트가 메일 다운이 아닌 복사해오는 방식으로 동작. 143/tcp
**메일 관련 파일 sendmail(리눅스 기준)
/usr/sbin/sendmail, /usr/sbin/makemap, /var/spool/mqueue, /etc/mail/sendmail.cf, /etc/mail/access_스팸 메일 및 릴레이 차단을 위한 설정파일. OK(조건 없이 모두 허용), RELAY(릴레이 허용), REJECT(거부 후 메시지 전송), DISCARD(폐기 후 메시지 전송 안 하므로 보안성 더 우수), 501 message
**메일 서버 구조: MUA(Mail User Agent_사용자가 메일을 송수신하기 위해 사용하는 메일 클라이언트 프로그램), MTA(Mail Transfer Agent_메일 서버 프로그램으로 메일 릴레이 기능 및 수신자가 MDA를 통해 자신의 메일함에 저장하도록 함), MDA(Mail Delivery Agent_사용자 메일함에 메일 저장해줌), MRA(Mail Retrieval Agent_메일 클라이언트가 확인을 요청하는 메일을 사용자 메일함에서 사용자로 전달해주는 프로그램)
**이메일 인증 기술(스팸 메일 방지 기술)
① SPF(Sender Policy Framework): 발신 메일서버 정보를 사전에 발신 도메인 DNS 서버에 공개적으로 등록함으로써 수신자로 하여금 수신한 메일의 발신자 IP주소가 발신 메일 도메인에 등록되어있는지 확인할 수 있도록 하는 이메일 인증 기술
② DKIM(DomainKeys Identified Mail): 발신자가 발신 메일의 메시지 헤더와 바디에 대한 디지털서명을 메일 헤더에 삽입하여 수신된 이메일이 위변조되지 않은 메일임을 검증할 수 있는 인증 기술
③ DMARC(Domain-based Message Authentication, Reporting and Conformance): SPF+DKIM을 결합한 인증 기술
--클라우드 컴퓨팅
클라우드 컴퓨팅이란? 직접 공유된 정보통신 기기, 정보통신 설비, 소프트웨어 등 정보통신 자원을 이용자의 요구나 수요변화에 따라 정보통신망을 통해 유동적으로 이용할 수 있도록 하는 정보처리체계. 필요한 만큼 빌려서 사용하고 서비스 부하에 따라 실시간 확장성을 지원받으며 사용한 만큼 비용을 지불함.
1) IaaS(Infrastructure as a Service): 이용자에게 서버, 스토리지, 네트워크 등의 HW 인프라 자원만을 사용량 기반으로 제공하는 서비스. 기존 물리적 형태로 사용해왔던 서버, 스토리지 등의 인프라 자원을 가상화 기술을 통해 가상화된 환경에서 쉽고 신속하게 할당 가능. ex)AWS
2) PaaS(Platform as a Service): 이용자에게 애플리케이션을 개발, 테스트, 실행하는 데 필요한 OS, 개발 환경 플랫폼, 개발 언어 프레임워크(스프링, Node.js 등)을 제공하는 서비스. 전통적인 IT 환경에서 서비스 개발을 위해 서버 구매, OS/미들웨어 설치 등의 선행 작업으로 소비되는 시간 및 비용을 줄일 수 있음.
3) SaaS(Software as a Service): 클라우드 환경에서 동작하는 애플리케이션/SW를 제공. ex)웹 기반 개인용 스토리지 서비스_네이버 N클라우드, 구글 드라이브 등
**주요 기술
가상화: 물리적은 IT자원을 동시에 다수의 논리적인 자원으로 이용할 수 있도록 하는 기술
① 데스크톱 가상화: 다양한 이기종 OS 환경을 사용자 컴퓨터에서 가상화 기술을 통해 이용
② 애플리케이션 가상화: 애플리케이션을 가상화하여 사용자 컴퓨터에 설치하지 않고 중앙의 가상화 서버를 통해 제공
③ 서버 가상화: 물리적인 다수의 서버를 가상 서버로 통합하여 필요한 서버로 재생성하고 할당하여 전체 관리비용을 감소시킴
④ 스토리지 가상화: 개별 스토리지를 통합하여 저장 용량이 하나로 통합된 가상 스토리지를 만들고 재할당하는 방식
⑤ 네트워크 가상화: 네트워크 리소스(HW/SW 모두)들을 물리적 요소가 아니라 논리적 네트워크 하나로 통합하거나 물리적 네트워크 하나를 여러개의 논리적 네트워크로 분할하는 방식
--기타
SNMP(Simple Network Management Protocol), DHCP(Dynamic Host Configured Protocol)