운영체제 수업 + Operating System Concepts 10E 정리 내용
Operating System Ch16 : Security
Computer Security
1. Overview
- Cryptography
- 보안에서 널리 쓰이는 분야
- Shared Key (symmetric) : DES, AES
- public Key (asymmetric) : RSA
- Software Security : Application process
- System Security : OS + hardware
- Network Security : 컴퓨터와 컴퓨터 사이의 보안
- Surveillance : 전부 다 관리
2. CIA triad (Security Requirement Triad)
- 보안의 3대 요소
1) Confidentiality 기밀성 : 데이터의 내용을 남들이 모르게 만들기
2) Integrity 무결성 : 위조나 변조가 될 수 없게 만들기
3) Availabilty 가용성 : 사용하지 못하게 만드는 것을 막는 것, 항상 이용 가능하게 만들기
3. Security Problems
- 모든 시스템에는 hole(문제점) 이 있다. 완벽한 보안은 없다.
- 용어
- Vulnerability : 취약점
- Threat : 위협
- Attack : 위협을 가지고 무언가를 수행하는 것
- Adversary : attack을 수행하는 주체
- Countermeasure : 공격을 막는 수단
4. Security Services
- 용어
- Authentication : 인증, ex) id, password
- Access Control : authentication을 통과한 후 어디까지 접근할 수 있는지 정하기
- Nonrepudiation : 부인 방지 - 나쁜 짓을 했을 때 발뺌하는 걸 방지
-> 잘 구현되어있는 예시 : email system (보낸 측 , 받는 측, 서버 모두 로그가 남음)
5. Cracker's Basic Steps
- Gather information
- Use port scanner
- 모은 정보를 토대로 취약점이 알려진 부분을 찾기
- 서비스의 port 스캔
- Get a login account
- Get root privilege
- 시스템에 직접 접근해서 프로그램에서 잘못 설정된 부분을 찾기
- 루트 권한을 획득
- Keep root privilege
- backdoor를 남겨두고 나와서 위의 순서를 생략하고 한번에 접근 가능
Security
1. Physical Security
- hardware security
- BIOS security
- 부팅 시 password 걸기
- 외부장치로 부팅하는 것을 막기
- Session security
2. Account Security
- Authentication
- password, id 사용하기
- unix는 별도의 file을 통해 password를 저장해 둔다
-> 해당 file를 craker가 가져갈 수 있으므로 보안 처리 해두기
- CHAP (Challenge Handshake Authentication Protocol)
- id와 password + random number 를 섞어서 계산하여 서버로 전달하기
- 서버에서는 해당 방식을 통해 역으로 풀어서 확인
- Alternatives
- Physical keys : badges, smart cards...
- Biometric keys : fingerprints, facial prifiles...
- Authorization
- Access control : 자격/권한 설정
- ACLs
3. File System Security
- 보안 분야에서 가장 큰 문제중 하나
- setuid/setgid
- setuid를 사용하면 root로 실행이 가능하다.
- 잘못 사용하면 security hole이 생길 수 있다.
- Search paths
- 리눅스/유닉스 기반
- cmd 기반으로 동작하기 때문에 path와 환경변수를 사용한다.
- cracker가 로그인하여 ls를 바꾸면 문제가 생긴다.
- Other countermeasures
4. Network Security
- 패킷을 보낼 때 어떻게 암호화해서 보낼 것인가
- password를 그대로 server로 보내지 않고 암호화 하기
- ex) https, SSL
- TCP wrapper
- 서버에서 미리 서버에 접속이 가능한 멤버를 정해두기
- firewall (방화벽)
- 외부망과 내부망의 경계
- 외부에서 들어오는 내용이 방화벽에 걸리면 해당 내용을 버리기
- if) 외부에서 내부망에 접근이 가능하게 하려면
- 내부망의 내용중 접근이 가능한 내용은 DMZ로 지정하기
- firewall이 강화된 버전
- intrusion detection system(IDS) : 침입을 한 것에 대한 감지, 침입 강화
- intrusion prevention system(IPS) : 못들어오게 함
Attack vs Countermeasures
1. Security Threats
- 위협의 종류
1) 자연재해 : 막기는 어렵지만 고려는 한다.
2) Logical Threats : SW에서 발생하는 문제, 잘못된 프로그램 실행할 때
3) Operational : manage를 잘 못함
4) Denial of service : 서비스를 못하게 함
2. Attacks
- attack의 종류
- virus / worm
- trojan hourses
- logic bomb / trap door
- malware / spyware / ransomware
- Dos / DDos
3. Attacks Example
1. Morris Internet worm
- 최초의 malware
- unix 서버의 finger라는 문제점을 찾아서 worm 코드를 통해 감염시킴
2. Buffer overflow
- 특정 코드를 실행 후 return address를 두고 돌아가게 된다.
- b라는 buffer가 존재할 때 해당 buffer의 size를 할당 받을 수 있는 크기보다 더 크게 할당하게 되면 buffer의 주소가 다른 주소값까지 침범하게 되고 return address가 가리키는 곳이 program이 아닌 b buffer의 시작점을 가리키도록 만들 수 있다.
-> 만약 b의 시작점에 악성 코드가 있다면 문제가 발생한다.
- 해결방법 : buffer의 전체 크기보다 더 큰 값이 들어오는지를 미리 체크한 후 값을 받아오는 방식으로 구현해야 한다.
3. IP spoofing
- A와 B가 통신하는 상황에서 공격자가 A를 무력화 시킨 상황
- 공격자는 A인척 하면서 B에게 계속해서 패킷을 보냄
- B는 공격자가 보낸 패킷에 대한 응답을 A에게 주지만 A는 응답할 수 없는 상황이 된다.
4. Denial of service
- 서비스를 못하도록 만들기
- Internal attack
- External attack
- 외부에서 시작되는 공격
- 하나의 cracker의 공격은 intrusion detection으로 추적할 수 있음
-> 분산된 cracker로 공격 = DDOS
4. Basic Concept of Cryptography
1. Shared Key Cryptography
- 암호화 하는쪽(Sender)과 암호를 받는쪽(Receiver) 모두 같은 key를 가지고 있음
- 똑같은 key를 양쪽이 안전하게 가지게 하는지가 이슈
- DES (Data Encryption Standard)-안씀, AES (Advanced Encryption Standard)
2. Public Key Cryptography
- sender 와 receiver가 모두 반대편의 public key를 추가적으로 가지는 방식
- public key로 암호화 했다면 private로만 풀 수 있고, private key로 암호화 했다면 public으로만 풀 수 있다.
- example 1
- sender(A)는 A의 private로 암호화하여 내용을 보냄
- receiver(B) 가 어떤 암호화된 내용을 풀었다면, 그것은 A가 보낸 내용임을 확신할 수 있다.
-> B는 A의 public을 가지고 있기 때문에
- example 2
- sender(A)가 B의 public으로 암호화 하여 B에게 보냄
- 이 암호화된 내용은 reciever(B)만 풀 수 있다.
-> B private key를 가지는 것은 receiver(B)만 가능하기 때문에
5. Applied cryptography for network
1. Digital Signature
- 보내야 할 데이터와 보낸 곳 둘 다 확인하는 방법
- 보내야 할 데이터 (text)는 공개
- 보낼 데이터에 해싱함수를 실행한 후 A의 private key로 암호화 한 후 Digital Signature를 붙여서 B에게 보냄
- B는 받은 데이터를 A의 public key로 해독한 후 clear text를 해싱하여 해독한 데이터와 비교
- 같은 내용이라면 A가 보낸 데이터임을 알 수 있음 + 보내야 할 데이터(text)도 바뀌지 않았음을 알 수 있다.
2. TLS/SSL
- TLS (Transport Layer Security)
- SSL (Secure Socket Layer) : 과거 명칭
- 대칭 key를 안전하게 주기
6. Virtual Private Network (VPN)
- A와 B끼리 private 하게 정보를 주고 받고 싶어서 전용선을 설치함
-> 전용선을 설치하는 것은 비용이 많이 든다
- 전용선 비용의 절약을 위해 public internet이라는 중간 매개지역을 만든다.
-> 그러나 public internet 은 보안기능 없다.
- public internet은 중간 매개 역할로만 사용하고 정보를 주고 받을때는 암호화를 통해 정보를 주고받는다.