docker remote api 的安全隱患

2022-07-27 01:45:11 字數 1319 閱讀 2800

開啟docker的api,首先要知道docker的守護程序daemon,在下認為daemon作為client和service連線的乙個橋梁,負責代替將client的請求傳遞給service端。

預設情況daemon只由root控制,但我們可以通過-h繫結到埠上,這樣通過埠訪問的方式執行命令。

我用的是ubuntu17的虛擬機器+docker17.03.0-ce,網上介紹兩種方法

1、  直接執行 docker -d -h unix:///var/run/docker.sock -h 0.0.0.0:4243 ,在我虛擬機器裡並不行,沒有-d引數

2、  修改配置檔案,在ubuntu環境下修改其配置檔案 /etc/default/docker,加入 docker_opts="-h=unix:///var/run/docker.sock -h=0.0.0.0:4232",同樣沒有啟動程序。

檢視原因是修改的配置檔案沒有生效,這是因為/etc/default/docker檔案是為upstart和sysvinit準備的,而使用service命令時並不會讀取它,因此我們還需要做如下更改:

sudo mkdir -p /etc/systemd/system/docker.service.d

sudo vim /etc/systemd/system/docker.service.d/using_environment_file.conf

[service]

environmentfile=-/etc/default/docker

execstart=

execstart=/usr/bin/docker daemon -h fd:// $docker_opts

sudo systemctl daemon-reload

sudo service docker restart

這樣我們就可以看到,成功開啟的docker的api

但經過我測試並不能直接通過http訪問,操作容器。但如果未設定訪問控制,可以利用docker client遠端連線到對方docker service裡

通過docker -h tcp: +command 直接操作容器

這樣的話可以通過命令直接連進去

造成安全隱患。

防護方式:最主要的不要從外網能訪問到這個api。無論是設定認證,或是訪問控制。

參考文章:修改/etc/default/docker檔案不生效的解決辦法 

open basedir後可能存在的安全隱患

目前php站點的安全配置基本是open basedir safemode,確實很無敵 很安全,即使在許可權沒有很好設定的環境中,這樣配置都是相當安全的,當然了,不考慮某些可以繞過的情況。本文討論兩點開啟open basedir後可能導致的安全隱患 現實遇到的 乙個也許屬於php的乙個小bug,另外乙...

Scala的隱式引數 隱式值 隱式物件

trait calc t 使用隱式值轉換到隱式引數 class multiplywithint extends calc int class multiplywithstring extends calc string 定義隱式值 implicit val i new multiplywithint...

隱式轉換中隱式引數與隱式函式的使用

隱式引數的使用 要定義多個隱式引數時,需要使用柯里化函式。隱式轉換作用就是 當呼叫方法時,不必手動傳入方法中的隱式引數,scala會自動在作用域範圍內尋找隱式值自動傳入。1 同型別的引數的隱式值只能在作用域內出現一次,同乙個作用域內不能定義多個型別一樣的隱式值。2 implicit 關鍵字必須放在隱...