首页 > 其他分享 >docker安全设置

docker安全设置

时间:2023-04-03 11:47:25浏览次数:39  
标签:容器 lib nginx -- 安全 usr 设置 docker

限制容器之间的网络流量
默认情况下,同一主机上的容器之间允许所有网络通信。 如果不需要,请限制所有容器间的通信。 将需要相互通信的特定容器链接在一起。默认情况下,同一主机上所有容器之间都启用了不受限制的网络流量。 因此,每个容器都有可能读取同一主机上整个容器网络上的所有数据包。 这可能会导致意外和不必要的信息泄露给其他容器。 因此,限制容器间的通信。
在守护程序模式下运行docker并传递'--icc = false'作为参数。
例如,
```
/usr/bin/dockerd --icc=false
```
若使用systemctl管理docker服务则需要编辑`
``
/usr/lib/systemd/system/docker.service
```
文件中的`ExecStart`参数添加 `--icc=false`选项

确保可能包含敏感参数的文件和目录的安全对确保Docker守护程序的正确和安全运行至关重要
执行以下命令为docker相关文件配置权限:
```
chown root:root /usr/lib/systemd/system/docker.service
chmod 644 /usr/lib/systemd/system/docker.service
chown root:root /usr/lib/systemd/system/docker.socket
chmod 644 /usr/lib/systemd/system/docker.socket
chown root:root /etc/docker
chmod 755 /etc/docker
```
若文件路径与实际系统中不同可以使用以下命令获取文件路径:
```
systemctl show -p FragmentPath docker.socket
systemctl show -p FragmentPath docker.service
```

除了审核常规的Linux文件系统和系统调用之外,还审核所有与Docker相关的文件和目录。 Docker守护程序以“ root”特权运行。 其行为取决于某些关键文件和目录。如 /var/lib/docker、/etc/docker、docker.service、 docker.socket、/usr/bin/docker-containerd、/usr/bin/docker-runc等文件和目录
在/etc/audit/audit.rules与/etc/audit/rules.d/audit.rules文件中添加以下行:
```
-w /var/lib/docker -k docker
-w /etc/docker -k docker
-w /usr/lib/systemd/system/docker.service -k docker
-w /usr/lib/systemd/system/docker.socket -k docker
-w /usr/bin/docker-containerd -k docker
-w /usr/bin/docker-runc -k docker
```
然后,重新启动audit程序。 例如
```
service auditd restart
```

不要使用特权容器
使用--privileged标志将所有Linux内核功能赋予容器,从而覆盖--cap-add和--cap-drop标志。 确保不使用它。

限制容器的内存使用量
默认情况下,Docker主机上的所有容器均等地共享资源。 通过使用Docker主机的资源管理功能(例如内存限制),您可以控制容器可能消耗的内存量。
默认情况下,容器可以使用主机上的所有内存。 您可以使用内存限制机制来防止由于一个容器消耗主机的所有资源而导致的服务拒绝,从而使同一主机上的其他容器无法执行其预期的功能。 对内存没有限制可能会导致一个问题,即一个容器很容易使整个系统不稳定并因此无法使用。

仅使用所需的内存来运行容器。 始终使用'--memory'参数运行容器。 您应该按以下方式启动容器:
```
docker run --interactive --tty --memory 256m <Container Image Name or ID>
```

将容器的根文件系统挂载为只读
容器的根文件系统应被视为“黄金映像”,并且应避免对根文件系统的任何写操作。 您应该显式定义用于写入的容器卷。
您不应该在容器中写入数据。 属于容器的数据量应明确定义和管理。 在管理员控制他们希望开发人员在何处写入文件和错误的许多情况下,这很有用。

添加“ --read-only”标志,以允许将容器的根文件系统挂载为只读。 可以将其与卷结合使用,以强制容器的过程仅写入要保留的位置。
您应该按以下方式运行容器:
```
docker run --interactive --tty --volume <writable-volume> <Container Image Name or ID> <Command>

```

docker启动postgres
启动如下命令时,postgres容器里面的/usr/lib/postgresql/12/lib 映射到宿主机后,里面的内容会为空,这个时候需要提前启动一个容器,不设置  --read-only,然后将该目录的内容复制到宿主机的一个目录,
当下面这个语句的容器启动后,可以将之前复制出来的lib目录里面的内容复制到/Software/docker_volums/postgres12/lib目录,然后重新启动该容器
docker run --interactive --tty --memory 1g --read-only -v /Software/docker_volums/postgres12/data:/var/lib/postgresql/data -v /Software/docker_volums/postgres12/run:/var/run/postgresql -v /Software/docker_volums/postgres12/lib:/usr/lib/postgresql/12/lib:rw  --name postgres12 -p 13432:5432 -e POSTGRES_PASSWORD=Test@202303 -e ALLOW_IP_RANGE=0.0.0.0/0 -d 367676e04d30
将5432端口映射到宿主机的13432端口

docker启动nginx
docker启动一个nginx容器时,如果要设置 --read-only 则需要将nginx.conf配置文件先放到/Software/jh/nginx/conf目录下面
docker run --interactive --tty --memory 1g --read-only --name nginx -v /Software/nginx/files:/add/upfiles -v /Software/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /Software/nginx/conf/conf.d:/etc/nginx/conf.d -v /Software/nginx/run:/var/run -d -p 8080:8080 -p 5443:443 55f4b40fe486

  

标签:容器,lib,nginx,--,安全,usr,设置,docker
From: https://www.cnblogs.com/james-roger/p/17282622.html

相关文章

  • Docker-mongo
    Docker-mongomkdir-p/data/mongo/datadirdockerrun--nameedc-mongo-p27017:27017--restart=always-eMONGO_INITDB_ROOT_USERNAME=root-eMONGO_INITDB_ROOT_PASSWORD=12345678-v/data/mongo/datadir:/data/db-dmongo下载Debeziumwgethttps://repo1.mav......
  • 在Vmware虚拟机中设置静态IP的方法
    1.在菜单栏选择虚拟机–>设置–>网络适配器,勾选自定义NAT模式,然后点击确定。2.在菜单栏选择编辑,点击"虚拟网络编辑器",点击"更改设置"进行授权3.选择VMnet8,取消勾选DHCP服务,NAT设置(查看网关拍照),,记住这里的子网IP192.168.128.0,子网掩码255.255.255.0,网关192.168.128.24.root......
  • docker 容器内安装ps命令
    转载自:https://blog.csdn.net/HXNLYW/article/details/88127414============= dockerexec-it793d8/bin/sh进入容器内,使用ps-ef|grepjava报了错: 问题出在docker容器linux没有安装procps工具在命令行中输入:apt-getupdate&&apt-getinstallprocps 敲下回......
  • ubantu docker
     docker.service[Unit]Description=DockerApplicationContainerEngineDocumentation=https://docs.docker.comBindsTo=containerd.serviceAfter=network-online.targetfirewalld.servicecontainerd.serviceWants=network-online.targetRequires=docker.socket......
  • CentOS 7 修改网卡设置
    在安装CentOS的时候,我们经常选择最小范围安装,以减少系统占用空间和提高运行的速度,但是这样安装并启动系统后,其网络设置往往默认是关闭连接的状态,需要手工进行配置和修改。下面我们一起来看看如何手工修改网卡配置。1.关闭NetworkManager服务默认状态下最小化安装使用NetworkManage......
  • docker mysql
    -eMYSQL_ROOT_PASSWORD=my-secret-pw-v/my/custom:/etc/mysql/conf.ddockerrun-it--rmmysql:tag--verbose--helpdockerrun--namesome-mysql-v/my/own/datadir:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456-dmysql:tagdockerrun--namesome-mysql-e......
  • 20.常见的安全设备
    常见的安全设备一、网络安全设备​ 网络安全设备是一个有软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障,针对不同的应用场景有不同的作用,常见的安全设备有防火墙,态势感知,IDS,IPS,全流量分析,漏洞扫描,蜜罐,安全邮件,EDR等等。二、态势......
  • Docker - 安装Redis
    目录前言环境安装Redis下载Redis安装Redis配置Redis前言记录下Docker下Redis的安装环境Centos7+Docker23.0.1+Redis6.2.7安装Redis下载Redis指定版本下载redis,版本可通过仓库https://hub.docker.com查看dockerpullredis:6.2.7安装Redis创建redis配置......
  • Docker - 常用命令参考
    目录Docker命令关系图常用命令脑图docker命令大全参考Docker命令关系图常用命令脑图docker命令大全参考$docker--help用法:......
  • Docker - 安装Mysql
    目录前言环境安装Mysql下载Mysql安装Mysql配置Mysql前言记录下Docker下Mysql的安装环境Centos7+Docker23.0.1+Mysql8.0.27安装Mysql下载Mysql下载最新版mysqldockerpullmysql查看镜像列表dockerimagelsdockerimages查看镜像版本dockerimag......