Shell攻略7:主机管理与安全

By | 2016年11月6日 | 阅读:263 次

主机管理与安全


  • 磁盘容量

    • 容量可用 df –disk-free; 已用 du –disk-usage
    • du
      • $ du file # 文件占用的磁盘空间(不是大文件小) – $ du -a DIR # 递归显示目录及子目录下各文件的大小
      • $ du -sh –summarize
      • $ du –exclude [“PATTERN”] DIR # 统计目录大小时排除通配符指定的文件
        • –execlude-from files.list DIR # 与rsync相同
      • 寻找目录中大文件
      • du目录会计算子目录大小
      • 先find文件类型再du排序
    • df -h
  • 登录信息

    • $ who; w; users
    • $ uptime
    • $ last; lastb
  • 命令执行时间

    • date +%s; cmd; date +%s; # 计算前后秒差值
    • $ time CMD # whereis time # /usr/bin/time比shell内置的time选项更多
      • %e : real time: 命令从执行开始到结束的时间:该子进程运行+阻塞时间
      • %U : user time: 进程在用户态中的运行时间
      • %s : sys time: 进程陷入内核态后执行系统调用的时间
    • 常见选项
      • -o times.info # –output
      • -a times.info # –append
      • -f “format”
    • time获取执行该命令的子进程的细节信息
      • %P: 进程获取CPU时间占比(User+Sys / Real)
      • %c: 进程由于时间片到被迫切换上下文环境到就绪队列的次数
      • … # man time
  • 进程监视

    • $ watch -n N -d ‘command’ # N秒为周期监视command的输出,默认2s # -d标示差异
    • 代码分析

      • ps取得命令名和cpu使用率,tail剔除第一行后追加到文件,进程阻塞
      • 以命令名为索引的关联数组存放多次检测CPU占比总和
      • %CPU字段逆序输出
  • 监视登录查找cracker

    • 日志样本:专门故意试了用户wuyin的密码,终端IP被抓到了;注意/var/log/secure中字段的列
    • 代码分析
    • 对cracker的定义: 尝试登录不止2分钟,且都因密码错误登录失败
    • Part1
      • 登录认证日志中grep “invalid”登录不成功行导入/tmp/valid.$$.log
      • 再筛选Failed password的行,awk获取倒数第6列:登录的用户名列表:users
      • 在valid.$$.log中正则筛选IP生成IP列表:ip_list
    • Part2
      • 迭代IP和迭代users的原因:不同的IP可能会尝试同一个用户
      • 取到单个用户多次ip记录,cut时间戳后存于$$.time;
      • 获取第一次和最近一次登录的纪元秒差值,大于120s认为客户不正常
        • 提取ip,行数即尝试次数,hosts映射ip为主机名
    • Ps:这个脚本很精简,使用代理就能绕过,不过对于暴力破击的尝试可以检测到后写入crontab将ip封禁
  • 系统中用户的活跃时间

    • 代码分析
    • 将会话日志log提取并剔除最后2行(样本), cut第一列取得不重复的用户名列表users_name.$$
    • 循环读取每个user开头的日志行,user.$$存放各用户的会话信息
      • 循环读取user.$$行awk提取在线时长time_field并tr剔除'()’
      • 指定’:’分割并转换为总秒数
    • 按登录次数逆序输出
    • 日志样本:unknown是因为我新建了很多用户使用后userdel了
  • 电源管理

    • $ powertop –html=htmlfile.html –time=seconds # 测试后生成报表

    • 有这样的云盾,心疼阿里云的服务器一秒钟然后哈哈哈哈;参数参考:PowerTop

  • 磁盘I/O

    • $ iotop -o –only # 仅输出在进行I/O活动的进程
    • $ iotop -n N -b # –batch 统计N次数据成批处理
    • $ iotop -p ‘pidof CMD’ # 监视PID的进程I/O活动
    • … # man iotop

LAST:Shell就先酱紫吧 还有很多OS和算法题没刷,希望再接再厉~

3 thoughts on “Shell攻略7:主机管理与安全

    1. wuYin Post author

      先看一遍Linux基础篇再看Shell就简单啦
      为了方便说明攻略5里 查找页面上无效链接脚本 才故意在导航栏加的这2个选项

Comments are closed.