linux操作系统基础总结

引言

本文仅对linux系统的常用到的一些命令进行分类总结,以便忘记时快速查找,更多的命令和相关参数请查看help。

一、文件目录管理

  1. 显示文件和目录。

    ls / #显示根目录下的文件和目录
    参数:
    -a:  显示所有文件
    -l:  详细显示文件和文件夹(默认以文件名排序)
    -lt: 显示以文件修改时间排序
    -ltu: 显示访问时间且以访问时间排序
    -lu:  显示以文件名排序
    -ltr: 显示以修改时间列出文件和文件夹详细信息
    
    stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。
    -L:支持符号连接; 
    -f:显示文件系统状态而非文件状态; 
    -t:以简洁方式输出信息; 
    --help:显示指令的帮助信息; 
    --version:显示指令的版本信息。
    
  2. 文件和目录操作

    ln -s file1 lnk1  #创建一个指向文件或目录的软链接
    ln file1 lnk1     #创建一个指向文件或目录的物理链接
    
    touch 1.txt #创建文件1.txt
    echo 'hello' > 1.txt #向1.txt文件写入'hello'
    mkdir 1     #创建目录1
    
    rm 1.txt    #删除1.txt文件:-f强制删除
    rm -r 1     #删除目录1并同时删除其内容
    rmdir 1     #删除1目录
    
    mv dir1 new_dir    #重命名/移动一个目录
    
    cp file1 file2     #复制一个文件,复制file1为file2
    cp dir/* .         #复制一个目录下的所有文件到当前工作目录
    cp -a dir1 dir2    #复制一个目录
    
  3. 文件内容查看

    cat file1      #从第一个字节开始正向查看文件的内容
    cat m1 m2 > file #将文件ml和m2合并后写入文件file中
    tac file1      #从最后一行开始反向查看一个文件的内容
    more file1     #查看一个长文件的内容,可翻页
    less file1     #类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
    head -2 file1  #查看一个文件的前两行
    tail -2 file1  #查看一个文件的最后两行
    tail -f /var/log/messages   #实时查看被添加到一个文件中的内容
    
  4. 文件编辑和过滤

    vim有编辑和命令两种模式,打开默认命令模式。

    • 进入编辑模式

      i, I 进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』
      a, A 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』
      o, O 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!
      r, R 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止。

    • 进入命令模式。

      Esc键。

    • 查找文件内容。

      在命令模式下输入:/待查询字符

    • 退出vim。

      :w 将编辑过的文本保存
      :w! 若文本属性为只读时,强制保存
      :q 退出vim
      :q! 不管编辑或未编辑都不保存退出
      :wq 保存,退出
      :e! 将文档还原成最原始状态
      ZZ 若文档没有改动,则不储存离开,若文档改动过,则储存后离开,等同于**:wq**

    sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用。

    • sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:
    1. 每次仅读取一行内容;
    2. 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
    3. 将执行结果输出。

    当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

    • 命令格式

      sed [选项] [脚本命令] 文件名

      [address]s/pattern/replacement/flags其中,address 表示指定要操作的具体行,pattern 指的是需要替换的内容,replacement 指的是要替换的新内容。
      eg:sed 's/test/trial/2' test.txt

      详细命令

    grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本。

    grep “match_pattern” file_name
    使用正则表达式 -E 选项:grep -E "[1-9]+" 或 egrep "[1-9]+"
    统计文件或者文本中包含匹配字符串的行数 -c 选项:grep -c "text" file_name

  5. 文件查找

    find / -name file1      #从 '/' 开始进入根文件系统搜索文件和目录
    find / -user user1      #搜索属于用户 'user1' 的文件和目录
    find /home/user1 -name \*.bin        #在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
    find /usr/bin -type f -atime +100    #搜索在过去100天内未被访问过的执行文件
    find /usr/bin -type f -mtime -10     #搜索在10天内被创建或者修改过的文件
    find /usr/bin -type f -ctime -10     #文件数据元(例如权限等)最后一次修改时间
    find / -name \*.rpm -exec chmod 755 '{}' \;      #搜索以 '.rpm' 结尾的文件并定义其权限
    find . -type f -perm 777                 #当前目录下搜索出权限为777的文件
    find . -type f -name "*.php" ! -perm 644 #找出当前目录下权限不是644的php文件
    
  6. 权限控制
    u(User),即文件或目录的拥有者;
    g(Group),即文件或目录的所属群组;
    o(Other),除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
    a(All),即全部的用户,包含拥有者,所属群组以及其他用户;
    权限:r(4)可读,w(2)可写,x(1)可执行

    chmod u+rwx,g+rw,o+r 1.txt #设置1.txt文件所有者可读写可执行,同组用户可读写,其他用户可读,-为去除权限
    chmod 764 1.txt    #同上
    chmod 764 1/ -R    #递归设置权限即1目录及目录下所有文件权限为764
    
    chown user1 file1  #改变一个文件的所有人属性
    chown -R user1 directory1    #改变一个目录的所有人属性并同时改变改目录下所有文件的属性
    chown user1:group1 file1     #改变一个文件的所有人和群组属性
    
    chgrp group1 file1 #改变文件的群组
    
  7. 属性更改

    ​ 使用 “+” 设置权限,使用 “-” 用于取消

    chattr +a file1  #只允许以追加方式读写文件
    chattr +c file1  #允许这个文件能被内核自动压缩/解压
    chattr +d file1  #在进行文件系统备份时,dump程序将忽略这个文件
    chattr +i file1  #设置成不可变的文件,不能被删除、修改、重命名或者链接
    chattr +s file1  #允许一个文件被安全地删除
    chattr +S file1  #一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
    chattr +u file1  #若文件被删除,系统会允许你在以后恢复这个被删除的文件
    lsattr           #显示特殊的属性
    
    
  8. 文件打包压缩

    解压和压缩:bzip2,gzip,rar,zip
    bunzip2 file1.bz2   #解压一个叫做 'file1.bz2'的文件bzip2
    bzip2 file1         #压缩一个叫做 'file1' 的文件
    gunzip file1.gz     #解压一个叫做 'file1.gz'的文件gzip
    gzip file1          #压缩一个叫做 'file1'的文件
    gzip -9 file1       #最大程度压缩
    rar a file1.rar test_file          #创建一个叫做 'file1.rar' 的包
    rar a file1.rar file1 file2 dir1   #同时压缩 'file1', 'file2' 以及目录 'dir1'
    rar x file1.rar                    #解压rar包
    unrar x file1.rar                  #解压rar包
    zip file1.zip file1                #创建一个zip格式的压缩包
    zip -r file1.zip file1 file2 dir1  #将几个文件和目录同时压缩成一个zip格式的压缩包
    unzip file1.zip                    #解压一个zip格式压缩包
    打包和解包:tar
    -z : 使用 gzip 来压缩和解压文件
    -v : --verbose 详细的列出处理的文件
    -f : --file=ARCHIVE 使用档案文件或设备,这个选项通常是必选的
    -c : --create 创建一个新的归档(压缩包)
    -x : 从压缩包中解出文件
    tar -cvf archive.tar file1   #创建一个非压缩的 tarball
    tar -tf archive.tar    #显示一个包中的内容
    tar -xvf archive.tar   #释放一个包
    tar -jcvf archive.tar.bz2 dir1   #创建一个bzip2格式的压缩包
    tar -jxvf archive.tar.bz2        #解压一个bzip2格式的压缩包
    tar -zcvf archive.tar.gz dir1    #创建一个gzip格式的压缩包
    tar -zxvf archive.tar.gz         #解压一个gzip格式的压缩包
    

二、网络配置

1.网卡

ifconfig eth0    #显示一个以太网卡的配置
ifup eth0        #启用一个 'eth0' 网络设备
ifdown eth0      #禁用一个 'eth0' 网络设备
ifconfig eth0 192.168.1.1 netmask 255.255.255.0     #控制IP地址
ifconfig eth0 promisc     #设置 'eth0' 成混杂模式以嗅探数据包 (sniffing)
dhclient eth0             #以dhcp模式启用 'eth0'
网络配置文件:
`/etc/network/interfaces` Ubuntu
`/etc/sysconfig/network-scripts/` Centos
重启网络服务:
`service netword restart`
`/etc/init.d/networking restart`
  1. 路由表
route -n    #查看路由表
route add -net 0/0 gw IP_Gateway    #配置默认网关
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 #配置静态路由到达网络'192.168.0.0/16'
route del 0/0 gw IP_gateway         #删除静态路由
  1. 其他
hostname                   #查看机器名
host www.example.com       #把一个主机名解析到一个网际地址或把一个网际地址解析到一个主机名。
nslookup www.example.com   #用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
ip link show               #查看网卡信息
mii-tool                   #用于查看、管理介质的网络接口的状态
ethtool                    #用于查询和设置网卡配置
netstat -tupl              #用于显示TCP/UDP的状态信息
tcpdump tcp port 80        #显示所有http协议的流量 

三、系统管理

  1. 系统安全

    last命令:
    last命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该文件的内容记录的登入系统的用户名单全部显示出来。
    lastb命令:
    lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。
    选项:
    -a:把从何处登入系统的主机名称或ip地址,显示在最后一行; 
    -d:将IP地址转换成主机名称; 
    -f <记录文件>:指定记录文件。 
    -n <显示列数>或-<显示列数>:设置列出名单的显示列数; 
    -R:不显示登入系统的主机名称或IP地址; 
    -x:显示系统关机,重新开机,以及执行等级的改变等信息。
    
    w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
    选项:
    -h:不打印头信息; 
    -u:当显示当前进程和cpu时间时忽略用户名; 
    -s:使用短输出格式; 
    -f:显示用户从哪登录; 
    -V:显示版本信息。
    
  2. 进程管理

    ps:用于报告当前系统的进程状态
    ps -aux  
    ps -ef
    ps -aux | less 
    -a: 显示所有程序
    -u: 以用户为主的格式来显示程序状况
    -e: 显示所有程序
    
    pidof命令:用于查找指定名称的进程的进程号id号。
    pidof nginx 
    pidof crond 
    pidof init 1
    选项:
    -s:仅返回一个进程号; 
    -c:仅显示具有相同"root"目录的进程; 
    -x:显示由脚本开启的进程; 
    -o:指定不显示的进程ID。
    
  3. 系统检测

    lsof命令:用于查看进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)lsof  filename    #显示打开指定文件的所有进程
    lsof -i :22       #查看22端口现在运行的情况 
    lsof -a -u root -d txt  #查看所属root用户进程所打开的文件类型为txt的文件
    
    mpstat命令:主要用于多CPU环境下,它显示各个可用CPU的状态信息。
    这些信息存放在/proc/stat文件中。在多CPUS系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
    mpstat -P ALL 1 #查看所有CPU状态,每秒刷新一次
    
    top命令:可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
    选项:
    h:显示帮助画面,给出一些简短的命令总结说明; 
    k:终止一个进程; 
    i:忽略闲置和僵死进程,这是一个开关式命令; 
    q:退出程序; 
    r:重新安排一个进程的优先级别; 
    S:切换到累计模式; 
    s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; 
    f或者F:从当前显示中添加或者删除项目; 
    o或者O:改变显示项目的顺序;
    l:切换显示平均负载和启动时间信息; 
    m:切换显示内存信息; 
    t:切换显示进程和CPU状态信息; 
    c:切换显示命令名称和完整命令行; 
    M:根据驻留内存大小进行排序; 
    P:根据CPU使用百分比大小进行排序; 
    T:根据时间/累计时间进行排序; 
    w:将当前设置写入~/.toprc文件
    
    netstat命令:用来打印Linux中网络系统的状态信息,可得知整个Linux系统的网络情况。
    netstat -an | grep ':80' #找出运行在指定端口的进程
    netstat -pt              #在netstat输出中显示 PID 和进程名称 
    netstat -anpo | grep "php-cgi" | wc -l #查看phpcgi进程数
    
    

四、内核模块

  1. 系统信息

    arch      #显示机器的处理器架构(1)
    uname -m  #显示机器的处理器架构(2)
    uname -r  #显示正在使用的内核版本
    dmidecode -q          #显示硬件系统部件 - (SMBIOS / DMI)
    hdparm -i /dev/hda    #罗列一个磁盘的架构特性
    hdparm -tT /dev/sda   #在磁盘上执行测试性读取操作
    选项:
    -a或--all:显示全部的信息; 
    -m或--machine:显示电脑类型; 
    -n或-nodename:显示在网络上的主机名称;
    -r或--release:显示操作系统的发行编号; 
    -s或--sysname:显示操作系统名称;
    -v:显示操作系统的版本; 
    -p或--processor:输出处理器类型或"unknown"; 
    -i或--hardware-platform:输出硬件平台或"unknown";
    -o或--operating-system:输出操作系统名称; 
    --help:显示帮助; 
    --version:显示版本信息。
    
    cat /proc/cpuinfo     #显示CPU info的信息
    cat /proc/interrupts  #显示中断
    cat /proc/meminfo     #校验内存使用
    cat /proc/swaps       #显示哪些swap被使用
    cat /proc/version     #显示内核的版本
    cat /proc/net/dev     #显示网络适配器及统计
    cat /proc/mounts      #显示已加载的文件系统
    lspci -tv   #罗列PCI设备
    lsusb -tv   #显示USB设备
    
  2. 关机 (系统的关机、重启以及登出 )

    shutdown -h now   #关闭系统(1)
    init 0            #关闭系统(2)
    telinit 0         #关闭系统(3)
    
    shutdown -h hours:minutes &  #按预定时间关闭系统
    shutdown -c                  #取消按预定时间关闭系统
    shutdown -r now              #重启(1)
    reboot                       #重启(2)
    logout                       #注销
    

五、用户和群组

  1. 用户群组操作(添加、删除、更改权限等)

    groupadd group_name   #创建一个新用户组
    groupdel group_name   #删除一个用户组
    groupmod -n new_group_name old_group_name   #重命名一个用户组
    useradd -c "Name Surname" -g admin -d /home/user1 -s /bin/bash user1 #创建一个属于 "admin" 用户组的用户
    useradd user1      #创建一个新用户
    userdel -r user1   #删除一个用户 ( '-r' 排除主目录)
    usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1   #修改用户属性
    
    gpasswd -a userName groupName  #添加用户到组
    gpasswd -d userName groupName  #从组中删除用户
    groups userName                #查看某个用户属于哪个组
    
    passwd         #修改口令
    passwd user1   #修改一个用户的口令 (只允许root执行)
    chage -E 2005-12-31 user1    #设置用户口令的失效期限
    pwck     #检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户
    grpck    #检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组
    newgrp group_name     #登陆进一个新的群组以改变新创建文件的预设群组
    
  2. 账户配置文件

    etc/passwdetc/shadowetc/group
    注册名:
    口令:
    用户标识号:
    组标识号:
    用户名:
    用户主目录:
    命令解释程序
    账户名称:
    加密后的密码:
    最近改动密码的日期:
    密码不可被变更的天数:
    密码需要重新变更的天数:
    密码过期预警天数:
    密码过期的宽恕时间:
    账号失效日期:
    保留:
    [组名]:
    [口令]:
    [组标识号]:
    [组内用户列表]
    默认权限644;passwd不保存密码而是保存x默认权限640;shadow保存加密后的密码;
    密码存储格式: i d id idsalt$encrypted
    id:哈希算法
    id为1时,采用md5进行加密;
    id为5时,采用SHA256进行加密;
    id为6时,采用SHA512进行加密。
    salt:加密的盐值
    encrypted:加密后的密码特征值
    用户组配置文件,用户组的所有信息都存放在此文件中。
    root:x:0:
    daemon:x:1:

六、常用命令组合

  1. awk

    AWK是一种处理文本文件的语言,是一个强大的文本分析工具。

    之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。

    awk [选项参数] 'script' var=value file(s)awk [选项参数] -f scriptfile var=value file(s)
    
    实例:
    awk '{[pattern] action}' {filenames}   #行匹配语句 awk '' 只能用单引号
    awk '{print $1,$4}' log.txt            #对log.txt文件内容每行按空格或TAB分割,输出文本中的1、4项
    
    用户查找:
    awk -F : '$3==0{print $1}' /etc/passwd #uid为0的用户查询
    cat /etc/passwd | awk -F : '{if($3==0||$3>=500){print}}'  #看系统中存在的可用账户
    awk -F: '($2=="!!") {print $1}' /etc/shadow   #查看系统中是否存在空口令账户
    
    history查询:
    cat ~/.bash_history
    history | grep '2017-2-12' #根据时间查看操作行为
    history | tail -n 5 #显示最近5次执行的命令
    history -c          #清空history历史
    
  2. 搜索webshell

    find /site/* -type f -name "*.jsp" |xargs grep "exec("
    find /site/* -type f -name "*.php" |xargs grep "eval("
    find /site/* -type f -name "*.asp" |xargs grep "execute("
    find /site/* -type f -name "*.aspx" |xargs grep "eval("
    #检测加密后的
    find /site/* -type f -name "*.php" |xargs grep "base64_decode"
    #检测拼接的
    find /site/* -type f -name "*.php" |xargs grep "@$	
    
  3. 搜索注入漏洞记录

    #注入漏洞记录
    grep -i select%20 *.log  | grep 500 | grep -i \.php 
    #查找后缀为".log" 文件,搜索关键字为"select%20",筛选存在"500"的行
    grep -i sqlmap *.log 
    #sqlmap默认User-Agent是sqlmap/1.0-dev-xxxxxxx 查看存在sqlmap的行,可以发现sqlmap拖库的痕迹。
    
  4. 搜索跨站漏洞记录

    grep -i "script" *.log #查找存在script的行。
    
  5. 搜索扫描器扫描记录

    grep -i acunetix *.log  #AWVS扫描时,会发送大量含"acunetix"的数据包。
    
  6. 搜索特定时间的日志

    grep \[07/Jul/2016:24:00:* *.log #可以结合入侵时间搜索,文件修改时间不可作为依据,菜刀上就可以修改文件时间属性
    
  7. 搜索特定IP地址的日志

    grep ^192.168.1.* *.log     #搜索包含"192.168.1."字符串开头的行
    grep -v ^192.168.10.* *.log #不搜索包含"192.168.10."字符串开头的行
    #可以结合网站、网络安全策略搜索能访问网站后台、FTP服务等的IP地址。
    
  8. 其他

    搜索特定的文件
    find /路径 -mtime -3 -type f -print    #查找3天内修改的文件
    find ./ -mtime 0 -name "*.jsp"        #查找24小时内修改的jsp文件
    
    SSH登录成功IP
    grep 'Accepted' /var/log/secure | awk '{print $11}' 
    
    网络连接查看
    netstat -antlp | grep ESTABLISHED     #查看已建立TCP连接
    netstat -antlp | grep LISTEN          #查看监听的端口
    netstat -antlp | grep EST | grep bash #查看是否存在反弹bash
    lsof -u root |egrep "ESTABLISHED|SYN_SENT|LISTEN"   #查看系统中root用户外连情况
    

七、服务管理

  1. 配置服务启动状态

    chkconfig: 用于更新和查询服务的运行级别信息
    可以查看和设置系统中所有服务在各运行级别中的启动状态。
    
    查看服务的启动状态的基本用法:
    chkconfig  --list  [服务启动脚本名]	
    设置指定运行级别中服务的启动状态的用法为:
    chkconfig  --level  <运行级别列表>  <服务启动脚本名>  {on|off|reset}
    要使chkconfig能够设置某服务的启动状态,必须使用以下命令添加该服务。
    chkconfig  --add  [服务启动脚本名]
    执行以下命令将删除指定的服务,使其不再由chkconfig指令管理,将相关符号链接从/etc/rc[0-6].d目录中删除。
    chkconfig  --add  [服务启动脚本名]
    
  2. 常见守护进程

    service [守护进程名称] [start|stop|restart|status]
    /etc/init.d/守护进程名称 [start|stop|restart|status]
    

    atd:at和batch命令守护进程,用户用at命令调度的任务。batch用于在系统负荷比较低时运行批处理任务

    crond:linux下的计划任务

    httpd:WEB服务器,apache

    Lpd:打印服务器

    named:DNS服务器

    mysqld:mysql数据库引擎守护进程

    postgresql:一种SQL数据库服务器

    sendmail:邮件服务器sendmail

    smb:Samba文件共享/打印服务

    snmpd:本地简单网络管理候进程

    squid:激活代理服务器squid

    sshd:OpenSSH服务器守护进程。

    syslog:一个让系统引导时启动syslog和klogd系统日志守候进程的脚本。

    vsftpd:vsftpd服务器的守护进程。

    vncserver:VNC守护进程

    zebra:路由治理守护进程。

    apache2:apache守护进程

八、常见目录和文件

  1. 目录

    / 根目录

    /bin 存放必要的命令

    /boot 存放内核以及启动所需的文件

    /dev 存放设备文件

    /etc 存放系统的配置文件

    /home 用户文件的主目录,用户数据存放在其主目录中

    /lib 存放必要的运行库

    /mnt 存放临时的映射文件系统

    /proc 存放存储进程和系统信息

    /root 超级用户的主目录

    /sbin 存放系统管理程序

    /tmp 存放临时文件的目录

    /usr 包含一个不要修改的应用程序,命令程序文件,程序库,手册

    /var 包含系统产生的经常变化的文件

  2. 文件

    /etc/passwd

    统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读

    /etc/shadow

    linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。

    /var/log/messages(Solaris的为/var/adm/messages)

    messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。通常/var/log/messages 是在做故障诊断时首先要查看的文件。

    /var/log/cron

    该日志文件记录crontab守护进程crond所派生的子进程的动作,前面加上用 户、登录时间和PID,以及派生出的进程的动作。CMD的一个动作是cron派生出一个调度进程的常见情况。REPLACE(替换)动作记录用户对它的cron文件的更新,该文件列出了要周期性执行的任务调度。 RELOAD动作在REPLACE动作后不久发生,这意味着cron注意到一个用户的cron文件被更新而cron需要把它重新装入内存。该文件可能会查到一些反常的情况。

    /var/log/dmesg

    包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。

    /var/log/secure

    ssh登录日志会存储于/var/log/secure中,若日志中出现连续大量的登录错误信息,则可能意味着远程主机在尝试破解ssh登录口令。可以使用less /var/log/secure来查看

    /var/log/lastlog

    该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成。 在每次用户登录时被查询,该文件是二进制文件,需要使用 lastlog命令查看。

    /var/log/wtmp

    该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常 运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端 tty或时间显示相应的记录。

九、日志分析

  1. 审计策略

    syslog/rsyslog

    系统缺省已经开启syslog/rsyslog服务,禁止关闭。系统syslog/rsyslog服务会将所有系统日志自动记录到/var/log/messages文件中。

  2. SSH登录分析

    不同的发行版Linux,其日志位置可能不一样

    RHEL/Centos:/var/log/secure

    Ubuntu/Debian:/var/log/auth.log

    #锁定攻击者IP
    #登录时间异常的IP
    grep "Accepted" /var/log/auth.log | awk '($3<="06:00"){print$11}' | sort | uniq -c | sort -rn*
    #登录频繁的IP
    grep "Accepted" /var/log/auth.log | awk '($3<="06:00"){print$11}' | sort | uniq -c | sort -rn* 
    #登录失败的IP
    grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn*
    
  3. FTP登录分析

    配置文件: /etc/vsftpd.conf可配置日志存储格式,存储位置,默认情况下会有两个文件

    /var/log/xferlog/ 主要记录FTP用户进行的一些上传下载行为

    /var/log/vsftpd.log主要记录用户的登录日志

  4. 账户管理日志

    Linux帐户管理日志常记录于/var/log/auth(/var/log/secure)文件中

    创建Group(1ance)
    Dec 7 17:17:14 root groupadd[4315]: group added to /etc/group: name=1ance, GID=10112

    创建用户(lance)
    Dec 7 17:17:54 root useradd[4322]: new user: name=lance, UID=1001, GID=1001, home=/home/lance, shell=/bin/sh, from=/dev/pts/0

    更改用户组
    Dec 7 17:21:16 root gpasswd[4333]: user lance added by root to group 1ance

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值