Software Maestro 멘토특강 - 보안과 웹해킹 실전반 1 (AWS 주의사항 / 웹서버 보안 설정 / OWASP)

김정욱·2021년 5월 10일
0

SoftwareMaestro

목록 보기
2/6
post-thumbnail

본 멘토 특강의 내용은 AhnLab의 박수현 멘토님에 의해 진행되었습니다

AWS 사용 주의사항

  • SM 프로젝트 진행AWS 해킹으로 과금을 지불하는 경우가 매년 있음
    • 3명의 프로젝트 지원금총 720만원
    • 업체를 중간에 끼고 비용처리가 되기 때문에 AWS측물러달라고 할 수 없음
      (보통 학생들을 대상으로 1회 물러주기 때문)
  • 해킹 시도
    • AWS 인스턴스는 만든지 1시간 정도만 되도 높은 확률해킹 시도가 시작
    • 도메인 없이 IP만 할당받은 상태여도 해킹될 수 있음
    • 정체 불명의 수 많은 인스턴스들이 생성되어 채굴기가 될 수 있다
  • 예방 방법
    • 인스턴스password쉬운 것으로 설정하지 말자
      (admin/admin or root/1234 등)
    • github노출하지 말자 (.gitignore 반드시 사용)
    • 이미 github에 올라갔다면 key비활성화 하고 재발급 받자
      (git reset 명령어로 되돌릴 수 있지만, 아직 각 로컬에 있는 팀원이 있다면 환경이 충돌날 수 있어서 재발급이 제일 깔끔)

[ last / lastb 명령어 등 ]

  • last 명령어
    : 로그인 기록재부팅 기록을 확인하는 명령어
    (linux에서 /var/log/wtmp저장되어 있는 기록을 보여줌)
  • lastb 명령어
    : 로그인 실패 기록을 보여주는 명령어
    (linux에서 /var/log/btmp저장되어 있는 기록을 보여줌)

  • iplocation 웹 사이트를 통해 어디 소속 ip인지 찾을 수 있다
  • SSH 를 통한 brute-force 공격은 거의 항상 있다고 생각하면 된다
    --> 뚫리면 root권한을 탈취당하고 정보를 뺏기거나 zombie-PC가 될 수 있다
  • Wappalyzer
    • http header포함되어 있는 사용 기술 스택의 정보를 보여주는 플러그인
    • 서버 시그니처 설정을 통해 특정 기술 스택 정보를 숨길 수 있도 있어서 모든 웹페이지에서 스택을 확인할 수 있는것은 아님

[ Google 검색 TIP ]

( 큰따옴표 사용 )

  • korean barbecue vs "korean barbecue"
    • korean barbecue : korean + barbecue 단어로 각각 searching
    • "korean barbecue" : 하나의 단어searching
      (함께 사용되는 단어를 검색할 때 원하는 정보를 찾을 확률이 높다)

( 특정 키워드 제외 )

  • apple -mackbook -watch
    : -이용해서 특정 키워드가 제외된 검색 결과를 확인할 수 있다

( * 사용 )

  • "how * you"
    : *사용해서 중간에 다양한 단어가 오는 검색을 할 수 있다

( intitle / intext )

  • intitle : 키워드
    : 제목키워드가 오는 것을 검색할 수 있다
  • intext : 키워드
    : 내용키워드가 오는 것을 검색할 수 있다

  • intitle : "index of"
    • index of취약한 페이지를 검색하는 것인데 실제로 조금 민감한 정보가 보이는 경우도 많다
  • intext : 이력서
    • 이력서를 내용으로 포함한 검색을 하는 것인데 실제 개인정보가 나오기도 함
  • 이처럼 intitle / intext데이터가 유출되는 것은 보통 구버전 웹서비스에서 directory listing 설정enable로 되어있기 때문
    • 과거에는 이 설정defaultenable이었다
      (보안보다는 개발자의 편의우선이었기 때문)
    • 현재에는 대부분 disable로 기본 설정이 되어있어서 걱정하지 않아도 됨

( site )

  • site : "http://www.motiiv.site"
    : site 키워드특정 사이트 내에서 검색을 할 수 있다
    (내 웹페이지를 대상으로 검색해서 유출 데이터가 있는지 확인 할 수도 있다)

[ 정보 유출 사이트 ]

  • exploit-db처럼 유출된 정보를 모아두는 사이트트 왜 있는 것일까?
    • 정보가 유출되었음을 알려서 보안 취약점을 패치하도록 하는 공익적 목적이 매우 크기 때문
    • 유출된 정보악용할 사람들은 어차피 어떻게든 악용한다

[ robots.txt ]

  • Naver / Google / Daum 처럼 검색엔진을 가진 사이트에는 검색엔진 봇(bot)자동으로 웹사이트의 정보를 수집하게 된다
    • NaverYeti
    • GoogleGooglebot
  • robots.txt는 이렇게 검색엔진 봇이 수집하는 정보 범위를 설정하는 국제 권고안
  • robots.txt없으면 자연스럽게 모든 데이터를 수집할 수 있는 것으로 간주
  • 설정
/* yeti만 즉, naver의 검색엔진만 모든 페이지의 수집을 허락 */
User-agent: *
Disallow: /
User-agent: Yeti
Allow: /
/* 모든 검색엔진에 대해 수집을 불허하는 설정 - 권장하지 X */
User-agent : *
Disallow : / 

[ 웹서버 보안 설정 ]

( Server Signature 설정 )

  • 웹 서버버전 정보웹 브라우저에게 노출하는 지에 대한 설정
    : OFF 로 설정해서 웹 서버 버전 정보를 노출하지 말자
-serverSignature On // 웹 브라우저에 버전 정보를 노출
-serverSignature Off // 웹 브라우어저에 버전 정보를 노출하지 않음

( Server Tokens 설정 )

  • 서버의 설정파일클라이언트에게 얼마나 보여줄지에 대한 설정
    : Prod로 설정해서 최소한의 정보만 주자
/* Apache의 경우 기본 OS로 되어있는데 Prod로 최소한의 정보만 줘도 됨 */
1. Prod : 웹서버의 이름만 알려준다. (Apache)
2. Major : 웹서버의 이름과 Major 버전번호만 알려준다. (Apache2)
3. Minor : 웹서버의 이름과 Minor 버전까지 알려준다. (Apache2.4)
4. Min : 웹서버 이름과 Minimum 버전까지 알려준다. (Apache2.4.6)
5. OS : 웹서버의 이름과 버전, OS 정보를 알려준다. (Apache2.4.6 (Unix)) 
6. Full : 최대한의 정보를 모두 알려준다. (Apache2.4.6 (Unix) Resin/4.x.x)

[ OWASP ]

  • Open Web Application Security Project 의 약자
  • 오픈소스 웹 애플리케이션 보안 프로젝트이다. 주로 에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구
  • 10대 웹 애플리케이션의 취약점 (OWASP TOP 10)주기적으로 발표
    (3~4년의 주기로 발표최근 2020)

  • 2020에 발표된 웹 애플리케이션 취약점 Top 10
    (자세한 내용은 참조 https://pr0vervbi0rum.tistory.com/30)
    • 인젝션 (Injection)
    • 인증 취약점 (Broken Authentication)
    • 민감한 데이터 노출(Sensitive Data Exposure)
    • XML 외부 엔티티 (XXE)
    • 취약한 접근 제어 (Broken Access Control)
    • 보안 구성 오류 (Security Misconfigurations)
    • 크로스 사이트 스크립팅 (Cross-Site Scripting = XSS)
    • 안전하지 않은 직렬화 (Insecure Desrialization)
    • 알려진 취약점과 구성 요소 사용(Using Components with Known vulnerabilities)
    • 불충분한 로깅 및 모니터링 (Insufficient logging ans monitoring)
profile
Developer & PhotoGrapher

0개의 댓글