zoukankan      html  css  js  c++  java
  • Shell笔记——系统管理

    安装w3m提示找不到软件包

    # 先执行以下代码,然后重新执行安装命令
    sudo yum install -y epel-release

    释放系统缓存 来源

    sync
    echo 3 > /proc/sys/vm/drop_caches

    记录文件及目录访问

    # 安装工具
    sudo yum install inotify-tools.x86_64
    
    nohup inotifywait -m -r -e access,create,move,delete /home/vince --timefmt '%d/%m/%H:%M' --format '%T %w %f %e' &
    
    <<COMMENT
    输出
    Setting up watches. Beware: since -r was given, this may take a while!
    Watches established.
    09/08/10:41 /home/aurora/ ACCESS,ISDIR
    09/08/10:41 /home/aurora/ ACCESS,ISDIR
    09/08/10:41 /home/aurora/ sas CREATE
    09/08/10:41 /home/aurora/ ACCESS,ISDIR
    09/08/10:41 /home/aurora/ ACCESS,ISDIR
    09/08/10:41 /home/aurora/ ACCESS,ISDIR
    09/08/10:41 /home/aurora/ ACCESS,ISDIR
    09/08/10:41 /home/aurora/ ACCESS,ISDIR
    09/08/10:41 /home/aurora/ sas DELETE
    COMMENT

    终止掉正在连接的某个用户

    sudo pkill -kill -t pts/0

    pam登陆次数过多限制

    # 远程ssh,第一行添加
    /etc/pam.d/sshd
    
    # 终端,第一行添加
    /etc/pam.d/login
    auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200
    
    # 查看用户错误登陆次数,使用pam_tally2
    pam_tally --user tom
    pam_tally2 --user tom
    
    # 重置用户错误登陆次数
    pam_tally2 --user tom --reset
    

      

    收集登录用户信息

    # 列出当前登录主机的用户列表
    users
    
    # 查看系统运行了多长时间
    uptime

    watch 监视命令输出

    # 默认间隔时间2秒
    watch 'ls'
    
    watch -n 5 'ls -l'

    查看某个命令包含在哪个包下

    yum provides */nslookup
    
    apt search ifconfig

    向终端中所有的当前登录用户发送广播消息

    cat message | wall
    
    # 向指定用户发送消息
    write hz pts/1
    Hello world!
    
    # 目录/dev/pts中包含着与每一位系统终端中登录用户所对应的字符设备

    logrotate 管理日志文件

    # logrotate 的配置目录位于/etc/logrotate.d
    
    # 为自己的日志文件(比如/var/log/program.log)编写一个特定的配置
    $ cat /etc/logrotate.d/program
    /var/log/program.log {
    missingok
    notifempty
    size 30k
    compress
    weekly
    rotate 5
    create 0600 root root
    }
    
    
    # logger命令默认把日志输出到/var/log/message中
    # logger This is a test log line

    电源监视工具 powertop (需要安装)

    # 查看电量使用情况
    powertop
    
    # 生成html报表
    powertop --html

    检查磁盘及文件系统错误

    fsck /dev/sdb3

    rsync 备份系统快照

    rsync - a fast, versatile, remote (and local) file-copying tool
    
    # 将源目录复制到目的端
    rsync -avz /home/slynux/data slynux@192.168.0.6:/home/backups/data
    # -a    归档模式
    # -v    显示进度,详细内容
    # -z    传输时压缩文件
    
    # 在更新 rsync 备份时,删除不存在的文件(默认情况下, rsync 并不会在目的端删除那些在源端已不存在的文件)
    rsync -avz SOURCE DESTINATION --delete
    
    # 定期进行备份(10小时备份一次)
    crontab -e
    0 */10 * * * rsync -avz /home/code user@IP_ADDRESS:/home/backups

    弹出光盘,eject命令

    # 弹出光盘
    eject
    
    # 合上光盘
    eject -t

    录制终端

    # 录制(record)
    script -t 2> timing.log -a output.session
    
    # 回放(replay)
    scriptreplay timing.log output.session

    配置免验证登录

    1 # ssh-keygen -t rsa
    2 ssh-keygen
    3 # 修改授权文件权限 chmod 600 authorized_keys
    4 
    5 # 日志文件
    6 /var/log/secure

    配置登录提示字符

    vim /etc/motd

    /proc目录

    # /proc 是一个在内存中的伪文件系统(pseudo filesystem)。在运行时访问内核内部数据结构、改变内核设置的机制。
    # 它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
    # 在/proc下还有三个很重要的目录:net,scsi和sys。
    # 系统中每一个运行的进程在 /proc 中都有一个对应的目录。目录名和进程ID相同。

    脚本 : 监测目录变动 watchdir.sh

    #!/bin/bash
    # 文件名: watchdir.sh
    # 用途: 监视目录访问,安装inotify-tools
    path=$1
    # 将目录或文件路径作为脚本参数
    inotifywait -m -r -e access,create,move,delete $path

    脚本 : 检测入侵者 intruder_detect.sh

    #!/bin/bash
    #文件名:intruder_detect.sh
    #用途:入侵报告工具,以auth.log作为日志文件
    AUTHLOG=/var/log/auth.log
    
    if [[ -n $1 ]];
    then
        AUTHLOG=$1
        echo Using Log file : $AUTHLOG
    fi
    LOG=/tmp/valid.$$.log
    grep -v "invalid" $AUTHLOG > $LOG
    users=$(grep "Failed password" $LOG | awk '{ print $(NF-5) }' | sort | uniq)
    printf "%-5s|%-10s|%-10s|%-13s|%-33s|%s
    " "Sr#" "User" "Attempts" "IP address" "Host_Mapping" "Time range"
    ucount=0;
    ip_list="$(egrep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+" $LOG | sort | uniq)"
    for ip in $ip_list;
    do
        grep $ip $LOG > /tmp/temp.$$.log
    for user in $users;
    do
        grep $user /tmp/temp.$$.log> /tmp/$$.log
        cut -c-16 /tmp/$$.log > $$.time
        tstart=$(head -1 $$.time);
        start=$(date -d "$tstart" "+%s");
        tend=$(tail -1 $$.time);
    end=$(date -d "$tend" "+%s")
    limit=$(( $end - $start ))
    if [ $limit -gt 120 ];
    then
        let ucount++;
        IP=$(egrep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+" /tmp/$$.log | head -1 );
        TIME_RANGE="$tstart-->$tend"
        ATTEMPTS=$(cat /tmp/$$.log|wc -l);
        HOST=$(host $IP | awk '{ print $NF }' )
        printf "%-5s|%-10s|%-10s|%-10s|%-33s|%-s
    " "$ucount" "$user" "$ATTEMPTS" "$IP" "$HOST" "$TIME_RANGE";
    fi
    done
    done
    rm/tmp/valid.$$.log/tmp/$$.log $$.time/tmp/temp.$$.log 2>/dev/null

    脚本 : 找出系统中用户的活跃时段 active_users.sh

    #!/bin/bash
    #用户名: active_users.sh
    #用途:查找活跃用户
    log=/var/log/wtmp
    if [[ -n $1 ]];
    then
    log=$1
    fi
    printf "%-4s %-10s %-10s %-6s %-8s
    " "Rank" "User" "Start" "Logins" "Usage hours"
    last -f $log | head -n -2 > /tmp/ulog.$$
    cat /tmp/ulog.$$ | cut -d' ' -f1 | sort | uniq> /tmp/users.$$
    (
    while read user;
    do
    grep ^$user /tmp/ulog.$$ > /tmp/user.$$
    minutes=0
    while read t
    do
    s=$(echo $t | awk -F: '{ print ($1 * 60) + $2 }')
    let minutes=minutes+s
    done< <(cat /tmp/user.$$ | awk '{ print $NF }' | tr -d ')(')
    firstlog=$(tail -n 1 /tmp/user.$$ | awk '{ print $5,$6 }')
    nlogins=$(cat /tmp/user.$$ | wc -l)
    hours=$(echo "$minutes / 60.0" | bc)
    printf "%-10s %-10s %-6s %-8s
    " $user "$firstlog" $nlogins $hours
    done< /tmp/users.$$
    ) | sort -nrk 4 | awk '{ printf("%-4s %s
    ", NR, $0) }'
    rm /tmp/users.$$ /tmp/user.$$ /tmp/ulog.$$
  • 相关阅读:
    《信息安全技术》实验四 木马及远程控制技术
    2017-2018-1 20155211 《信息安全系统设计基础》第9周学习总结
    linux 下c语言的pwd 实现
    2017-2018-1 20155211 实验三 实时系统
    信息安全技术 实验三 数字证书应用
    2017-2018-1 20155211 《信息安全系统设计基础》第八周学习总结
    2017-2018-1 20155211 《信息安全系统设计基础》第7周学习总结
    2017-2018-1  20155235 20155211 实验二 固件程序设计
    20155211实验2 Windows口令破解
    恢复旋转排序数组&&旋转字符串
  • 原文地址:https://www.cnblogs.com/Vince-blogs/p/9310593.html
Copyright © 2011-2022 走看看