시스템 보안은 운영체제와 그 위에서 도는 프로그램, 그리고 자원에 접근하는 사용자들을 지키는 일이다. "누가 들어오는가(인증), 무엇을 할 수 있는가(권한), 무슨 일이 있었는가(로그)"라는 흐름이 그 뼈대다. 오늘은 계정·세션·접근 제어·권한·로그 관리, 그리고 모바일 보안까지 정리했다.
1. 계정 관리: 식별과 인증
보안의 출발점은 "이 사용자가 정말 그 사람인가"를 확인하는 인증이다. 인증 수단은 크게 네 가지로 나뉜다.
| 방법 | 예 |
|---|---|
| 알고 있는 것 | 패스워드 |
| 가지고 있는 것 | 신분증, OTP |
| 자신의 모습 | 지문·홍채 등 생체 정보 |
| 위치하는 곳 | 접속 위치 확인, 콜백 |
한 가지 수단은 뚫리면 끝이다. 패스워드(아는 것)는 유출될 수 있고, 휴대폰(가진 것)은 도난당할 수 있다. 그래서 서로 다른 범주의 수단을 둘 이상 묶으면, 하나가 뚫려도 다른 하나가 막아준다. 은행이 패스워드에 더해 OTP를 요구하는 것이 이 원리다.
인증 수단을 "아는 것/가진 것/자신/위치" 네 범주로 나누니, MFA가 왜 강한지(서로 다른 범주를 묶어야 의미)가 분명해졌다. 은행 OTP가 이 원리였다는 게 일상과 이어졌다.
운영체제마다 관리자 계정이 다르다. 윈도우는 administrator, 유닉스는 root다. 유닉스의 계정 정보는 /etc/passwd에, 실제 암호는 별도의 shadow 파일에 분리 저장한다.
2. 세션 관리와 접근 제어
세션은 사용자와 시스템 사이의 활성화된 접속이다. 매번 패스워드를 물을 수는 없으므로, 세션에 만료 시간(타임아웃)을 둬서 자리를 비운 사이 누군가 가로채는 위험을 줄인다.
접근 제어의 가장 기본 수단은 IP와 서비스 포트다.
유닉스의 원격 접속 프로토콜 텔넷(Telnet)은 통신 내용이 평문이라, 스니핑(도청)과 세션 하이재킹에 취약하다. 같은 일을 하되 통신을 암호화하는 SSH로 대체하는 것이 표준이다. "편리하지만 평문인" 오래된 프로토콜을 암호화 버전으로 바꾸는 것은 보안의 단골 처방이다.
"평문 프로토콜을 암호화 버전으로 바꾼다"는 처방이 네트워크 보안의 FTP→FTPS와 똑같았다. 같은 해법이 여러 프로토콜에 반복 적용된다는 게 보였다.
3. 권한 관리
인증을 통과해도 모든 것을 할 수 있는 건 아니다. 사용자마다 적절한 권한만 줘야 한다.
윈도우 NTFS의 권한 규칙은 세 가지다.
- 접근 권한은 누적된다.
- 파일 권한이 디렉터리 권한보다 우선한다.
- '허용'보다 '거부'가 우선한다.
유닉스는 rwx(읽기·쓰기·실행) 권한을 소유자·그룹·기타 사용자 세 부류에 각각 부여한다. ls -al로 보이는 -rwxr-xr-x 같은 표기가 바로 이 권한이다.
권한이 여러 경로로 겹쳐 부여될 때, 안전한 쪽으로 기울게 설계한 것이다. 실수로 권한을 넓게 허용했더라도 명시적 거부 하나가 그것을 막아준다. 보안에서는 "애매하면 막는다"가 기본 원칙이며, 이 규칙이 그 원칙을 구현한다.
데이터베이스실습에서 본 GRANT/REVOKE·권한 관리가 여기 시스템 권한으로 확장됐다. "거부 우선", "최소 권한" 같은 원칙이 DB와 OS에 공통이라는 게 정리됐다.
4. 로그 관리와 AAA
누가 무엇을 했는지 기록하는 일은 사고 후 추적의 토대다. 이를 정리한 개념이 AAA다.
| 요소 | 의미 |
|---|---|
| Authentication(인증) | 신원을 증명 |
| Authorization(인가) | 검증된 사용자에게 권한 허용 |
| Accounting(계정·기록) | 활동을 로그로 남김 |
유닉스의 로그는 /var/log에 모인다. 현재 로그인 사용자(utmp), 로그인·로그아웃 이력(wtmp), 실행 명령 기록(history) 등으로 나뉜다.
침입자가 가장 먼저 하는 일 중 하나가 자신의 흔적, 즉 로그를 지우는 것이다. 로그를 침해당한 시스템 자체에 두면 함께 지워진다. 그래서 로그를 별도의 로그 서버로 실시간 전송해 두면, 공격자가 흔적을 지우기 훨씬 어려워진다. 책임 추적성(accountability)을 지키는 핵심 장치다.
5. 모바일 보안
모바일 운영체제의 보안 철학은 서로 다르다.
| 구분 | iOS | 안드로이드 |
|---|---|---|
| 기반 | 유닉스(Darwin) | 리눅스 커널 |
| 정책 | 폐쇄적 (애플 통제) | 개방적 |
| 앱 서명 | 애플 CA가 서명 | 개발자가 서명 |
| 보안 우회 | 탈옥(Jailbreak) | 루팅(Rooting) |
둘의 공통 토대는 샌드박스다.
각 앱을 OS와 다른 앱으로부터 격리된 공간에서 실행하는 방식이다. 한 앱이 다른 앱의 데이터나 시스템 파일에 함부로 접근하지 못하게 막는다. 모래밭(sandbox) 안에서만 놀게 한다는 비유 그대로, 악성 앱의 피해를 그 앱 안으로 가두는 것이 목적이다.
샌드박스가 운영체제의 프로세스 격리와 같은 발상이라는 게 보였다. 한 앱을 다른 앱·시스템으로부터 격리하는 게, OS가 프로세스마다 메모리 공간을 나누는 것과 닮았다.
블루투스도 공격 표면이 된다. 인증 없는 파일 교환 기능을 악용해 정보를 빼내는 블루스나프, 취약한 연결을 악용해 명령을 실행하는 블루버그 등이 대표적이다.
오늘 느낀 점
- "평문 프로토콜을 암호화 버전으로"(Telnet→SSH)가 네트워크 보안의 FTP→FTPS와 같은 처방이라, 보안 해법이 여러 곳에 반복 적용된다는 게 보였다.
- GRANT/REVOKE(DB)와 시스템 권한 관리가 "거부 우선", "최소 권한"이라는 같은 원칙을 공유한다는 점에서, 권한이라는 주제가 분야를 가로지른다는 걸 알았다.
- 샌드박스가 OS의 프로세스 격리와 같은 발상이라는 데서, 보안이 별개 분야가 아니라 운영체제·네트워크 위에 쌓인 응용이라는 게 분명해졌다.
한 걸음 더
- 권한 관리의 근본 원칙은 "최소 권한(least privilege)"이다. 사용자나 프로그램에게 꼭 필요한 만큼만 권한을 주면, 설령 탈취당해도 피해 범위가 그 권한 안으로 제한된다. 모든 사용자를 관리자로 두는 편한 운영이 위험한 이유이고, 평소 일반 계정을 쓰다 필요할 때만 권한을 올리는 습관이 권장되는 이유다.
- 탈옥과 루팅은 "내 기기를 내 맘대로"라는 자유를 주지만, 동시에 OS가 쌓아둔 보안 장벽을 스스로 허무는 행위다. 샌드박스와 앱 서명 검증이 풀리면, 악성 앱이 시스템 깊숙이 침투할 길이 열린다. 편의와 보안이 정면으로 충돌하는 대표 사례라, 그 대가를 알고 선택해야 한다.
- 패스워드(아는 것)에서 생체 정보(자신의 모습)로 인증이 옮겨가는 흐름에도 trade-off가 있다. 생체 정보는 잊어버릴 일도 훔치기도 어렵지만, 유출되면 패스워드처럼 바꿀 수가 없다. 그래서 생체 정보는 보통 기기 안에서만 검증하고 외부로 내보내지 않는 식으로 설계한다. "바꿀 수 없는 인증 수단"이라는 특성이 설계를 다르게 만든다.
'computer_science > security' 카테고리의 다른 글
| [인터넷보안] 01. 정보 보안의 세계 (0) | 2026.07.02 |
|---|