#!/usr/bin/python # coding: utf-8 # ------------------------------------------------------------------- # 宝塔Linux面板 # ------------------------------------------------------------------- # Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. # ------------------------------------------------------------------- # Author: linxiao # ------------------------------------------------------------------- # ------------------------------------------------------------------- # FTP弱口令检测 # ------------------------------------------------------------------- # import sys, os # os.chdir('/www/server/panel') # sys.path.append("class/") import os,public _title = 'FTP服务弱口令检测' _version = 2.0 # 版本 _ps = "检测已启用的FTP服务弱口令" # 描述 _level = 3 # 风险级别: 1.提示(低) 2.警告(中) 3.危险(高) _date = '2022-08-12' # 最后更新时间 _ignore = os.path.exists("data/warning/ignore/sw_ftp_pass.pl") _tips = [ "请到【FTP】页面修改FTP密码", "注意:请不要使用过于简单的帐号密码,以免造成安全隐患", "推荐使用高安全强度的密码:分别包含数字、大小写、特殊字符混合,且长度不少于7位。", "使用【Fail2ban防爆破】插件对FTP服务进行保护" ] _help = '' _remind = '此方案可以加强对FTP服务器的防护,防止入侵者通过爆破入侵FTP服务器。' def check_run(): """检测FTP弱口令 @author linxiao<2020-9-19> @return (bool, msg) """ pass_info = public.ReadFile("/www/server/panel/config/weak_pass.txt") if not pass_info: return True, '无风险' pass_list = pass_info.split('\n') data = public.M("ftps").select() ret = "" for i in data: if i['password'] in pass_list: ret += "FTP用户:" + i['name'] + "存在弱口密码:" + short_passwd(i['password']) + "
" if ret: # print(ret) return False, ret else: return True, '无风险' def short_passwd(text): """ @name 密码脱敏 @author lwh """ text_len = len(text) if text_len > 4: return text[:2] + "**" + text[text_len-2:] else: if 1 < text_len <= 4: return text[:1] + "****" + text[text_len-1] else: return "******"