systemd 서비스로 실행되는 Flask 웹 서버의 보안을 개선하려고 합니다.
[Unit]
Description=Configuration Server
[Service]
Type=simple
ExecStart=/usr/bin/configui
ProtectSystem=full
ProtectHome=yes
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
ReadWritePaths=/var/lib/configui/
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
DevicePolicy=closed
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
RestrictRealtime=yes
RestrictSUIDSGID=yes
MemoryDenyWriteExecute=yes
LockPersonality=yes
[Install]
WantedBy=multi-user.target
/var/lib/configui/data.json.new
그러나 응용 프로그램이 임시 파일에 쓰려고 할 때 문제가 발생합니다. 이 작업이 완료되면 응용 프로그램을 /var/lib/configui/data.json
덮어쓰게 됩니다. Python에서 권한 거부 오류가 발생합니다. 이 디렉토리의 내용:
root@XXXXXX:/var/lib/configui# ls -ll
total 16
-rw-r----- 1 userA userA 589 Jul 30 2020 data.json
CAP_DAC_OVERRIDE를 추가하여 작동하게 할 수 있다는 것을 알고 있지만 이는 읽기 및 쓰기 작업을 제한하려는 목적을 상실합니다.