서비스 보안 총론
보안의 범주
- 시스템에 대한 권한, 데이터 등을 탈취하거나 마비 등 비정상적인 상황을 유발할 수 있는 잠재적 요소를 모두 포함 한다.
논의 대상
엔드 포인트 보안 : 네트워크상 모든 전송은 암호화 되어 전송되어야 한다.
💡
외부망으로 접속 가능한 모든 시스템 엔드포인트 대상
배경
- 초기 네트워크 설계는 보안 개념이 없었음. 따라서 평문 전송을 표준으로 삼아 http, telnet 등의 프로토콜이 설계
- 네트워크상 패킷(데이터가 이동하는 단위)는 경로가 사전에 정해져 있는 것이 아니라 여러 장비를 타고 다니면서 최적의 경로를 그때 그때 판단함
- 따라서 우리가 A -> B로 통신 할 때 C, D, E등 다양한 장비를 통하는 것이 일반적.
- 전송이 평문인 경우
- 누구든 해당 내용을 확인해 볼 수 있고
- 손쉽게 변조가 가능함
문제사항
- 2010년대 이후 모든 브라우저는 HTTP 평문 전송에 대한 경고를 강화하고 속도상 불이익도 크게 주고 있음.
- 대규모 파일을 다운받아야 하는 경우 핸디캡이 큼
- 경고를 계속 무시하고 진행 시킴에 따라 보안 불감증 유발
- HTTP로 사용자 ID/Password를 전송하는 것은 여러가지 문제가 있음
- 사용자 계정 보안에서 후술
- 표준 포트 (HTTPS:443)을 사용하지 않고 커스텀 포트를 사용 하는 것은 사용자에게 불편함과 오해를 유발할 수 있음
제안(강제사항 권고)
- 모든 외부 통신은 "HTTPS" 및 "WSS" 등 Security가 포함된 프로토콜만 사용하고, 최신 암호화 로직(Chiper)를 사용해야 한다.
- https://www.ssllabs.com/ssltest/ 결과 A 이상을 획득하도록 권고
- HTTPS의 경우 커스텀 포트를 지양하고 443 포트를 사용한다.
- 포트포워딩을 통해 오픈하고 있음. 커스텀 포트로 오픈하는 경우
- 사용자 입장에서 주소 뒤 숫자까지 외워야 하는 불편함
- 패킷 이동에 대한 관제가 어려움
- 무엇보다 외부 공격의 '접촉 면적이 넓어짐' 아래 예시와 같이 포트 스캔으로 매우 쉽게 공격 포인트 및 프로토콜을 확인할 수 있음
- 포트포워딩을 통해 오픈하고 있음. 커스텀 포트로 오픈하는 경우


- DNS record 중 보안과 관련된 값들을 설정한다
- DNSKEY, DS 등
해결책
- 프록시를 이용해서 엔드 포인트를 단일화 하고, 접속한 url을 기준으로 분기하는 L7 스위치로 동작시킨다.
- gsim.hanmaceng.co.kr -> gsim 서비스로 연결projectmaster.hanmaceng.co.kr -> 프로젝트 마스터 서비스로 연결
- 변경 전 (현상태)

- 변경 후

- 프록시 운영 방법
- CISCO 장비[^CISCO] : IOS의 설정
- Nginx Proxy Manager 등 프록시 서비스 이용

네트워크(인프라) 보안: 사내망의 모든 트래픽은 통제 가능해야 한다
문제 사항
- 엔터프라이즈 네트워크의 기본 조건 : Full Managed 및 관제(Audit)
- 예상 보안위헙 시나리오 대응 미미
- 특정 사내 IP로부터 외부로 대량의 데이터 전송 감지
- 특정 url (abc.example.com)으로 대규모 트레픽 요청(ddos공격) 감지
- 대응 가능한 장애 대응
- Hairpin(loopback)에 의한 네트워크 성능 저하 및 순단 인지 및 조치.
- 미인가 공유기 사용 등을 인지할 필요.
- Hairpin(loopback)에 의한 네트워크 성능 저하 및 순단 인지 및 조치.
제안(강제사항 권고)
- 네트워크 통제권을 사내에 두고, 인하우스 엔지니어가 통제할 수 있어야 함
- 포트포워딩 오픈 같은 단순 작업이 하청업체 담당자 부재 이슈로 2박 3일 이상 걸리는 것은 비정상
- VPN은 SSH Tunneling 기반으로 구성. 엔드 포인트 모니터링 통합으로 리소스 절감
해결책
- 네트워크 인프라 재설계
- 현재 네트워크 구성도 ( Topology)가 있어야 대책 마련이 가능
- Router / Switch (L3, L4, L7) 의 모델 및 처리량 검토 필요
- 사내 관리자가 관리 프로그램을 운영할 수 있는 여건 마련 필요
- 원격근무 혹은 현장에서 사내 인프라에 접근할 수 있는 표준 VPN 운영 안 필요.
사용자 인증(Auth) 시스템: 사용자 계정은 하나의 시스템에서 전담하며, 추가/삭제/세부권한 부여가 자유로워야 한다.
문제사항
- ERP의 사용자 계정이 다양한 시스템의 로그인으로 활용되고 있으나 Auth의 분리가 이루어 져있지 않고, 가족사 외의 사용처에 대해서는 수동작업이 빈번하게 필요함
- Object 별 권한 및 그룹 상속 권한을 일원화 해 설계할 필요
- 비표준 설계로 평문으로 ID/Password 전송 중
- 단방향 암호로 저장되어야 하는 사용자 계정 비밀번호 암호
해결책
- Open ID Connection (이하 OIDC)에 따른 Auth 구조 설계
- Core Auth로 Authentik (오픈소스) 활용 검토
- LDAP, Keberose 등 레거시 인증 시스템 제거 시나리오 검토
- 퇴사시 1개의 시스템에서만 삭제하면 모두 적용 될 수 있도록 설계
- 평문으로 ID/Password 전송 금지(https와 별개)
- JWT등 암호화 전송 강제화
- 사용자 암호는 Argon2로 모두 마이그레이션 후 기존 암호 파기
테넌트 설계: 다양한 조직/그룹/개별사용자로 데이터는 구분하되, 동일 리소스에서 활용하고, 데이터 혼입을 방지하는 시스템 설계를 해야한다.
배경
- B2B 서비스에서 A고객사와 B고객사의 데이터가 혼입혼출되는 사태가 발생시 소송 및 고객 이탈로 기업 파산까지도 가능
- 가장 손쉬운 해결책은 싱글 테넌트 - 고객사가 하나 늘어날 때마다 물리 장비를 추가로 사서 해당 고객 전용으로 배정하는 방법 - 유지이나 자원이 매우 비효율적으로 활용되고, 하드웨어의 통제도 어려움
- 이를 해결하기 위해 멀티 테넌트를 고려해 서비스들이 설계 되었는지 아키텍쳐 차원의 재검토가 필요함.
- 오브젝트 단위로 Path의 Hash화. DB구조 설계 등이 그 대상