본문 바로가기

기초이론/보안

[인프런]정보 보안과 웹 보안의 구성 요소

반응형

아니 이게 무슨 일이야. 방문자 수가 왜 이리 늘었지. 일단 감사합니다 여러분. 다시 열심히 해 볼게요.

보안에 대한 기본적인 오해

  1. 규모가 큰 서비스나 회사만 공격받는 것이 아니다. 규모가 작은 회사, 심지어는 개인적으로 작업한 토이 프로젝트조차도 공격의 대상이 될 수 있다.
  2. 보안과 관련해서는 프론트엔드와 백엔드를 구분하는 것이 의미가 없다. 둘 다 중요하다.
  3. 많은 사람이 사용한다고 해서 그것이 안전하다는 보장은 없다. 실제 업무나 운용 환경에서 사용할 라이브러리들은 반드시 공식 문서와 테스트를 통해 안전을 검증한 후에 사용해야 한다.
  4. 공격을 하는 사람은 생각조차 못한 방식으로 다가오기도 한다.
  5. 전체 프로그램의 보안 수준을 결정하는 것은 보안이 가장 약한 부분이다.
    • 사람을 대상으로 생각해보자. 대부분은 기업 내부에서 보안 의식이 가장 낮은 사람에 의해 보안이 뚫린다.
    • 즉, 조직 전체에서 보안의 기준은 조직 내부에서 보안 의식이 가장 낮은 사람을 기준으로 잡아야한다.

 

 정보 보안의 3가지 요소

  1. 무결성
    • 권한을 가진 사람만 정해진 방법으로 정보를 변경할 수 있어야 한다.
      • 내가 올린 게시글은 다른 사람이 삭제할 수 없어야 한다.
      • 나의 SNS 닉네임을 누군가 함부로 변경한다면, 이 또한 무결성이 침해된 것이다.
  2. 기밀성
    • 권한을 가진 사람만 정보에 접근할 수 있어야 한다.
      • 다른 사람이 나의 개인정보인 주민등록번호를 보는 것은 기밀성이 침해된 것이다.
      • 개발자의 실수로 사용자의 개인정보를 노출하는 부분의 API를 잘못 작성했다고 가정해보자. 다른 사람이 볼 수 있는 웹 사이트의 공개적인 프로필에는 개인정보가 드러나지 않지만, 개발자만 알 수 있는 내부적인 데이터 상으로는 주민등록번호가 전송된다면 이는 기밀성이 침해된 것이다.
      • 기밀성과 무결성은 같이 침해될 수도 있고 어느 한쪽만 침해될 수도 있다.
  3. 가용성
    • 권한이 있는 사용자가 원할 때 그 정보에 대한 접근이 가능해야 한다.
      • 서버가 다운되었다면 이를 가용성이 침해된 상황이라고 볼 수 있다.

 

웹 보안의 구성 요소

  1. 방화벽
    • 불필요한 포트로 들어오는 요청을 걸러준다.
    • 높은 수준의 방화벽은 잠재적으로 위험 요소가 있는 모든 정보를 감지하고 막아준다.
    • 클라우드 컴퓨팅 서비스에 좋은 방화벽이 많이 내장되어 있다.
    • 좋은 방화벽으로 단순한 공격들은 막을 수 있다.
  2. 시큐어 코딩
    • 안전하게 코드를 작성한다는 의미이며 중요하게 다뤄지는 부분이다.
    • 프로그래밍을 할 때 보안에 신경써서 작업하는 것으로 개발 단계에서 개발자가 취약점이 될 수 있는 논리적 오류 등을 신경써서 작업하는 것을 말한다.
  3. 데이터 보안
    • DB에 저장되어 있는 데이터에 관한 보안이다.
    • DB 서버와 애플리케이션 서버가 분리되어 있는 큰 규모의 서비스일 경우 더욱 중요하다.
    • 허가받은 컴퓨터만 DB 서버에 접근할 수 있게 해야 한다.
    • 민감한 데이터를 저장하거나 송수신 할 때는 반드시 암호화가 되어 있어야 한다.
  4. 로그 관리
    • 공격이 일어났는지 확인하는 확실한 방법은 바로 접속 로그를 확인하는 것이다.
    • 중요한 접속 로그, 에러 로그 등은 반드시 기록해야 한다.
  5. 접근 관리
    • 너무 쉬운 비밀번호를 설정하면 안 된다.

 

 

* 해당 게시글은 인프런의 <웹 개발자라면 꼭 알아야 할 보안 기초> 강의를 참고하여 작성하였습니다.

반응형