Tag: Linuxfunction

降低SYS_ADMIN Linuxfunction

我正在创build一个Docker容器,我不想保留“特权”标志为true。 这是为了保持更安全和更好的控制。 我的容器主要从事以下任务(这将帮助我定义它的资源访问范围并相应地强制执行访问控制)1.在容器上安装gluster文件系统2.运行SSH守护程序以接受传入的SSH连接3.运行一些通常可用的bash命令 在运行docker容器时,我使用了“–cap-add = SYS_ADMIN”选项来实现这一点。 但是,由于SYS_ADMIN增加了更多的权限(下面列出)比我所需要的。 我怎样才能达到SYS_ADMIN能力的一部分? SYS_ADMIN: 执行一系列系统pipe理操作,包括:quotactl(2),mount(2),umount(2),swapon(2),swapoff(2),sethostname(2)和setdomainname(2)。 执行特权系统日志(2) 操作(从Linux 2.6.37开始,应该使用CAP_SYSLOG来允许 这样的操作)。 执行VM86_REQUEST_IRQ vm86(2)命令; 对任意System V IPC对象执行IPIP_SET和IPC_RMID操作 在受信任的和安全的扩展属性上执行操作 ATTR(5)) 使用lookup_dcookie(2)。 使用ioprio_set(2)来分配 IOPRIO_CLASS_RT和(在Linux 2.6.25之前)IOPRIO_CLASS_IDLE I / O 调度课程。 通过套接字凭证时伪造UID。 (例如,accept(2),execve(2),open(2),pipe())打开文件的系统范围限制打开的文件的数量超过/ proc / sys / fs / file- 2))。 采用克隆(2)和非共享(2)创build新名称空间的CLONE_ *标志。 调用perf_event_open(2)。 访问特权的perf事件信息。 呼叫设置(2)。 调用fanotify_init(2)。 执行KEYCTL_CHOWN和KEYCTL_SETPERM keyctl(2)操作。 执行madvise(2)MADV_HWPOISON操作。 使用TIOCSTI ioctl(2)将字符插入除主叫方的控制terminal以外的terminal的input队列。 采用过时的nfsservctl(2)系统调用。 采用过时的bdflush(2)系统调用。 执行各种特权块设备ioctl(2)操作。 执行各种特权文件系统ioctl(2)操作。 对许多设备驱动程序执行pipe理操作。

我可以在Docker Nginx容器中放置哪些function?

我在一个Docker容器中运行Nginx,为了安全起见,我想尽可能多地释放Linux的能力。 我可以放弃哪些function? 该图像与标准的Docker Nginx Alpine图像类似: https : //github.com/nginxinc/docker-nginx/blob/0c7611139f2ce7c​​5a6b1febbfd5b436c8c7d2d53/mainline/alpine/Dockerfile ,它以根用户身份启动Nginx,然后运行工作进程为用户'nginx',看: root@instance-1:/opt/ed# docker-compose exec web bash bash-4.3# # Now we're inside the container. bash-4.3# ps aux PID USER TIME COMMAND 1 root 0:00 /bin/sh -c /etc/nginx/run-envsubst.sh && nginx 10 root 0:00 nginx: master process nginx 11 nginx 0:00 nginx: worker process 12 nginx 0:00 nginx: cache manager […]

特权的docker容器不能删除function?

我正在运行这个 docker run –rm –name mydocker –privileged \ -v /sys:/sys:ro \ -v /dev:/dev \ –stop-signal=SIGRTMIN+3 \ -p 8080:8080 \ -p 5005:5005 \ -p 8443:8443 \ –net=host \ –cap-drop=SYS_BOOT \ /usr/sbin/init 它应该作为init运行systemd并从其中删除SYS_BOOTfunction。 这是彻底closures容器所必需的。 如上所述运行时,它会将systemd init作为pid 1运行,但function不会丢失: [root@FK8CDFA9A82A9E7-A /]# cat /proc/1/status | grep Cap CapInh: 0000003fffffffff CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff CapAmb: 0000000000000000 当SYS_BOOTfunction被删除时,它应该看起来像这样: CapInh: 0000003fffbfffff […]

以docker容器内的应用程序作为具有function的非root用户运行

我试图运行一个简单的python UDP echo-server在一个使用非root用户的docker容器内的Port 507上侦听。 Dockerfile看起来像这样: FROM docker.io/centos RUN yum -y install iputils iproute COPY echo-server.py /tmp/ USER 1000 CMD ["python", "/tmp/echo-server.py"] 由于507是一个众所周知的端口,所以在发出docker运行时我还添加了能力NET_BIND_SERVICE,但是我仍然得到一个错误: # docker run –cap-add=NET_BIND_SERVICE 4d1c2301b166 Traceback (most recent call last): File "/tmp/echo-server.py", line 12, in <module> s.bind(('', port)) File "/usr/lib64/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 13] Permission denied 在检查function时,可以看到使用非root用户时未设置有效function。 [root@srv-tcn-01 […]