[MDRM] 컨테이너 UID, GID 보안 이슈

1. 환경(Environment)

  • OS : Linux
  • Version : MCCS ENT. & MDRM
  • Docker images 로 실행회는 모든 컨테이너

2. 문제 & 오류메세지(Problem & Error Message)

  • Linux 보안 검사에 UID와 GID가 없는 프로세스로 보안 취약점에 항시 발견됨

3. 원인 (Cause)

  • Docker images로 실행되는 모든 컨테이너는 내부의 UID와 GID를 가짐(/etc/passwd, /etc/group)
  • Linux host에는 Docker 컨테이너의 UID와 GID를 가져오지 않음

4. 우회방안 (Workaround)

  • Linux 와 Docker의 근본적인 문제로 해결방법은 없음
  • 하기와 같이 유저를 생성하여 우회 가능
  • Docker Engine이 설치된 Linux host에 아래와 같이 유저 생성
# MDRM 유저 생성
groupadd -g 43 mdrm-utmp
groupadd -g 44 mdrm-video
groupadd -g 101 mdrm-libuuid
groupadd -g 104 mdrm-syslog
groupadd -g 102 mdrm-netdev
groupadd -g 103 mdrm-crontab
groupadd -g 105 mdrm-ssh
groupadd -g 106 mdrm-ssl-cert
groupadd -g 109 mdrm-colord

useradd -M -u 100 -g 101 mdrm-libuuid -s /usr/sbin/nologin -c "MDRM Container user by manTech"
useradd -M -u 101 -g 104 mdrm-syslog -s /usr/sbin/nologin -c "MDRM Container user by manTech"
useradd -M -u 104 -g 109 mdrm-colord -s /usr/sbin/nologin -c "MDRM Container user by manTech"
useradd -M -u 3097 mdrm-www-data -s /usr/sbin/nologin -c "MDRM Container user by manTech"
useradd -M -u 3102 mdrm-rabbitmq -s /usr/sbin/nologin -c "MDRM Container user by manTech"
useradd -M -u 5011 mdrm-postgres -s /usr/sbin/nologin -c "MDRM Container user by manTech"
useradd -M -u 5012 mdrm-mccs -s /usr/sbin/nologin -c "MDRM Container user by manTech"

5. 유의사항

  • 각 업체별 UID와 GID의 Number에 법칙이 존재 할 수 있음
  • 그럴경우 적절하게 Number를 수정 할 필요 있음