📍1. 소프트웨어개발 방법론 활용
소프트웨어 생명주기 모델
나선형 모델
계획 -> 위험 분석(특화) -> 개발 -> 평가
폭포수 모델
- 산출물 중심
RAD 모델: 빠르게 개발
상향식 비용 산정 기법
LOC 기법의 예측치 구하기
ex)
낙관치: 4 (이때면 될거야) -> 1배수
기대치: 6 (평균) -> 4배수
비관치: 8 (비관적 계산) -> 1배수
V 모델
- Perry에 의해 제안됨
- 세부적 테스트 과정을 통해 신뢰도 높은 시스템 개발에 효과적
- 폭포수 모델 변형
- 작업과 결과에 검증에 초점
- 테스트 단계 (V 모양)
요구사항 분석 - 인수 테스트: 고객의 인수 테스트
알파: 개발자 + 사용자
베타: 사용자만
기능 명세 분석 - 시스템 테스트
기능: 사용자 요구사하에 맞는지
비기능: 시스템 성능, 안정성, 효율성, 보안 등
설계 - 통합 테스트: 모듈을 모아서 붙여가면서 통합해나가면서 테스트
상향식 테스트
하향식 테스트 (임시모듈-드라이버 을 만들어 테스트), 스텁 이용 (완성 안된 모듈)
빅뱅 테스트 (완성 후 한번에)
백본 테스트 (상향 + 하향)
개발 - 단위 테스트: 정적(소스코드 검사-프로그램 실행X), 동적(프로그램 실행해보며 테스트)으로 나뉨
간트차트
- 작업에 필요한 시간을 중점으로 표
- WBS(work breakdown structure) 작성
- PERT/CPM 네트워크 작성
- 임계경로 작성
- 위를 바탕으로 간트차트 작성
테일러링: 그 프로젝트에 맞춰서 소프트웨어 만들기
- 프로젝트에 최적화하며 적절히 변경
소프트웨어 공학 3R
- 역공학 (Rerverse Eng)
- 재공학
- 재사용
📍2. IT프로젝트 정보시스템 구축관리
고가용성 솔루션(HACMP)
- 다수의 시스템을 동시에 연결
- 기간 업무 서버 등의 안정성을 높이기 위해 사용
- 가용성 높이기 위해 2개의 서버 연결
메인 서버와 예비 서버를 나눠서 서버 다운에 대응
스턱스넷(Stuxnet)
- 대단히 정교한 웜
- 기존에 알려진 여러가지 윈도우 제로데이(아직 해결책 없) 취약점을 이용해 컴퓨터를 감염시키고 확산됨
- 핵무기와 원심분리기 등에 물리적 피해 입히는 목적
루팅(Rooting)
- 안드로이드 OS에서 최상위 권한을 얻어 해당 기기의 제약을 해제
- iOS 관련 탈옥(Jailbreaking)과 비슷
하드디스크 장비
DAS
- 직접 연결(Direct Attached)
- 예) USB
- 물리적 제약 있음 (포트 갯수..)
NAS
- DAS를 네트워크로
SAN
- NAS보다 고속 채널
Docker
- 컨테이너 응용프로그램의 배포를 자동화하는 오픈소스
- 소프트웨어 컨테이너 안에 응용 프로그램들을 배치시키는 일을 자동화해주는 오픈소스 프로젝트이자 소프트웨어
클라우드
Iaas: Infra
PaaS: Platform
SaaS: Software
BaaS: Blockchain
Window 파일 시스템 중
NTFS 장점(FAT 대비)
- 보안 우수
- 대용량 볼륨 효과적
- 자동 압축 및 안정성
- 저용량 볼륨에서 속도 저하
리눅스에서 생성된 파일 권한이 644이면?
3자리-소유주, 소유주 속한 그룹, other
파일 기본 권한: 666
디렉토리: 777
8진수 기준으로
6권한: r, w
read, write, execute
4 2 1
1 1 0
파일 6 4 4 권한(소유주 rwe, 그룹 r, other r)이라면
umask(가리기) 하면 666 - 644 = 022
리눅스 시스템 로그파일
- wtmp: 사용자의 성공한 로그인/로그아웃 정, 시스템 종료/시작 시간 기록
DPI (Deep Packet Inspection)
- OSI 7 Layer 전 계층의 프로토콜과 패킷 내부의 콘텐츠 파악하여 침입 시도, 해킹 등을 탐지하고 트래픽 조정하기 위한 패킷 분석 기술
📍3. 소프트웨어 개발 보안 구축
Switch Jamming
- 위조된 매체 접근 제어(MAC) 주소를 지속적으로 네트워크로 흘려보내, 스위치 MAC 주소 테이블의 저장기능을 혼란시켜 더미 허브로 작동하게 하는 공격
- Switch: 데이터 계층에서 활용됨 (+ 브릿지) 데이터를 컴퓨터로 받아들이게 해준다
Secure 코딩
- 자원 삽입: A 사이트를 이용하고 있지만, 공격자의 의도대로 B 사이트도 이용하게 해버림
DES: 64비트(평문) 암호화 알고리즘
- 키 사용: 56비트
- 16라운드(16번 암호화)
- 페이스텔 방식
AES: 128비트 암호화 알고리즘
- 키 사용: 128, 192, 256 비트
- 10, 12, 14 라운드
- SPN 방식
📍4. 시스템 보안 구축
정보보안 3요소
기밀성: 데이터가 아무한테나 보여지면 안됨
무결성: 데이터를 아무나 바꾸면 안됨
가용성: 데이터에 언제든지 접근할 수 있게 지켜야 함
블루투스 공격
- 블루스나프: 장비 파일에 접근, OPP 사용하여 정보 열람
- 블루재킹: 스팸메일처럼 메시지 익명으로 퍼뜨리기
- 블루프린팅: 블루투스 공경 장치의 검색활동
- 블루버그: 장비 사이의 취약한 연결 관리를 악용한 공격
DDoS(Denial of Service) 공격: 가용성을 떨어뜨림
- Smurf: IP, ICMP 특성 이용 보내지도 않은 데이터 보냈다고 거짓으로 보내 서버가 뭘 보냈나 찾게 바쁘게 만듬
- Ping of Death: 규정 크기 이상의 ICMP 패킷으로 시스템 마비시키는 공격
- Land: 출발지 IP와 목적지 IP가 같은 패킷을 만들어 보내기
- Teardrop: 재조합을 할 수 있는 fragment number 위조
- SYN Flooding: TCP 연결과정(3way handshaking) 취약점을 활용
- UDP Flooding: 다량의 UDP 패킷 전송하여 네트워크 자원 고갈시킴
- Ping Flooding: 특정 사이트에 매우 많은 ICMP Echo 보내는 공격
Honeypot
- 비정상적 접근의 탐지를 위해 의도적으로 설치해 둔 시스템
- 침입자를 속여 실제 공격을 당하는 것처럼 보여 크래커를 추적 및 공격 기법의 정보를 수집
- 공격에 취약해 보이게 위장