FTP(fcpd, wget)
전송모드
- Active Mode = 클라이언트가 포트 선택, 명령어:21Port, 데이터:20Port, 응답성공=230
- Passive Mode = 서버가 포트 선택, 명령어:21Port, 데이터:1024Port 이후 → 변경=PASV
종류 -FTP(TCP사용), -tFTP(인증없이 UDP), -sFTP(암호화 기법)
접근통제 -ftpusers = FTP 접근관리, -xferlog = 로그파일
보안 취약점
- Bounce Attack = 포트 스캔 후 Fake mail 발송, nmap -b IP, 어나니머스 계정 삭제 필요
- Anonymous FTP Attack = 익명 사용자
※ TCPWrapper = IP로 접근통제
inetd → tcpd(host.allow → any:any = 서비스:IP, host.deny) → FTP(TCP)
전자우편(opt-in, opt-out)
프로토콜
- SMTP = 25Port, 메일 발송, MUA, MDA, MTA
- POP3 = 110Port, 메일 읽기, MBOX 삭제
- IMAP/IMAP4 = 143Port, 메일 읽기, MBOX 삭제 안함
보안 기법
- PGP = 분산 키 관리, RSA, IDEA, MD5 사용
- PEM = 중앙 집중 키 관리, DES-CBC, MD5 사용
- S/MIME = RSA가 개발, 서명가능, Yara, Inflex
스팸 차단
- RBL = KISA에 IP 등록
- SPF = DNS에 발신 IP 등록(Sender Policy Framwork)
- Spamassain = Score 기반 차단
- Inflex = 첨부파일 필터링
웹 서버(Apach/Tomcat)
httpd = root로 기동(TCP 80Port), 실행 파일 = bin, 설정 파일 = conf
httpd.conf
- 접근 통제 = Order Deny/Allow, Deny from all, Allow from IP
- FollowSymLinks = 심볼릭 링크 차단
- Indexes = 디렉터리 리스팅 on 차단
- Server Signature = Apach 정보 노출 = off
- Server Token = 최소한 정보 노출, Full. OS, Prod
로그파일
- access.log = IP, 요청일, 시간, HTTP 메소드, HTTP 상태코드, 전송 바이트, 시간 기록, User-Agent
- error.log = error level → Emerg, Alert, Crit, Error, Warn, Notice, Info, Debug
※ 관리자 페이지 = 관리자 페이지 보호, 2-factor 인증(MFA), IAM = 계정관리
※ web shell = Server Side Script → 업로드 취약점을 이용하여 실행되는 스크립트
→ 대응방안 = 화이트 리스트 확장자 검사, 파일명을 임의의 난수로, 확장자 제거, 업로드 디렉터리와 다운로드 디렉터리 분리, www 밖에 저장
HTTP
TCP 기반 80 port, Request/Response 구조
Request header 구조 (Message)
- Request Method = 호출되는 메소드
- GET = URL에 입력 파라미터 넣어서 요청
- POST = 요청 파라미터를 body에 넣어서 전송
- HEAD = 응답 메세지 없이 ssh
- PUT, DELETE, TRACE
- Accept = 미디어 타입을 의미 text/*, text/html 등
- Accept-Language
- User-Agent = 브라우저 정보
- Accept-Encoding
- Host = 웹 서버의 기본 URL
- Connection = Keep Alive or Cloes
→ 전부 뒤에 개행문자 /r/n
Response header 구조 (Message)
- Status Code = HTTP 응답코드
- Server = 서버 프로그램 이름과 버전 전송
- Expires
- Cache Controll = no cache → 항상 최신 페이지로 가져와라(리퀘스트 날라감)
- Pragma = Cache Controll과 같이 캐시 사용 여부
- Content-Encoding
- Content-Length = 바이트 단위
- Keep-Alive = 연결 유지 시간
- Connection = Keep-Alive 사용 유무
- Content-Type = 응답되는 미디어 타입
→ 전부 뒤에 개행문자 /r/n
오류 코드
100 = continue, 200 = OK, 300 = Forbiden, 400 = Not Found
URL
특수문자 + = 공백, & = 파라메타 구분자, % = 16진수 표시, : = 프로토콜 구분자, ? = 질의 구분자
DNS
URL을 주면 IP를 주는것, UDP 53Port, TCP, nslookup, dig<trace 옵션>
Query
- Recursive = Local DNS에 Query 보내고 답을 요청
- Iterative = 다른 DNS 서버에 Query를 보냄
Record = 응답 포멧 설정
A = IPv4, AAAA = IPv6, NS = DNS 서버, ANY = All→DNS 증폭공격
MX = 메일, SoA, CNAME = 호스트의 다른 이름, PTR = 특수 이름 도메인, 역방향
DNSSEC = root DNS에서 사용, 전자서명을 사용한 DNS 보안 기술
공격기법 = ①host 파일변조 ② cache table ③host.ics ④도메인 쉐도잉 ⑤Zone transfer
DNS Spoofing = DNS cache 테이블 변조, dnsspoof = 가짜 Response를 계속 보내는 것, fdns-net
도메인 쉐도잉 = 몰래 많은 서브 도메인을 등록 시켜 놓는 기법
※ DNS 리솔브 = 이름을 푸는 과정 → 방법을 정리한 파일 = Zone 파일
- 절차
- ① Client Cache(ifconfig/displydns, ifconfig/flusdns)
- ② hosts 파일(URL/IP)
- ③ Recursive = 순환 커리, 프로세스 = named
- ④ Iterative
※ 메세지 인증코드 = MAC → 블록 암호, 해시, 부인 방지 기능 ・ 재사용 기능 X
※ OAuth 2.0 = 보안 위협 → 중간자 공격, 웹서버, 이용자 단말, 파밍, 클릭재킹 등
Can Do It
brb