系统登录失败次数超过限定次数,则根据IP或用户名锁定,需要过了锁定时间才可以继续登录

前言

之前做的项目都有用户名锁定机制,即:用户名失败次数超过多少次,就锁定这个用户不可以再登录,需要等过了锁定时间才可以继续登录。

然后最近的一个项目中,有个漏洞整改措施中,提到了这个锁定机制不能只根据用户名锁定,还要根据IP锁定。

两种锁定机制

1、根据用户名锁定

根据用户名锁定的前提是这个用户名要存在,在数据库中查出了这个用户名,我们才能记录错误次数,从而判断是否应该锁定。那假如这个用户名不存在,那就不用记录错误次数,那是不是可以一直调用登录接口?想象一下,某个恶意IP一直无限次调用登录接口,每次调用都会查询一次数据库,这。。。。。。


2、根据IP锁定

如果只根据IP锁定的话,就可能会存在某些恶意用户通过不停切换IP的方式,对某个用户名的密码进行猜测的情况。因为IP锁定只能对IP进行锁定,而无法对具体的用户名进行锁定。


综合以上两种锁定机制的缺点,所以我们不能只采用其中一种,而是需要结合两种锁定方式来进行校验。

实现流程

既然知道了两种机制单独使用的缺点,那我们的实现流程也好梳理了。

1、不管用户名是否存在,先校验IP是否已经锁定,锁定了不执行后面的流程,直接提示错误信息。


2、 如果IP没有被锁定,则先查询用户名,用户名不存在,则记录IP错误次数+1,并判断错误次数是否达到限定次数,达到则锁定,并提示错误信息;该IP下一次登录时,则会执行第一步。


3、 如果用户名存在,则校验用户名是否已经锁定,锁定了不执行后面的流程,直接提示错误信息。


4、如果用户名没有被锁定,则校验密码是否正确,密码错误,则同时记录IP错误次数+1、用户名错误次数+1,并判断错误次数是否达到限定次数,达到则锁定,并提示错误信息;该IP或用户名下一次登录时,则会执行第一步或第三步。


5、如果密码正确,则清除当前用户名和IP的错误次数记录。

以上五点中,其中第四点关于判断错误次数是否达到限定次数,我是同时要获取IP错误次数和用户名错误次数,取这两个次数中较大的那一个为准,如果相等就随便取一个。

假如IP错误次数较大,则IP锁定了,那不管你用哪个用户名只要是这个IP,就都不允许登录;如果是用户名错误次数较大,则用户名锁定了,那不管你怎么改变IP,只要是这个用户名,就不允许登录。

代码

梳理好了流程,那我们就可以开始写代码了

登录的controller

/** 密码最大错误次数 */
private int ERROR_COUNT = 3;
/** 锁定时长 */
private String LOCK_DURATION = "15";

@PostMapping("/login")
public ResultUtil login(String userName, String password,HttpServletRequest request){
    String ip = IPUtil.getIpAddress(request);
    long currentTime = System.currentTimeMillis();
    lockedUser(currentTime, ip,"IP"); //判断ip是否锁定
    //保存登录日志
    SysLog sysLog = new SysLog(ip,"用户登录","login");
    sysLog.setId(IdUtil.getSnowflakeNextIdStr());
    sysLog.setState("登录成功");
    try {
        //私钥解密
        userName = RSAUtil.decrypt(userName);
        password = RSAUtil.decrypt(password);

        sysLog.setCreatorId(userName);
        SysSafe safe = sysSafeService.list().get(0);
        SysUser user = passwordErrorNum(ip,userName, password,safe);// 先查询用户名是否存在,不存在则校验IP,存在则校验用户名和密码
        int i = safe.getIdleTimeSetting(); //如果系统闲置时间为0,设置token和session永不过期
        String token = "";
        if (i==0){
            token = LoginUtil.login(user,null,2592000);// 最长保持登录为30天
        }else {
            token = LoginUtil.login(user);
        }
        sysLog.setInfo(userName+"登录成功");
        sysLogService.save(sysLog);
        return ResultUtil.success(token);
    } catch (ExceptionVo e) {
        sysLog.setInfo(e.getMessage());
        sysLog.setState("登录失败");
        sysLogService.save(sysLog);
        return ResultUtil.error(e.getCode(),e.getMessage());
    }catch (Exception e) {
        sysLog.setInfo(BaseConstant.UNKNOWN_EXCEPTION);
        sysLog.setState("登录失败");
        sysLogService.save(sysLog);
        e.printStackTrace();
        return ResultUtil.error(BaseConstant.UNKNOWN_EXCEPTION);
    }
}

// ......省略其他接口
// 注意,如果有获取验证码或获取公钥的接口(这两个接口都是在登录页面加载时、调用登录接口之前调用的),也需要先校验IP是否锁定,锁定了不给返回新数据。如下:
/*String ip = IPUtil.getIpAddress(request);
long currentTime = System.currentTimeMillis();
lockedUser(currentTime, ip,"IP"); //判断ip是否锁定*/

/**
 * 判断账号或IP是否锁定
 */
private boolean lockedUser(long currentTime,String userName,String msg){
    boolean flag = false;
    if (RedisUtil.hasKey(BaseConstant.ERROR_COUNT+userName)){
        long loginTime = Long.parseLong(RedisUtil.hget(BaseConstant.ERROR_COUNT+userName, "loginTime").toString());
        String isLocaked = RedisUtil.hget(BaseConstant.ERROR_COUNT+userName,"isLocaked").toString();
        if ("true".equals(isLocaked) && currentTime < loginTime){
            Duration between = LocalDateTimeUtil.between(LocalDateTimeUtil.of(currentTime), LocalDateTimeUtil.of(loginTime));
            throw new ExceptionVo(1004,msg+"锁定中,还没到允许登录的时间,请"+between.toMinutes()+"分钟后再尝试");
        }else{
            flag = true;
            RedisUtil.hset(BaseConstant.ERROR_COUNT+userName,"isLocaked","false");//重置为false
        }
    }
    return flag;
}

/**
 * 账号和密码错误次数验证
 */
private SysUser passwordErrorNum(String ip,String userName, String password,SysSafe sysSafe) throws InvalidKeySpecException, NoSuchAlgorithmException {
    //查询用户
    SysUser user = sysUserService.getUser(null,userName);
    if (null == user){ // 根据用户名查询用户,如果没有查到,则根据ip校验
        checkIPLocked(sysSafe,ip);
    }
    long currentTime = System.currentTimeMillis();
    boolean flag = lockedUser(currentTime, userName,"账号");//判断账号是否锁定
	//根据前端输入的密码(明文),和加密的密码、盐值进行比较,判断输入的密码是否正确
    boolean authenticate = EncryptionUtil.authenticate(password, user.getPassword(), user.getSalt());
    if (authenticate) {
        //密码正确错误次数和IP错误次数清零
        RedisUtil.del(BaseConstant.ERROR_COUNT+userName);
        RedisUtil.del(BaseConstant.ERROR_COUNT+ip);
    } else {
        checkNameLocked(sysSafe,userName,ip,flag);
    }
    return user;
}

/**
 * 校验IP锁定
 */
public boolean checkIPLocked(SysSafe sysSafe,String ip){
    long currentTime = System.currentTimeMillis();
    boolean flag = lockedUser(currentTime, ip,"IP");//判断IP是否锁定
    //错误3次,锁定15分钟后才可登陆 允许时间加上定义的登陆时间(毫秒)
    long timeStamp = System.currentTimeMillis()+900000;
    //密码登录限制(0:连续错3次,锁定账号15分钟。1:连续错5次,锁定账号30分钟)
    if (sysSafe.getPwdLoginLimit()==1){
        ERROR_COUNT = 5;
        LOCK_DURATION = "30";
        //错误5次,锁定30分钟后才可登陆 允许时间加上定义的登陆时间(毫秒)
        timeStamp = System.currentTimeMillis()+1800000;
    }
    if (RedisUtil.hasKey(BaseConstant.ERROR_COUNT+ip)){
        int i = Integer.parseInt(RedisUtil.hget(BaseConstant.ERROR_COUNT+ip,"errorNum").toString());
        if (flag && i==ERROR_COUNT){ // 当错误次数达到限定次数时,走到这一步说明已经过了锁定时间再次登录,这时重新将错误次数设置为1
            RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"errorNum",1);
        }else {
            RedisUtil.hincr(BaseConstant.ERROR_COUNT+ip,"errorNum",1);// 错误次数加一
        }
        RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"loginTime",timeStamp);
    }else {
        Map<String,Object> map = new HashMap<>();
        map.put("errorNum",1);
        map.put("loginTime",timeStamp);
        map.put("isLocaked","false");// 是否锁定,默认为false
        RedisUtil.hmset(BaseConstant.ERROR_COUNT+ip, map, -1);
    }
    int i = Integer.parseInt(RedisUtil.hget(BaseConstant.ERROR_COUNT+ip,"errorNum").toString());
    if (i==ERROR_COUNT){
    	// 将锁定状态改为true表示已锁定
       	RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"isLocaked","true");
        throw new ExceptionVo(1004,"用户名或密码错误"+ERROR_COUNT+"次,现已被锁定,请"+LOCK_DURATION+"分钟后再尝试");
    }
    throw new ExceptionVo(1000,"用户名或密码错误,总登录次数"+ERROR_COUNT+"次,剩余次数: " + (ERROR_COUNT-i));
}

/**
 * 校验用户名锁定
 */
public boolean checkNameLocked(SysSafe sysSafe,String userName,String ip,boolean flag){
    //错误3次,锁定15分钟后才可登陆 允许时间加上定义的登陆时间(毫秒)
    long timeStamp = System.currentTimeMillis()+900000;
    //密码登录限制(0:连续错3次,锁定账号15分钟。1:连续错5次,锁定账号30分钟)
    if (sysSafe.getPwdLoginLimit()==1){
        ERROR_COUNT = 5;
        LOCK_DURATION = "30";
        //错误5次,锁定30分钟后才可登陆 允许时间加上定义的登陆时间(毫秒)
        timeStamp = System.currentTimeMillis()+1800000;
    }
    if (RedisUtil.hasKey(BaseConstant.ERROR_COUNT+userName)){
        int i1=0,i2=0;
        if (RedisUtil.hasKey(BaseConstant.ERROR_COUNT+userName))
            i1 = Integer.parseInt(RedisUtil.hget(BaseConstant.ERROR_COUNT+userName,"errorNum").toString());
        if (RedisUtil.hasKey(BaseConstant.ERROR_COUNT+ip))
            i2 = Integer.parseInt(RedisUtil.hget(BaseConstant.ERROR_COUNT+ip,"errorNum").toString());
        // 每一次错误,同时记录当前IP和用户名的错误次数
        if (flag && (i1==ERROR_COUNT || i2==ERROR_COUNT)){ // 走到这一步说明已经过了锁定时间再次登录,这时重新将错误次数设置为1
            if (i1>i2){ // i1 > i2 是用户名错误次数到达限定次数,将用户名的错误次数重置为1
                RedisUtil.hset(BaseConstant.ERROR_COUNT+userName,"errorNum",1);
            }else if (i2>i1){ // i2 > i1 是IP错误次数到达限定次数,将IP的错误次数重置为1
                RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"errorNum",1);
            }else { // 否则就是用户名和IP错误次数相等,将两个的错误次数同时重置为1
                RedisUtil.hset(BaseConstant.ERROR_COUNT+userName,"errorNum",1);
                RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"errorNum",1);
            }
        }else {
            RedisUtil.hincr(BaseConstant.ERROR_COUNT+userName,"errorNum",1);
            RedisUtil.hincr(BaseConstant.ERROR_COUNT+ip,"errorNum",1);
        }
        RedisUtil.hset(BaseConstant.ERROR_COUNT+userName,"loginTime",timeStamp);
        RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"loginTime",timeStamp);
    }else {
        Map<String,Object> map = new HashMap<>();
        map.put("errorNum",1);
        map.put("loginTime",timeStamp);
        map.put("isLocaked","false");
        RedisUtil.hmset(BaseConstant.ERROR_COUNT+userName, map, -1);
        if (!RedisUtil.hasKey(BaseConstant.ERROR_COUNT+ip)){
            RedisUtil.hmset(BaseConstant.ERROR_COUNT+ip, map, -1);
        }
    }
    int i1 = Integer.parseInt(RedisUtil.hget(BaseConstant.ERROR_COUNT+userName,"errorNum").toString());
    int i2 = Integer.parseInt(RedisUtil.hget(BaseConstant.ERROR_COUNT+ip,"errorNum").toString());
    int i = i1 >= i2 ? i1 : i2;// 取错误次数大的那个值进行判断
    if (i1==ERROR_COUNT || i2==ERROR_COUNT){ // 任意一个满足,将值大的那个设置为锁定
        if (i1>i2){ // i1 > i2 是用户名错误次数到达限定次数,将用户名的锁定状态设置为锁定
            RedisUtil.hset(BaseConstant.ERROR_COUNT+userName,"isLocaked","true");
        }else if (i2>i1){ // i2 > i1 是IP错误次数到达限定次数,将IP的锁定状态设置为锁定
            RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"isLocaked","true");
        }else { // 否则就是用户名和IP错误次数相等,将两个的锁定状态同时设置为锁定
            RedisUtil.hset(BaseConstant.ERROR_COUNT+userName,"isLocaked","true");
            RedisUtil.hset(BaseConstant.ERROR_COUNT+ip,"isLocaked","true");
        }
        throw new ExceptionVo(1004,"用户名或密码错误"+ERROR_COUNT+"次,现已被锁定,请"+LOCK_DURATION+"分钟后再尝试");
    }
    throw new ExceptionVo(1000,"用户名或密码错误,总登录次数"+ERROR_COUNT+"次,剩余次数: " + (ERROR_COUNT-i));
}

以上我们就实现了用户名和IP一起校验的锁定机制了。这两种方式结合校验的机制应该是挺完善的,按照上面的代码,我自己测试也是没啥问题的,当然可能我代码也会有遗漏的,欢迎大家评论补充。

最后,如果这篇文章你觉得写得还行或者对你有点帮助的话,欢迎给点个大拇指~

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
网络安全选择题答案 2017年网络安全选择题答案 一、单选题 1.为了防御网络监听,最常用的方法是(B) A、采用物理传输(非网络)B、信息加密C、无线网D、使用专线传输 2.使网络服务器中充斥着大量要求回复的信息,消耗带宽,导致网络或系统停止正常服务,这属于什么攻击类型?(A) A、拒绝服务B、文件共享C、BIND漏洞D、远程过程调用 3.向有限的空间输入超长的字符串是哪一种攻击手段?(A) A、缓冲区溢出;B、网络监听;C、拒绝服务D、IP欺骗 4.主要用于加密机制的协议是(D) A、HTTPB、FTPC、TELNETD、SSL 5.用户收到了一封可疑的电子邮件,要求用户提供银行账户及密码,这是属于何种攻击手段?(B) A、缓存溢出攻击;B、钓鱼攻击;C、暗门攻击;D、DDOS攻击 6.WindowsNT和Windows2000系统能设置为在几次无效登录锁定帐号,这可以防止(B) A、木马;B、暴力攻击;C、IP欺骗;D、缓存溢出攻击 7.在以下认证方式中,最常用的认证方式是:(A) A基于账户名/口令认证;B基于摘要算法认证;C基于PKI认证;D基于数据库认证 网络安全选择题答案全文共7页,当前为第1页。8.以下哪项不属于防止口令猜测的措施?(B) 网络安全选择题答案全文共7页,当前为第1页。 A、严格限定从一个给定的终端进行非法认证的次数;B、确保口令不在终端上再现;C、防止用户使用太短的口令;D、使用机器产生的口令 9.下列不属于系统安全的技术是(B) A、防火墙;B、加密狗;C、认证;D、防病毒 10.抵御电子邮箱入侵措施中,不正确的是(D) A、不用生日做密码B、不要使用少于5位的密码C、不要使用纯数字D、自己做服务器 11.不属于常见的危险密码是(D) A、跟用户名相同的密码B、使用生日作为密码C、只有4位数的密码D、10位的综合型密码 12.不属于计算机病毒防治的策略的是(D) A、确认您手头常备一张真正"干净"的引导盘 B、及时、可靠升级反病毒产品 C、新购置的计算机软件也要进行病毒检测 D、整理磁盘 13.针对数据包过滤和应用网关技术存在的缺点而引入的防火墙技术,这是()防火墙的特点。(D) A、包过滤型B、应用级网关型C、复合型防火墙D、代理服务型 14.在每天下午5点使用计算机结束时断开终端的连接属于(A) A、外部终端的'物理安全B、通信线的物理安全C、探听数据D、网络地址欺骗 15.2003年上半年发生的较有影响的计算机及网络病毒是什么(B) 网络安全选择题答案全文共7页,当前为第2页。(A)SARS(B)SQL杀手蠕虫(C)手机病毒(D)小球病毒 网络安全选择题答案全文共7页,当前为第2页。 16.SQL杀手蠕虫病毒发作的特征是什么(A) (A)大量消耗网络带宽(B)攻击个人PC终端(C)破坏PC游戏程序(D)攻击手机网络 17.当今IT的发展与安全投入,安全意识和安全手段之间形成(B) (A)安全风险屏障(B)安全风险缺口(C)管理方式的变革(D)管理方式的缺口 18.我国的计算机年犯罪率的增长是(C) (A)10%(B)160%(C)60%(D)300% 19.信息安全风险缺口是指(A) (A)IT的发展与安全投入,安全意识和安全手段的不平衡(B)信息化中,信息不足产生的漏洞 (C)计算机网络运行,维护的漏洞(D)计算中心的火灾隐患 20.信息网络安全的第一个时代(B) (A)九十年代中叶(B)九十年代中叶前(C)世纪之交(D)专网时代 21.信息网络安全的第三个时代(A) (A)主机时代,专网时代,多网合一时代(B)主机时代,PC机时代,网络时代(C)PC机时代,网络时代,信息时代(D)2001年,2002年,2003年 22.信息网络安全的第二个时代(A) (A)专网时代(B)九十年代中叶前(C)世纪之交 23.网络安全在多网合一时代的脆弱性体现在(C) (A)网络的脆弱性(B)软件的脆弱性(C)管理的脆弱性(D)应用的脆弱性 网络安全选择题答案全文共7页,当前为第3页。24.人对网络的依赖性最高的时代(C) 网络安全选择题答案全文共7页,当前为第3页。 (A)专网时代(B)PC时代(C)多网合一时代(D)主机时代 25.网络攻击与防御处于不对称状态是因为(C) (A)管理的脆弱性(B)应用的脆弱性(C)网络软,硬件的复杂性(D)软件的脆弱性 26.网络攻击的种类(A) (A)物理攻击,语法攻击,语义攻击(B)黑客攻击,病毒攻击(C)硬件攻击,软件攻击(D)物理攻击,黑客攻击,病毒攻击 27.语义攻击利用的是(A) (A)信息内容的含义(B)病毒对软件攻击(C)黑客对系统攻击(D)黑客和病毒的攻击 28.1995年之后信息网络安全问题就是(A) (A)风险管理(B)访问控制(C)消除
  单选题   1.使网络服务器中充斥着大量要求回复的信息,消耗带宽,导致网络或系统停止正常服务,这属于什么攻击类型? (A)   A、拒绝服务   B、文件共享   C、BIND漏洞   D、远程过程调用   2.为了防御网络监听,最常用的方法是 (B)   A、采用物理传输(非网络)   B、信息加密   C、无线网   D、使用专线传输   3.向有限的空间输入超长的字符串是哪一种攻击手段?(A)   A、缓冲区溢出;   B、网络监听   C、拒绝服务   D、IP欺骗   4.主要用于加密机制的协议是(D)   A、HTTP   B、FTP   C、TELNET   D、SSL   5.用户收到了一封可疑的电子邮件,要求用户提供银行账户及密码,这是属于何种攻击手段? 2021网络安全知识竞赛题库及答案全文共9页,当前为第1页。  A、缓存溢出攻击; 2021网络安全知识竞赛题库及答案全文共9页,当前为第1页。   B、钓鱼攻击   C、暗门攻击;   D、DDOS攻击   6.Windows NT 和Windows 2000系统能设置为在几次无效登录锁定帐号,这可以防止(B)   A、木马;   B、暴力攻击;   C、IP欺骗;   D、缓存溢出攻击   7.在以下认证方式中,最常用的认证方式是:(A)   A基于账户名/口令认证   B基于摘要算法认证 ;   C基于PKI认证 ;   D基于数据库认证   8.以下哪项不属于防止口令猜测的措施? (B) (B)   A、严格限定从一个给定的终端进行非法认证的次数;   B、确保口令不在终端上再现;   C、防止用户使用太短的口令;   D、使用机器产生的口令   9.下列不属于系统安全的技术是(B)   A、防火墙   B、加密狗   C、认证   D、防病毒   A、不用生日做密码 2021网络安全知识竞赛题库及答案全文共9页,当前为第2页。  B、不要使用少于5位的密码 2021网络安全知识竞赛题库及答案全文共9页,当前为第2页。   C、不要使用纯数字   D、自己做服务器   11.不属于常见的危险密码是( D )   A、跟用户名相同的密码   B、使用生日作为密码   C、只有4位数的密码   D、10位的综合型密码   12.不属于计算机病毒防治的策略的是( D )   A. 确认您手头常备一张真正"干净"的引导盘   B. 及时、可靠升级反病毒产品   C. 新购置的计算机软件也要进行病毒检测   D. 整理磁盘   13.针对数据包过滤和应用网关技术存在的缺点而引入的防火墙技术,这是(   A、包过滤型   B、应用级网关型   C、复合型防火墙   D、代理服务型   14.在每天下午5点使用计算机结束时断开终端的连接属于( A )   A、外部终端的物理安全   B、通信线的物理安全   C、偷听数据   D、网络地址欺骗   15.2003年上半年发生的较有影响的计算机及网络病毒是什么(B)   (A)SARS   (B)SQL杀手蠕虫 (D) )防火墙的特点。 2021网络安全知识竞赛题库及答案全文共9页,当前为第3页。  (C)手机病毒 2021网络安全知识竞赛题库及答案全文共9页,当前为第3页。   (D)小球病毒   16.SQL 杀手蠕虫病毒发作的特征是什么(A)   (A)大量消耗网络带宽   (B)攻击个人PC终端   (C)破坏PC游戏程序   (D)攻击手机网络   17.当今IT 的发展与安全投入,安全意识和安全手段之间形成(B)   (A)安全风险屏障   (B)安全风险缺口   (C)管理方式的变革   (D)管理方式的缺口   18.我国的计算机年犯罪率的增长是(C)   (A)10%   (B)160%   (C)60%   (D)300%   19.信息安全风险缺口是指(A)   (A)IT 的发展与安全投入,安全意识和安全手段的不平衡   (B)信息化中,信息不足产生的漏洞   (C)计算机网络运行,维护的漏洞   (D)计算中心的火灾隐患   20.信息网络安全的第一个时代(B)   (A)九十年代中叶   (B)九十年代中叶前   (C)世纪之交 2021网络安全知识竞赛题库及答案全文共9页,当前为第4页。  (D)专网时代 2021网络安全知识竞赛题库及答案全文共9页,当前为第4页。   21.信息网络安全的第三个时代(A)   (A)主机时代, 专网时代, 多网合一时代   (B)主机时代, PC机时代, 网络时代   (C)PC机时代,网络时代,信息时代   (D)2001年,2002年,2003年   22.信息网络安全的第二个时代(A)   (A)专网时代   (B)九十年代中叶前   (
单项选择题 1.使网络服务器中充满着大量要求回复的信息,消耗带宽,导致网络或系统停止正常服 务,这属于什么攻击类型? 〔A〕 A、拒绝服务 B、文件共享 C、BIND漏洞 D、远程过程调用 2.为了防御网络监听,最常用的方法是 (B) A、采用物理传输〔非网络〕 B、信息加密 C、无线网 D、使用专线传输 3.向有限的空间输入超长的字符串是哪一种攻击手段?〔A〕 A、缓冲区溢出; B、网络监听 C、拒绝服务 D、IP欺骗 4.主要用于加密机制的协议是(D) A、HTTP B、FTP C、TELNET D、SSL 5.用户收到了一封可疑的电子邮件,要求用户提供银行账户及密码,这是属于何种攻击手 段? (B) A、缓存溢出攻击; B、钓鱼攻击 C、暗门攻击; D、DDOS攻击 6.Windows NT 和Windows 2000系统能设置为在几次无效登录锁定帐号,这可以防止(B) A、木马; B、暴力攻击; C、IP欺骗; D、缓存溢出攻击 7.在以下认证方式中,最常用的认证方式是:(A) A基于账户名/口令认证 B基于摘要算法认证 ; C基于PKI认证 ; D基于数据库认证 8.以下哪项不属于防止口令猜测的措施? (B) A、严格限定从一个给定的终端进行非法认证的次数; B、确保口令不在终端上再现; C、防止用户使用太短的口令; D、使用机器产生的口令 9.以下不属于系统安全的技术是(B) A、防火墙 B、加密狗 C、认证 D、防病毒 10.抵御电子邮箱入侵措施中,不正确的选项是〔 D 〕 A、不用生日做密码 B、不要使用少于5位的密码 C、不要使用纯数字 D、自己做服务器 11.不属于常见的危险密码是〔 D 〕 A、跟用户名相同的密码 B、使用生日作为密码 C、只有4位数的密码 D、10位的综合型密码 12.不属于电脑病毒防治的策略的是〔 D 〕 A. 确认您手头常备一张真正"干净"的引导盘 B. 及时、可靠升级反病毒产品 C. 新购置的电脑软件也要进行病毒检测 D. 整理磁盘 13.针对数据包过滤和应用网关技术存在的缺点而引入的防火墙技术,这是〔 〕防火墙的特点。(D) A、包过滤型 B、应用级网关型 C、复合型防火墙 D、代理服务型 14.在每天下午5点使用电脑结束时断开终端的连接属于〔 A 〕 A、外部终端的物理安全 B、通信线的物理安全 C、窃听数据 D、网络地址欺骗 15.2003年上半年发生的较有影响的电脑及网络病毒是什么(B) (A)SARS (B)SQL杀手蠕虫 (C) 病毒 (D)小球病毒 16.SQL 杀手蠕虫病毒发作的特征是什么(A) (A)大量消耗网络带宽 (B)攻击个人PC终端 (C)破坏PC游戏程序 (D)攻击 网络 17.当今IT 的发展与安全投入,安全意识和安全手段之间形成(B) (A)安全风险屏障 (B)安全风险缺口 (C)管理方式的变革 (D)管理方式的缺口 18.我国的电脑年犯罪率的增长是(C) (A)10% (B)160% (C)60% (D)300% 19.信息安全风险缺口是指(A) (A)IT 的发展与安全投入,安全意识和安全手段的不平衡 (B)信息化中,信息不足产生的漏洞 (C)电脑网络运行,维护的漏洞 (D)计算中心的火灾隐患 20.信息网络安全的第一个时代(B) (A)九十年代中叶 (B)九十年代中叶前 (C)世纪之交 (D)专网时代 21.信息网络安全的第三个时代(A) (A)主机时代, 专网时代, 多网合一时代 (B)主机时代, PC机时代, 网络时代 (C)PC机时代,网络时代,信息时代 (D)2001年,2002年,2003年 22.信息网络安全的第二个时代(A) (A)专网时代 (B)九十年代中叶前 (C)世纪之交 23.网络安全在多网合一时代的脆弱性表达在(C) (A)网络的脆弱性 (B)软件的脆弱性 (C)管理的脆弱性 (D)应用的脆弱性 24.人对网络的依赖性最高的时代(C) (A)专网时代 (B)PC时代 (C)多网合一时代 (D)主机时代 25.网络攻击与防御处于不对称状态是因为(C) (A)管理的脆弱性 (B)应用的脆弱性 (C)网络软,硬件的复杂性 (D)软件的脆弱性 26.网络攻击的种类(A) (A)物理攻击,语法攻击,语义攻击 (B)黑客攻击,病毒攻击 (C)硬件攻击,软件攻击 (D)物理攻击,黑客攻击,病毒攻击 27.语义攻击利用的是(A) (A)信息内容的含义 (B)病毒对软件攻击 (C)黑客对系统攻击 (D)黑客和病毒的攻击 28.1995年之后信息网络安全问题就是(A) (A)风险管理 (B)访问控制 (C)消除风险 (D)回避风险 29.风险评估的三个要素(D) (A)政策,结构和技术 (B)组织,技术和信息 (C)硬件,软件和人 (D)
Serv-U File Server 是最好用的 FTP 服务器之一了。Serv-U™ – Windows平台的FTP服务器软件Serv-U 是目前众多的 FTP 服务器软件之一。通过使用Serv-U,用户能够将任何一台PC 设置成一个FTP 服务器,这样,用户或其他使用者就能够使用FTP 协议,通过在同一网络上的任何一台PC与FTP 服务器连接,进行文件或目录的复制,移动,创建,和删除等。 Serv-U File Server 15.1 中文版 这里提到的FTP 协议是专门被用来规定计算机之间进行文件传输的标准和规则,正是因为有了像FTP 这样的专门协议,才使得人们能够通过不同类型的计算机,使用不同类型的操作系统,对不同类型的文件进行相互传递。 Serv-U File Server 功能 符合Windows 标准的用户界面友好亲切,易于掌握。 支持实时的多用户连接,支持匿名用户的访问; 通过限制同一时间最大的用户访问人数确保PC的正常运转。 安全性能出众。在目录和文件层次都可以设置安全防范措施。 能够为不同用户提供不同设置,支持分组管理数量众多的用户。 可以基于IP对用户授予或拒绝访问权限。 支持文件上传和下载过程中的断点续传。 支持拥有多个IP 地址的多宿主站点。 能够设置上传和下载的比率,硬盘空间配额,网络使用带宽等,从而能够保证用户有限的资源不被大量的FTP访问用户所消耗。 可作为系统服务后台运行。 可自用设置在用户登录或退出时的显示信息,支持具有UNIX 风格的外部链接。 Serv-U File Server 架设 用Serv-U架设个人FTP,其实并没有技术难度。Serv-U支持所有版本的Windows操作系统,可以设定多个FTP服务器,可以限定登录用户的权限、登录目录及服务器空间大小,功能非常完善。以下以Serv-U汉化版为例,讲架设个人FTP的具体步骤。 首先下载安装Serv-U,运行,将出现“设置向导”窗口,跟随着这个向导的指引,进行操作。 1. 设置Serv-U的IP地址与域名 一路单击“下一步”跳过系统提示信息,来到“您的IP地址”窗口(如图1),这里要求输入本机的IP地址。 如果你的电脑有固定的IP地址,那就直接输入;如果你只有动态IP(例如拨号用户),那该处请留空,Serv-U在运行时会自动确定你的IP地址。 下一步,进行“域名”设定。这个域名只是用来标识该FTP域,没有特殊的含义,比如输入“ftp.wxxi520.com”。 接下来的“系统服务”选项必须选“是”,这样当你的电脑一启动,服务器也会跟着开始运行。 2.设置匿名登录 匿名访问就是允许用户以Anonymous为用户名,无需特定密码即可连接服务器并拷贝文件。如果你不想让陌生人随意进入你的FTP服务器,或想成立VIP会员区,就应该在“匿名账号”窗口中选“否”,这样就只有经过你许可的用户才能登录该FTP。鉴于匿名登录尚有一定的实用需求。 之后就要为匿名账户指定FTP上传或下载的主目录,这是匿名用户登录到你的FTP服务器后看到的目录。设定后,向导还会继续询问你是否将匿名用户锁定于此目录中,从安全的角度考虑,建议选“是”。这样匿名登录的用户将只能访问你指定的主目录及以下的各级子目录,而不能访问上级目录,便于保证硬盘上其他文件的安全。 3.创建新账户 除了匿名用户,一般还需要建立有密码的专用账号,也就是说可以让指定用户以专门的账号和密码访问你的服务器,这样做适用于实行会员制下载或只让好友访问。在“命名的账号”窗口中将“创建命名的账号吗”选为“是”,进入“账号名称”设置,填入你制定的账号名称,而后在“账号密码”窗口输入该账号的密码。 单击“下一步”,会要求你指定FTP主目录,并询问是否将用户锁定于主目录中,选“是”,作用与匿名账户设定基本相同,不再赘述。 紧接着要设置该账户的远程管理员权限,分为“无权限”、“组管理员”、“域管理员”、“只读管理员”和“系统管理员”五种选项,每项的权限各不相同,可根据具体情况进行选择。 至此,我们已拥有了一个域——ftp.wxxi520.com及两个用户——Anonymous和wxxi520。点击“完成”退出向导,稍等片刻Serv-U软件主界面将自动弹出,还需要在此进行一些管理员设置。 4.管理员设置 每个Serv-U引擎都能用来运行多个虚拟的FTP服务器,而虚拟的FTP服务器就称为“域”。 对FTP服务器来说,建立多个域是非常有用的,每个域都有各自的用户、组和相关的设置。以下就是管理器界面上必要的各项设置。 首先点击窗体左方的“本地服务器”,勾选右边的“自动开始(系统服务)”。 选择左方的“域→活动”,这里记载了该域下所有用户的活动情况,是非常重要的监控数据。 “域→组”:在此可自建一些用户组,把各类用户归到相应的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

符华-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值