docker默认安装部署服务的时候会设置 iptables 把需要开放的端口,自动放到 iptables 的白名单规则中。这就导致虽然防火墙开启了,但是在限制之外的服务器依然能扫到 数据库的端口。这里可以使用一些方法来检测服务器的某个端口是否开放:Docker默认的路由规则是允许所有客户端访问,如果你希望避免 Docker 中容器被局域网内访问,要进行一些处理。
一、在被监测的服务器上检查端口开放
1. 使用netstat和SS命令。ss命令的效率远高于netstat,如在统计服务器并发连接数时,ss的效率远超netstat。ss命令的用法,与netstat功能相同,可以用来查看系统上的端口是否开放。
2. 使用Lsof命令。在终端中输入lsof命令,用于列出当前系统打开的文件和进程信息,包括网络连接,可以用来检查端口是否开放。
二、从其它服务器检测被监测的服务器上检查端口是否可扫到
1. Telnet命令。在终端中输入telnet命令,指定主机和端口如 telnet 192.168.0.1 80,如果成功,则表明该端口能扫到。
2. nc(Netcat)命令。在终端中输入nc命令,指定主机和端口如nc -zv 192.168.0.1 80,如果成功,表明该端口能扫到。
3. 使用Ping和Traceroute网络工具。这些工具可以通过向目标主机发送数据包,并记录数据包的传输路径和传输时间来实现这一目的。
其中nc命令很好用,Telnet命令也不错,但很多服务器都默认没有安装这个命令。
有了方便的检测办法,也方便解决已加防火墙控制但系统漏洞扫描反馈能扫到Docker部署的端口问题了。
一、是修改docker的配置文件。
也推荐使用这个方法,修改daemon.json配置文件,这样的修改对所有容器都能生效,且在重启docker服务对在更改设置之前创建的容器也起作用。
vim /etc/docker/daemon.json
{
"iptables": false
}
二、修改docker容器启动命令
修改docker容器启动命令文件,手动指定 iptables=false 参数。docker daemon 存在一个 --iptables 的参数,用于控制是否使用 iptables 。我们使用以下命令启动一个 docker daemon 并关闭 iptables 支持。
docker run ... dockerd -iptables=false
docker run -d --privileged mysql:latest dockerd --iptables=false
本文地址:http://47.93.183.36/article/1289.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
手机扫码直接打开本页面 |