1. 개발방법론
1. 소프트웨어 생명주기
- 소프트웨어 생명주기란 소프트웨어 개발을 하기 위한 정의, 운용, 유지보수 등의 각 과정을 단계별로 나눈 것을 말한다.
1-1. 폭포수 모형
- 소프트웨어 개발 각 단계를 확실히 매듭 짓고 그 결과를 철저히 검토해 승인 과정을 거침
- 이전 단계로 돌아갈 수 없음
- 가장 오래되고 폭 넓게 사용된 전통적인 소프트웨어 생명주기모형
- 선형 순차적 모형
- 개발 순서: 타당성 검토 → 계획 → 요구분석 → 설계 → 구현 → 검사 → 유지보수
장점 | 단점 |
- 모형의 적용 경험과 성공 사례가 많음 - 단계별 산출물이 정확해 개발 공정의 기준점을 잘 제시함 |
- 개발 과정 중의 새로운 요구나 경험 반영이 어려움 - 사용자가 모든 요구사항을 처음부터 명확히 제시해야 함 - 오류없이 다음 단계로 진행해야 하는데 현실적으로 어려움 |
1-2. 프로토타입 모형
- 사용자의 요구사항을 정확히 파악하기 위해 견본품을 만들어 최종 결과물을 예측하는 모형
→ 요구사항이 불분명한 경우 프로토타입 모형을 선택할 수 있음
- 요구 분석 단계에서 사용되며 승인 후 다른 모형을 이용해 본격적인 개발이 이루어짐
- 유지보수 단계가 아닌 개발 단계 안에서 유지보수가 이루어짐
- 개발 순서: 요구 수집 → 빠른 설계 → 프로토타입 구축 → 고객평가 → 프로토타입 조정 → 구현
장점 | 단점 |
- 요구사항을 충실히 반영, 요구사항 변경 용이 - 최종 결과물이 만들어지기 전, 의뢰자가 볼 수 있음 - 의뢰자, 개발자 모두에게 공동의 참조 모델을 제공 |
- 미리 제작된 소프트웨어와 실제 소프트웨어 사이의 차이가 발생할 수 있음 - 단기간에 제작해야 하기에 비효율적인 언어나 알고리즘을 사용할 수 있음 |
1-3. 나선형 모형(선형 순차적, 점진적)
- 폭포수, 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형
- 나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 것
- 개발 시 발생할 수 있는 위험을 관리하고 최소화하는 것을 목적으로 함
- 대규모 개발에 적함
- 개발 순서: 계획 → 위험 분석 → 개발 → 고객 평가
장점 | 단점 |
- 가장 현실적인 모형, 대규모 시스템에 적합함 - 점진적으로 반복되므로 추가된 요구사항 반영 가능 - 유지보수 과정이 필요없음 |
- 위험성 평가에 의존하기 때문에 발견되지 않으면 문제가 생김 - 비교적 최신 기법이므로 이전 모형보다 널리 사용되지는 않음 |
1-4. 애자일 모형
- 애자일은 '민첩한', '기민한'이라는 의미
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하는 개발 과정을 의미
- 고객과의 소통에 초점을 맞춘 방법론을 통칭함
- 애자일 모형은 짧은 개발 주기를 반복하여 짧은 주기마다 도출된 결과에 대한 고객의 평가를 적극적으로 수용함
- 애자일 모형 기반의 소프트웨어 개발 모형: 스크럼(Scrum), XP(익스트림 프로그래밍), 크리스탈, ASD 등
1-5. V-모델
- 폭포수 모델에 시스템 검증과 테스트 작업을 강조한 모델이다.
- Perry에 의해 제안되었으며 세부적인 테스트 과정으로 구성되어 있어서 신뢰도 높은 시스템을 개발하는데 효과적이다.
- 개발 단계의 작업을 확인하기 위해 테스트 작업을 수행한다.
- 생명 주기 초반부터 테스트 작업을 지원한다.
- 개발 순서: 요구사항 → 분석 → 설계 → 구현(코딩) → 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
2. Docker
- 컨테이너 응용프로그램의 배포를 자동화하는 오픈소스 엔진이다.
- 소프트웨어 컨테이너 안의 응용 프로그램들을 배치시키는 일을 자동화해 주는 오픈소스 프로젝트이자 소프트웨어이다.
3. 간트 차트(Gantt Chart)
- 각 작업들의 일정을 막대로 표시하는 기법이다.
- 이정표, 작업 기간, 작업 일정 등을 나타낸다.
- 시간선(Time-Line) 차트라고도 한다.
- 막대로 표시하며, 수평 막대의 길이는 각 작업(Task)의 기간을 나타낸다.
- 자원 배치 계획에 유용하게 사용된다.
4. Scrapy
- Python 기반의 웹 크롤링(Web Crawling) 프레임워크이다.
- 가볍고 빠르고 확장성이 좋다.
5. LOC(Line Of Code) 기법
- 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법이다.
- 예측치 = (a + 4m + b) / 6 (단, a는 낙관치, b는 비관치, c는 기대치임)
# 비낙기
6. 테일러링(Tailoring)
- 프로젝트에 최적화된 개발 방법론을 적용하기 위해 절차, 산출물 등을 적절히 변경하는 활동이다.
- 프로젝트 수행시 예상되는 변화를 감안하여 정밀하게 진행한다.
- 관리 측면: 최단기간에 안정적인 프로젝트 진행을 위한 사전 위험을 식별하고 제거하는 것이다.
- 기술적 측면: 프로젝트에 최적화된 기술 요소를 도입하여 프로젝트 특성에 맞는 최적의 기법과 도구를 사용하는 것이다.
=====================================================
2. 정보시스템 구축관리
1. 고가용성 솔루션(HACMP, High Availability Cluster Multi Processing)
- 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮어 다수의 시스템을 동시에 연결할 수 있다.
- 조직, 기업의 기간 업무 서버 등의 안정성을 높이기 위해 사용될 수 있다.
- 여러가지 방식으로 구현되며 2개의 서버를 연결하는 것으로 2개의 시스템이 각각 업무를 수행하도록 구현하는 방식이 널리 사용되나.
* 스턱스넷(Stuxnet)
- 2010년 6월에 발견된 웜 바이러스
- 윈도우를 통해 감염, 지맨스산업의 SW 및 장비를 공격한다.
* 루팅(Rooting)
- 모바일 기기에서 구동되는 안드로이드 운영체제상에서 루트 권한을 얻음으로 해당 기기의 생산자 또는 판매자 측에서 걸어 놓은 제약을 해제하는 행위이다. 애플 모바일 기기에서는 탈옥이라고 한다.
2. DAS(Direct-attached storage, 직접 연결 저장 장치)
- 하드디스크와 같은 데이터 저장장치를 호스트 버스 어댑터에 직접 연결하는 방식이다.
- 저장장치와 호스트 기기 사이에 네트워크 디바이스가 있지 말아야 하고 직접 연결하는 방식으로 구성된다.
3. HaDoop(하둡)
- 빅데이터를 분석 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크이다.
4. NTFS(New Technology File System)
- FAT32에서 최대 파일 크기는 4GB이지만, NTFS에서 파일의 크기는 볼륨 크기에 의해서만 제한된다.
- 이론적으로 최대 볼륨의 크기는 256TB이다.
- NTFS는 FAT에 비하여 보안성이 높다.
=====================================================
3. 시스템보안 구축
1. Switch Jamming
- 스위칭 허브의 기능이 방해 받아 정상 동작을 하지 못해 스위치가 더미 허브(Dummy hub)처럼 작동하게 되는 것
2. 블루투스(Bluetooth) 공격
2-1. 블루프린팅
- 블루투스 공격 장치의 검색 활동을 의미
- 블루투스는 장치 간 종류를 식별하기 위해 서비스 발견 프로토콜(SDP, Sevice Discovery Protocol)을 보내고 받음
- 공격자는 이를 이용해 공격이 가능한 블루투스 장치를 검색하고 모델을 확인할 수 있음
2-2. 블루버그(BlueBug)
- 블루투스 장비 사이 취약한 연결 관리를 악용한 공격기법이다.
2-3. 블루스나프(BlueSnarf, 블루스나핑)
- 블루투스의 취약점을 활용하여 장비의 파일에 접근하는 공격으로 OPP(Obex Push Protocol)를 사용하여 정보를 열람하는 공격기법이다.
2-4. 블루재킹(BlueJacking)
- 블루투스를 이용해 스팸처럼 명함을 익명으로 퍼뜨리는 공격기법이다.
* OPP: 블루투스 장치끼리 인증 없이 정보를 간편하게 교환하기 위한 프로토콜이다.
3. DoS(Denial of Service)
- 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
1) 지역 시스템 공격
- 실제 대상 시스템에 접근하여 서버 하드웨어에 직접 과부하를 주는 공격
2) 원격 네트워크 공격
- 공격자가 목표 시스템에 접근하지 않고 원격지에서 인터넷 등을 이용한 공격
4. DDos(Distributed Dos)
- DoS의 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격
5. 자원 고갈 공격
- 정상 접속을 시도하는 오픈된 소켓에 트래픽을 집중시키는 공격
1) SYN 플러딩(Flooding)
- 서버의 동시 가용 사용자 수를 점유하여 다른 사용자가 서버를 사용하지 못하게 하는 공격
2) UDP 플러딩(Flooding)
- 대량의 UDP 패킷을 만들어 임의의 포트로 전송하여 응답 메시지(ICMP)를 생성하게 하여 지속적으로 자원을 고갈시키는 공격
3) 스머프(Smurf)
- 출발지 주소를 공격 대상의 IP로 설정하여 전체 네트워크에 ICMP echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격
4) PoD(Ping of Death)
- 큰 사이즈의 패킷을 의도적으로 목표 시스템에 발생시켜 시스템이 서비스할 수 없는 상태로 만드는 공격
5) Land
- 패킷 전송 시 출발지 IP 주소와 목적지 IP 주소 값을 똑같이 만들어서 공격 대상에게 보내는 공격
6. Honeypot(꿀단지)
- 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템을 의미한다.
- 1990년대 David Clock이 처음 제안하였다.
- 침입자를 속여 실제 공격을 당하는 것처럼 보여줌으로써 크래커를 추적 및 공격기법의 정보를 수집하는 역할을 한다.
- 쉽게 공격자에게 노출되어야 하며 쉽게 공격이 가능한 것처럼 취약해 보여야 한다.
7. 리눅스
7-1. umask
- 파일이나 디렉터리 생성 시 초기 접근 권한을 설정할 때 사용한다.
- 초기 파일의 권한은 666이고 디렉터리는 777이며 여기에 umask 값을 빼서 초기 파일 권한을 설정할 수 있다.
ex) 파일 초기 권한 666 - ? = 644 / ? = 022
7-2. i-node
7-3. 리눅스 로그파일
1) utmp: 현재 로그인한 사용자 상태 정보를 담고 있는 로그파일
2) wtmp: 성공한 로그인/로그아웃 정보와 시스템 boot/shutdown의 히스토리를 담고 있는 로그파일
3) btmp: 실패한 로그인 정보를 담고 있는 로그파일
# U현W성B실(유현덥성비실)
=====================================================
4. SW 개발 보안구축
1. 취약점 관리
- 무결성 검사
- 응용 프로그램의 보안 설정 및 패치 적용
- 불필요한 서비스 및 악성 프로그램의 확인과 제거
- 실행 프로세스 권한 설정
- 운영체제 접근 제한
- 운영체제의 정보 수집 제한
2. 암호화
2-1. DES(Data Encryption Standard)
- 블록 암호의 일종으로 평문을 64비트로 나누어 56비트의 키를 사용한 알고리즘 방식이다.
3. DPI(Deep Packet Inspection)
- OSI 7 계층까지 전 계층의 프로토콜과 패킷 내부의 콘텐츠를 파악하여 침입 시도, 해킹 등을 탐지하고 트래픽을 조정하기 위한 패킷 분석 기술이다.
- 유해정보 차단, 해킹 차단, 다양한 탐지/분석 모델이다.
- 네트워크 보안, 관리, 컨텐츠 관리 등의 목적을 갖는다.
4. 접근통제 정책
정책 | MAC | DAC | RBAC |
권한부여 | 시스템 | 데이터 소유자 | 중앙 관리자 |
접근결정 | 보안등급 (Label) |
신분 (Identity) |
역할 (Role) |
정책변경 | 고정적 (변경 어려움) |
변경 용이 | 변경 용이 |
장점 | 안정적 중앙 집중적 |
구현 용이 유연함 |
관리 용이 |
=====================================================
'자격증 > 정보처리기사(필기)' 카테고리의 다른 글
인터페이스 설계 (0) | 2023.05.25 |
---|---|
[정보처리기사] 4과목 - 프로그래밍 언어 활용 (1) | 2023.05.12 |
[정보처리기사] 3과목 데이터베이스 개발 (0) | 2023.05.11 |
[정보처리기사] 2과목 소프트웨어 개발 (0) | 2023.05.11 |
아키텍처 설계 (0) | 2023.05.11 |
댓글