linux history 命令 && ssh log

history命令可以查看最近Linux中执行的命令。

一、history常用命令

1

2

3

4

history n# 只显示最近的 n 条历史记录

history -c# 清除缓存区中的历史记录

history -w# 将缓存区的历史记录保存到文件

history -d N# 删除第 N 条历史记录

比如# 查看最近的5条命令

1

2

3

4

5

6

# history 5

  1  bash

  2  ls

  3  vim .bash_history

  4  cat .bash_history

  5  history

二、如果不想被记录命令,可以在命令前加空格。

如果不管用,请查看下环境变量 HISTCONTROL 是否包含 ignorespace,配置方法如下#

1

# echo HISTCONTROL=ignorespace >> ~/.bashrc# source ~/.bashrc

配置完成之后随便输入加空格的命令,查看是否被记录到历史中#

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# echo 1

1

# echo 2

2

# echo 3

3

#  echo 4

4

#  echo 5

5

# echo 6

6

# echo 7

7

# echo 8

8

查看历史记录#

1

2

3

4

5

6

7

8

9

10

11

# history 10

  6  echo HISTCONTROL=ignorespace >> ~/.bashrc

  7  source ~/.bashrc

  8  echo 1

  9  echo 2

  10  echo 3

  11  echo 6

  12  echo 7

  13  echo 8

  14  history head -10

  15  history 10

注意# echo 4,echo 5执行前加了空格。所以没有被记录下来。

三、还可以直接禁用历史记录

1

# echo "export HISTSIZE=0" >> ~/.bashrc# echo "export HISTFILESIZE=0" >> ~/.bashrc# source ~/.bashrc

四、环境变量配置文件的选择

上面使用的是~/.bashrc文件,还可以选择/etc/profile、/etc/bashrc(某些系统无此文件,如ubuntu,对应的有/etc/bash.bashrc )、~/.profile、~/.bash_profile等文件。

这些文件的使用区别:

如果为了一完成配置信息就能使用,即打开一个新的shell就能使用,不想重启系统,那么在在/etc/bashrc (/etc/bash.bashrc) 或者 ~/.bashrc 中添加即可;

如果是在/etc/profile 或者 ~/.profile 或者~/.bash_profile 文件中添加配置信息。那么就只能重启之后再生效了。

正常登陆 Linux 以下几个位置记录相关日志:

SSH登录操作相关的日志有以下几个位置:

  • 1

    2

    3

    4

    5

    6

    7

    /var/log/btmp,记录错误的登录尝试,查询命令:lastb

    /var/log/auth.log,记录认证成功的用户

    /var/log/secure,记录与安全相关的日志信息

    /var/log/lastlog,记录用户上次登录信息

    /var/log/wtmp,记录当前和曾经登入系统的用户信息,查询命令:last

    /var/run/utmp,记录当前正在登录系统的用户信息,查询命令:w

    ~/.bash_history,记录从最开始至上一次登录所执行过的命令,查询命令:history无法直接查看的需要通过:strings /var/log/wtmp  来查看内容

    正常日志溯源的时候  执行

    1

    ps -aux|grep sshd

      

     正常登陆 putty 

  • sshd:root@pts/0

  • 使用sftp、rsyn、scp等协议进行登录

  • sshd:root@notty
     

复制代码

使用notty,能够绕过以下日志:

/var/log/lastlog,记录用户上次登录信息
/var/log/wtmp,记录当前和曾经登入系统的用户信息,查询命令:last
/var/run/utmp,记录当前正在登录系统的用户信息,查询命令:w
~/.bash_history,记录从最开始至上一次登录所执行过的命令,查询命令:history


复制代码

防御关注点

查看错误的登录尝试,查询命令:lastb,文件位置/var/log/btmp
查看认证成功的用户,文件位置/var/log/auth.log
查看tcp连接,查看命令:netstat -vatn

查看SSH端口22被哪些IP地址和端口连接,并使用awk命令过滤出需要的信息:
该命令会列出所有连接到SSH端口22的IP地址和端口,并输出到控制台。

sudo netstat -tnp | grep :22 | awk '{print $4, $5}'


查看SSH登录日志,  下面需将 secure  改为 auth.log 并使用grep命令过滤出需要的信息:
该命令会列出所有SSH登录成功的记录,包括登录用户、登录时间、登录IP地址等信息,并输出到控制台。

sudo grep "Accepted" /var/log/secure | grep "sshd" | grep -v "sudo" | awk '{print $1, $2, $3, $9, $11}'



查看SSH登录使用的秘钥,并使用grep命令过滤出需要的信息:
该命令会列出所有使用公钥登录成功的记录,包括登录用户、登录时间、登录IP地址等信息,并输出到控制台。

sudo grep "Accepted publickey" /var/log/secure | awk '{print $1, $2, $3, $9, $11, $13}'



过滤登录失败的记录 操作如下:=================================================

查看SSH端口22被哪些IP地址和端口连接,并使用awk命令过滤出需要的信息,包括连接失败的记录:
该命令会列出所有连接到SSH端口22失败的记录,包括登录IP地址和端口,并输出到控制台。

sudo grep "sshd.*Connection refused" /var/log/messages | awk '{print $1, $2, $3, $9}'


查看SSH登录日志,并使用grep命令过滤出需要的信息,包括登录失败的记录:
该命令会列出所有SSH登录失败的记录,包括登录用户、登录时间、登录IP地址等信息,并输出到控制台。

sudo grep "Failed" /var/log/secure | grep "sshd" | grep -v "sudo" | awk '{print $1, $2, $3, $9, $11}'


查看SSH登录使用的秘钥,并使用grep命令过滤出需要的信息,包括登录失败的记录:
该命令会列出所有使用公钥登录失败的记录,包括登录用户、登录时间、登录IP地址等信息,并输出到控制台。

sudo grep "Failed publickey" /var/log/secure | awk '{print $1, $2, $3, $9, $11, $13}'

猜你喜欢

转载自blog.csdn.net/a1058926697/article/details/131719313