暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

FastDFS安全配置

纯洁的明依 2019-10-27
898

1、课程名称:FastDFS安全配置

2、具体内容

现在FastDFS已经配置成功,并且也可以通过java调用,但是这里面有一个问题,现在谁都可以调用传输,那么你的服务器就好比你赤身裸体上火星一样。所以现在就需要针对于文件服务器的安全进行相应的配置。

2.1、链接白名单

链接有黑名单和白名单两个概念,所谓的白名单指的是允许访问的用户。如果要修改白名单主要的配置项在tracker.conf文件里面:vim/etc/fdfs/tracker.conf.


allow_hosts=192.168.122.[198-202]

现在表示允许进行上传操作的主机的为:192.168.122.198~192.168.122.202之间的IP地址。

allow_hosts=192.168.122.[190,198-202]

现在表示192.168.122.190也可以进行访问。在之前使用的是命令行的模式完成的,那么如果说现在要使用本地程序呢?如果说现在只是配置了本地Windows的地址实际上意义不大,因为也无法访问。需要配置一个连接的网关IP

2.2、盗链防范

文件服务器一旦开启之后实际上里面的数据就意味着所有的用户都直接通过地址访问了,这样下去就会造成一个问题,别人的服务器直接引用你的图片,造成你的服务器的容量攀升,这样的操作必须要求禁止出现,所以就必须使用放盗链功能。

所谓的盗链指的是你生成一个随机的token,这个token在某一段时间内有效,超过了指定的时间将出现错误页面。防盗链的功能可以修改storage主机的配置实现。

1、【fastdfs-storage-group1-01】上传盗链之后的显示图片;

·所有的fastdfs的配置文件的保存路径“/etc/fdfs”,将图片保存到此路径之中:mv/srv/ftp/noauth.gif/etc/fdfs/·将此图片拷贝到所有的主机:scp/etc/fdfs/noauth.gif192.168.122.200:/etc/fdfs2、【fastdfs-storage-group1-01】修改防盗链的配置文件:vim/etc/fdfs/http.conf

3、【fastdfs-storage-group1-01】将此时的http.conf的配置拷贝到其它主机:

·拷贝其它主机:scp/etc/fdfs/http.conf192.168.122.200:/etc/fdfs/4、【fastdfs-storage-*】需要重新启动storage服务:/usr/bin/fdfs_storaged/etc/fdfs/storage.confrestart5、【fastdfs-storage-*】所有的nginx服务必须重新启动:/usr/local/nginx/sbin/nginx-sreload6、【fastdfs-storage-*】所有的token失效之后需要显示一张固定的图片,那么这个图片还需要进行授权处理

chmod777-R/etc/fdfs/noauth.gif

7、通过java程序生成客户端的Token

·前提:你当前电脑上的日期时间和你服务器上的日期时间是对等的;·修改“fdfs_client.conf”配置文件;

tracker_server=192.168.122.198:22122 
http.anti_steal_token=true
http.secret_key=mldnjava01051283346hahahaheihei

·编写程序生成一个Token信息:

packagecn.mldn.demo;
importorg.csource.fastdfs.ClientGlobal;
importorg.csource.fastdfs.ProtoCommon;
importorg.csource.fastdfs.TrackerClient;
importorg.csource.fastdfs.TrackerServer;
importorg.springframework.core.io.ClassPathResource;
public class FDFSToken{
publicstaticvoidmain(String[]args)throwsException{
//1、读取上传的配置文件,此配置文件在CLASSPATH路径下
ClassPathResourceres=newClassPathResource("fdfs_client.conf");
//2、初始化FastDFS上传的环境
ClientGlobal.init(res.getClassLoader().getResource("fdfs_client.conf").getPath());//3、建立Tracker的客户端连接
TrackerClienttracker=newTrackerClient();
TrackerServertrackerServer=tracker.getConnection();//取得服务器连接//定义文件id的时候千万不要增加组名称,否则无法访问
String fileId="M00/00/00/wKh6yVg71i6ASCLbAAL6dz7aOB0963.jpg";
intts=(int)(System.currentTimeMillis()/1000);
Stringtoken=ProtoCommon.getToken(fileId,ts,ClientGlobal.g_secret_key);StringBufferfileUrl=newStringBuffer();
fileUrl.append("http://");
fileUrl.append(trackerServer.getInetSocketAddress().getHostString());
fileUrl.append("/group2/").append(fileId);
fileUrl.append("?token=").append(token).append("&ts=").append(ts);
System.out.println(fileUrl);
  trackerServer.close();
  }
 

如果现在生成的Token是正常的内容,那么则可以进行正常的访问,如果token不正确,或者Token的有效时间一到,那么此时该路径将显示没有授权的图片。

文章转载自纯洁的明依,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论