我正在创建一个仅限 SFTP 的Docker容器,该容器将由多人使用,其唯一目的是在他们自己的chroot
ed 环境中上传和管理文件。
从理论上讲,它非常安全:我将禁用所有形式的bash
登录,并且不会在其中运行任何其他进程。但是,我想再加强一点:
我想阻止这个容器从内部访问 Internet,除了它作为 SFTP 服务器的目的。
澄清一下:我知道如何防止外部世界访问我的容器——我可以设置传入iptables
规则,并且我只能在我的 docker run 命令中公开 SFTP 端口。
但是,当在容器内运行时,我想让以下命令(作为示例)失败:
curl google.com
Run Code Online (Sandbox Code Playgroud)
我的目的是减少被黑容器可能造成的损害(不能用于发送垃圾邮件等)。
在我的专用服务器(由 OVH 托管)上,运行全新安装的 Ubuntu 14.04,curl 和 wget 需要大约 10 秒才能完成一个简单的请求。
$ curl -v google.com
* Rebuilt URL to: google.com/
* Hostname was NOT found in DNS cache
Run Code Online (Sandbox Code Playgroud)
只有在 10 秒后它才会真正返回一些东西。所以我决定在这个上运行strace:
write(2, "Hostname was NOT found in DNS ca"..., 36) = 36
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
close(3) = 0
mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f0a24fb8000
mprotect(0x7f0a24fb8000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f0a257b7f70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f0a257b89d0, tls=0x7f0a257b8700, child_tidptr=0x7f0a257b89d0) = 5047
poll(0, 0, 4) = 0 (Timeout)
poll(0, 0, 8) …
Run Code Online (Sandbox Code Playgroud) 我想知道一种工具,以编程方式测量每个 IP 应用于服务器的负载(以 KB/s 为单位)。
到目前为止,tcpdump 在告诉我每秒发送的数据包数量方面做得很好,但我相信很多都没有显示(以 350KB/s 的速度下载,而每秒只输出 150 个数据包)。
我这样做是否正确?iftop 将是完美的,但我需要一个可以通过标准输出(没有 ncurses)连接的程序。