정처기 실기 공부하며 암기가 잘 안 되는 부분들 정리.🌱
서비스 지향 아키텍처(SOA; Service Oriented Architecture)
- 서비스 지향 아키텍처는 프로세스 수행을 지원하는 정보 시스템의 구현을 위해 가장 선진화된 소프트웨어 아키텍처
- 서비스라고 정의되는 분할된 애플리케이션 조각들을 Loosely-coupled 하게 연결해 하나의 완성된 Application을 구현하기 위한 아키텍처이다.
피코넷(PICONET)
- 여러 개의 독립된 통신 장치가 블루투스 기술이나 UWB 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
- 네트워크 구성하는 장비 간에 사전에 네트워크의 정의와 계획이 없이 상황에 따라 조정 프로토콜에 의해 마스터와 슬레이브 역할을 하면서 네트워크 형성
- 주로 수십 미터 이내의 좁은 공간에서 네트워크를 형성하는 점과 정지 또는 이동하고 있는 장치를 모두 포함하는 특징을 가짐
지그비(Zigbee)
- 저속 전송 속도를 갖는 홈오토메이션 및 데이터 네트워크를 위한 표준 기술
- 버튼 하나로 하나의 동작을 잡아 집안 어느 곳에서나 전등 제어 및 홈 보안 시스템 VCR on/off 등을 할 수 있고, 인터넷을 통한 전화 접속으로 홈오토메이션을 더욱 편리하게 이용하려는 것에서부터 출발한 기술
- IEEE 802.15 표준 기반, 메시 네트워크 방식 사용
TCP 세션 하이재킹 (세션 하이재킹)
- TCP의 세션 관리 취약점을 이용한 공격 기법
- TCP Sequence number의 보안상 문제점 때문에 발생
과정
- Victim과 Server 사이 패킷 스니핑, 공격자는 데이터 전송 중인 상태를 강제로 비동기화 상태로 만듦
- 스니핑하여 획득한 Client Sequence Number를 이용해 공격
- 공격자는 Server에게 RST 패킷 날리고, 공격자의 새로운 Sequence Number로 Server와 세션을 맺어 인증 우회, Victim 권한으로 Server 접근
- 비동기화 상태로 패킷이 유실되어 재전송 패킷 증가
- 아 과정에서 ACK Storm 증가, NW 부하 증가
대응 방법
- 대응 : 비동기화 상태 탐지, ACK 패킷 비율 모니터링, 특정 세션에서 패킷 유실 및 재전송이 증가되는 것을 탐지
병행 제어 기법
로 낙타다
로킹(Locking)
- DB 일관성과 무결성 유지 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
- 로킹단위 작아지면 데이터베이스 공유도 증가, 로킹 오버헤드 증가
낙관적 검증(Optimistic Validation)
- 트랜잭션에 아무런 검증 없이 수행 후 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
타임 스탬프 순서(Time Stamp Ordering)
- 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타음 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
다중버전 동시성 제어(MVCC;Multi Version Concurrency Control)
- 트랜잭션의 타임 스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 방법
병행 제어 미보장 시 문제점
갱신 손실(Lost Update) : 먼저 실행된 트랜잭션 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류
현황 파악오류(Dirty Read) : 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
모순성(Inconsistency) : 두 트랜잭션 동시 실행되어 데이터베이스의 관성이 결여되는 오류
연쇄복귀(Cadcading Rollback) : 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류
스크럼(SCRUM)
매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 주요 요소 :
백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 스프린트 회고, 번 다운 차트
- 백로그 : 개발해야 할 기능 또는 제품에서 요구하는 기능과 우선순위 즉, 완성하기 위해 해야 할 일
- 번 다운 차트 : 백로그 대비 시간을 그래픽적으로 표현한 차트
객체지향 설계 원칙(SOLID)
단일 책임 원칙 Single Responsibility Principle
: 하나의 클래스는 하나의 목적
개방 폐쇄 원칙 Open Closed Principle
: SW 구성요소는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다는 원칙,
기존 코드 변경하지 않고 기능을 추가할 수 있어야.
리스코프 치환의 원칙 Liskov Substitution Principle
: 서브 타입은 어디서나 상위 타입으로 교체할 수 있어야 한다는 원칙,
일반화 관게에서 자식 클래스는 부모 클래스 기능은 수행할 수 있어야.
인터페이스 분리의 원칙 Interface Segregation Principle
: 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
의존성 역전의 원칙 Dependency Inversion Principle
: 실제 사용 관계는 바꾸지 않고 추상을 매개로 메시지 주고받음으로써 관계 느슨하게 만드는 원칙, 의존 관계 맺을 때 변화 거의 없는 것에 의존하라는 원칙
라우팅 알고리즘 유형
거리 벡터 알고리즘(Distance Vector Algorithm)
- 인접 라우터와 정보를 공유하여 목적지까지의 거리와 방향을 결정하는 라우팅 프로토콜 알고리즘
- 벨판-포드(Bellman-Ford) 알고리즘 사용
- 각 라우터가 업데이트될 경우마다 전체 라우팅 테이블을 보내라고 요청하지만 수신된 경로 비용 정보는 이웃 라우터에게만 보내짐
링크 상태 알고리즘(Link State Algorithm)
- 링크 상태 정보를 모든 라우터에 전달하여 최단 경로 트리를 구성하는 라오팅 프로토콜 알고리즘
- 다익스트라(Dijkstra) 알고리즘 사용
- 네트워크를 일관성 있게 파악할 수 있으나 거리 벡터 알고리즘에 비하여 계산이 더 복잡하고 트래픽을 광범위한 범위까지 전달
라우팅 프로토콜
대표적인 라우팅 프로토콜 : RIP, OSPF, BGP
- AS(자율 시스템)내에서 사용하는 거리 벡터 알고리즘에 기초하여 개발된 내부 라우팅 프로토콜
- 거리 벡터 라우팅 기반 메트린(Metric) 정보를 인접 라우터와 주기적으로 교환하여 라우팅 테이블을 갱신
- 라우팅 테이블을 구성/계산하는 데 Bellman-Ford 알고리즘 사용하는 내부 라우팅 프로토콜
- 최대 홉 수를 15개로 제한
- 사용 포트로는 UDP 사용 (UDP 포트 번호 520)
- 30초마다 전체 라우팅 정보를 브로드캐스팅
OSPF(Open Shortest Path First)
- 규모 크고 복잡한 TCP/IP 네트워크에서 RIP의 단점 개선위해 자신을 기준으로 링크 상태 알고리즘을 적용해 최단 경로를 찾는 라우팅 프로토콜
- 링크 상태 라우팅 기반 메트릭(Metric) 정보를 한 지역내(Area) 모든 라우터에 변경이 발생했을 때만 보냄(Flooding)
- 라우팅 테이블 구성/계산하는 데 다익스트라(Dijkstra) 알고리즘 사용하는 내부 라우팅 프로토콜
- 최소 지연, 최대 처리량 등 관리자가 라우팅 메트릭 지정
- AS를 지역(Area)으로 나누어 라우팅을 효과적으로 관리 가능
- 홉 카운트에 제한 없음
BGP(Border Gateway Protocol)
- 자치 시스템(AS) 상호 간(Inter-AS 또는 Inter-Domain)에 경로 정보를 교환하기 위한 라우팅 프로토콜
- 변경 발생 시 대상까지의 가장 짧은 경로를 경로 벡터(Path Vector) 알고리즘을 통해 선정
- TCP 연결(port 179)을 통해 자치 시스템(AS)으로 라우팅 정보를 신뢰성 있게 전달
- ISP 사업자들 상호 간에 주로 사용되는 라우팅 프로토콜
- 순환을 피할 수 있도록 목적지까지 가는 경로 정보를 제공
- 라우팅 비용(CPU 부하)이 크고, 라우팅 테이블의 크기가 커서 메모리 사용량 많음
해킹에 사용되는 공격용 도구, 보안 공격 관련 용어
루트킷 Rootkit
- 시스템 침입 후 침입 사실 숨긴 채 차우의 침입을 위한 백도어, 트로이 목마 설치, 원격 접근, 내부사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능을 제공하는 프로그램 모음
- 해커가 시스템의 민감한 정보를 수집하거나, 네트워크상의 다른 시스템을 공격 또는 추적 회피를 위한 중간 지점으로 이용하더라도 로그를 지워버릴 수 있어 탐지하기 어려운 도구
크라임웨어 Crimeware
- 온라인상에서 범죄와 같은 불법적인 행위를 수행하기 위해 제작된 컴퓨터 프로그램, 공격용 툴 킷으로 불림
- 악성 코드로 구성된 프로그램이 사용자를 속여 PC에 설치되면 불법적으로 정보를 수집하거나 PC의 자원을 사용하여 원하는 대상을 공격하는 용도로 사용
- 키로거, 스파이웨어, 브라우저 하이잭커 등이 속함
포맷 스트링 공격
- 포맷 스트링을 인자로 하는 함수의 취약점 이용 공격
- 외부에서 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그대로 사용하는 경우 발생하는 취약점 공격 기법
레이스 컨디션 공격
- 실행되는 프로세스가 임시파일을 만드는 경우
- 악의적인 프로그램을 통해 프로세스 실행 중에 끼어들어 임시파일을 심볼릭 링크하여 악의적 행위 수행하게 하는 공격 기법
키로거 공격
- 컴퓨터 사용자의 키보드 움직임 탐지해서 저장
- ID나 패스워드, 계좌 번호, 카드 번호 등의 개인 정보를 몰래 빼가는 해킹 공격
그레이웨어
- 합법적 프로그램이지만 사용자를 괴롭히거나 위험한 상황에 빠뜨릴 수 있는 프로그램
- 스파이웨어, 애드웨어, 장난 프로그래마, 원격 액세스 도구 등을 총칭
공급망 공격
- SW 개발사의 네트워크에 침투해 소스 코드의 수정 등으로 악의적인 코드를 삽입하거나
- 배포 서버에 접근해 악의적인 파일로 변경하는 방식
- 사용자 PC에 SW 설미 또는 업데이트 시에 자동 감염되는 공격 기법
이블 트윈(Evil Twin) 공격
- 무선 Wifi 피싱 기법
- 핫스팟에 연결한 무선 사용자들의 정보 탈취하는 무선 네트워크 공격 기법
난독화
- 역공학에 대비하기 위해 코드의 가독성을 일부러 낮추는 기법
랜섬웨어
- 감염된 시스템의 파일들을 암호화하여 현금이나 코인을 받고 복호화해주는 범죄행위
사이버 킬체인
- 록히드 마틴의 사이버 킬체인
- 공격형 방위시스템
- 지능적, 지속적 공격에 대해 7단계 프로세스별 공격 분석 및 대응을 체계화한 APT 공격 방어 분석 모델
웜
- 스스로 복제하여 네트워크 등의 연결을 통해 전파하는 악성 소프트웨어 컴퓨터 프로그램
제로데이 공격
- 보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하는 보안 공격 기법
애플리케이션에 대한 DDoS 공격
Slowris
- HTTP GET 메서드를 사용해 헤더의 최종 끝을 알리는 문자열의 일부만 전송해 대상 웹 서버와 연결 상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격
RUDY
- 요청 헤어의 Content-length를 비정상적으로 크게 설정하고 메시지 바디 부분을 소량으로 보내 계속 연결 상태 유지시키는 공격 기법
Slow Read Attack
- TCP 윈도 크기와 데이터 처리율 감소시킨 상태에서(Zero Window Packet)
- 다수 HTTP 패킷을 지속적으로 전송하여 연결 상태 장시간 지속, 연결 자원 소진시키는 서비스 거부 공격
네트워크 공격
IP 스푸핑
- 침입자가 인증된 시스템으로 속여 자신의 패킷 헤더를 인증된 호스트의 IP로 위조하여 전송
ARP 스푸핑
- ARP 메시지를 이용해 상대방의 데이터 패킷을 중간에서 가로챔
- MAC주소를 다른 컴퓨터의 MAC주소인 것처럼 속임
ICMP Redirect 공격
- ICMP Redirect 메시지를 이용해 특정 목적지로 가는 패킷을 공격자가 스니핑하는 공격 방법
트로이 목마
- 겉으로 정상적인 프로그램으로 보이지만 실행하면 악성코드를 실행
- 악성 루틴이 숨어있는 프로그램
개발환경 인프라 구성 방식
온프레미스(On-Premise) 방식
- 외부 인터넷망 차단된 상태에서 인트라넷 망만을 활용하여 개발환경 구축
- 데이터와 정보의 외부 유출 민감할 경우 해당 장비를 자체 구매하고 특정 공간에 개발환경 구축
클라우드(Cloud) 방식
- 아마존, 구글, 마이크로소프트 등 클라우드 공급 서비스를 하는 회사들의 서비스를 임대하여 개발환경을 구축하는 방식
- 해당 장비를 초기에 구매하지 않기 때문에 개발환경 투자비용이 적고 구축 시간 빠름
하이브리드(Hybrid) 방식
분석 자동화 도구 CASE도구의 유형
상위 CASE(Upper CASE)
- 계획 수립, 요구분석, 기본설계 단계를 다이어그램으로 표현
- 모델들 사이의 모순 검사 및 모델의 오류 검증, 일관성 검증 지원
- 자료 흐름도 프로토타이핑 작성 지원 및 UI 설계 지원
하위 CASE(Lower CASE)
- 구문 중심 편집 및 정적, 동적 테스트 지원
- 시스템 명세서 생성 및 소스 코드 생성 지원
입력 데이터 검증 및 표현에 대한 취약점
XSS(Cross Site Scripting)
- 검증되지 않은 외부 입력 데이터가 포함된 웹 페이지가 전송되는 경우, 사용자가 해당 웹 열람시 웹 페이지에 포함된 부적절한 스크립트가 실행되는 공격
사이트 간 요청 위조(CSRF; Cross-Site Request Forgery)
- 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
SQL 삽입(SQL Injection)
- 응용 프로그램의 보안 취약점을 이요해 악의적인 SQL 구문을 삽입, 실행시켜 DB의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격 기법
- Blind SQL Injection, Error-Based SQL Injection ...
HIPO 차트 종류
- 가시적 도표 : 시스템 전체적 기능과 흐름 보여주는 계층(Tree) 구조도
- 총체적 도표 : 프로그램 구성 기능을 기술한 것, 입력|처리|출력에 대한 전반적 정보 제공 도표
- 세부적 도표 : 총체적 도표에 표시된 기능을 구성하는 기본 요소들 상세히 기술하는 도표
회복 기법 종류
회로체그 : 회복기법(로그기반, 체크포인트, 그림자페이징)
로그 기반 회복 기법
- 지연 갱신 회복 기법 : 트랜잭션 완료 전까지 기록하지 X
- 즉각 갱신 회복 기법 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영
체크 포인트 회복 기법
- 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전 상태로 복원
그림자 페이징 회복 기법
- 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 장애시 이를 이용해 복구
DAO, VO, DTO
- DAO : 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체, 세부내용 노출 없이 데이터를 조작하는 객체, 접근 목적
- VO : 불변 객체, (DTO와 달리) 고정 클래스를 가지는 객체, DTO와 같은 개념이지만 readonly속성
- DTO : 프로세스 사이에서 데이터를 전송하는 객체, 데이터 저장|회수 외에 다른 기능 없는 객체
메모리 단편화 - 외부 단편화 해결 기법 3가지
- 버디 메모리 할당 : 요청한 프로세스 크기에 가장 알맞은 크기 할당하기 위해 메모리를 2n 크기로 분할하여 할당하는 기법
- 통합 : 인접한 단편화 영역 찾아 하나로 통합하는 기법
- 압축 : 메모리의 모든 단편화 영역을 하나로 압축하는 기법
IT 업무 프로세스 관련 용어
ITSM(IT Service Management)
- 사용자가 만족할 수 있는 서비스를 제공하고 지속적 관리위해 서비스 품질을 유지 및 증진시키기 위한 일련의 활동
- 기업 내의 기존 정보통신 관리 역할을 서비스 관점으로 바꿔서 고객중심의 IT 서비스를 관리하는 기법
SLA(Service Level Agreement)
- 고객과 서비스 제공자 간 계약인 서비스 수준 관리
- 서비스 수준을 측정할 수 있는 세부 서비스 요소(SLO:Service Level Object)들이 포함됨