安全相关的Linux知识

本文用于记录在安全中的Linux常用命令,基础命令可以移步去菜鸟教程(https://www.runoob.com/linux/linux-tutorial.html)学习

Linux重要的4个热键

  • Tab键用于命令补全
  • Ctrl+C中断命令,强制中断程序的执行,进程已经终止
  • Ctrl+Z中断命令,将任务中止(暂停的意思),但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务
  • Ctrl+D :表示一个特殊的二进制值,表示 EOF。在shell中,ctrl-d表示推出当前shell

Linux中的几个关键目录和文件

1、~/.bash_history //历史命令
2、/var/spool/cron/(crontabs) //对应不同用户计划任务
3、/proc/pid //对应进程的目录,进程对应目标再用ls -lh 可以看到对应进程的相关信息
4、/var/log //日志目录,auth.log是系统登录日志

  

权限管理相关的命令

chgrp命令改变文件的所属群组

如果需求仅仅是改变文件或目录的组信息,那么您可以直接使用chgrp命令。

语法如下:
chgrp [OPTION]... GROUP FILE...
比如可以输入
sudo root filename/dirname

  

chown命令改变文件拥有者

语法如下:
chown [OPTION]... [用户][:[用户组]] FILE...
OPTION:

-R : 处理指定目录以及其子目录下的所有文件。

比如可以输入:
sudo chown root Filename

  

chmod命令改变文件的权限

权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。

语法如下:
chmod [OPTION]... MODE[,MODE]... FILE...
比如想要所有人都可以完全访问该文件:
chmod 777 filename
第1个7设置用户的权限,第2个7设置组的权限,第3个7设置其他所有者的权限。

比如用户想成为唯一可以访问它的人:
chmod 700 filename

比如用户想要为自己和其小组成员提供完全访问权限:
chmod 770 filename

比如用户想为自己保留完全访问权限,但希望阻止其他人修改文件:
chmod 755 filename

  

通过符号来改变权限:

比如想要修改所有者可以读取和写入文件,但不会更改其他任何人的权限的命令:
chmod u=rw filename

  

查找相关的命令

  • find
  • where
  • whereis
  • grep

提权相关的命令

uname -r命令查看版本信息

查看发行版本

注意:该命令并不是所有linux中都有的。

lsb_release -a

  

crontab 设置定时任务

相关配置文件:

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名;
  • /etc/crontab 这个文件负责调度各种管理和维护任务;
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本;
  • 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

命令语法如下:

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有
  • * 取值范围内的所有数字
  • / 每过多少个数字
  • - 从X到Z
  • 散列数字

每1分钟执行一次myCommand:

* * * * * myCommand

 

每一小时重启smb:

* */1 * * * /etc/init.d/smb restart

每小时清空/var/log/messages日志内容:

0 */1 * * * True > /var/log/message

应急响应相关的命令

1、实时显示最新的日志文件,可以使用以下命令:

tail -f auth.log
//tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容

  

2、查看运行内存/CPU占用高的应用程序:

top -d 1 -c
//-d:指定更新的间隔,以秒计算;
//-c:显示进程完整的路径与名称;
交互的命令:
<空格>:立刻刷新。 
P:根据CPU使用大小进行排序。 
T:根据时间、累计时间排序。 
q:退出top命令。 
m:切换显示内存信息。 
t:切换显示进程和CPU状态信息。 
c:切换显示命令名称和完整命令行。 
M:根据使用内存大小进行排序。 

 

3、查看所有进程信息:

ps aux
//如过需要查找指定进程可以结合grep
ps aux | grep xxx

  

4、查看端口信息:

//列出所有端口
netstat -anp
//列出所有TCP端口
netstat -anpt

  

5、查看计划任务

//列出当前用户的所有计划任务
crontab -l
//想要查看某一个用户的所有计划任务,需要通过-u参数进行指定
crontab -u root -l
//编辑当前用户的计划任务
crontab -e
//也可以编辑指定用户的计划任务
crontab -u root -e

  

6、历史命令相关的命令

//查看当前用户的历史命令
history
//清除前用户的历史命令
history -c
//查看指定用户的历史命令,.bash_history对应的命令就是history
cat [user]/.bash_history
//配置保存历史命令的数量可以通过编辑/etc/profile,在profile配置文件中找到HISTSIZE选项,该配置选项用于配置历史操作命令条数。默认该值为1000,也就是记录最近的1000条命令,如果将此值置0则不记录历史操作命令。
vim /etc/profile

  

7、查看最后登录信息与历史用户登录信息

//查看最后登录信息
lastlog
//查看历史用户登录信息
last -f /var/log/wtmp

 

iptables命令

禁止某个ip访问:

iptables -I INPUT  -s <ip> -j DROP

  

清理痕迹与混淆命令

1、通过touch命令的-t参数可以生成指定时间的文件:

touch -t 201911110000 <filename>

  

考点

1、超级用户和普通用户的登录提示符是不同的,超级用户是(#)、普通用户是($);

2、linux 长连接和短连接的区别;

长连接概念:长时间保持客户端与服务端的连接状态。默认超时时间8小时。

短连接概念:数据传输完毕立即断开,每次连接只完成一项业务的发送。

短连接是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。 在系统维护中,一般很难去察觉,需要借助网络安全设备或者抓包分析,才能够去发现。

常会出现在应急响应当中,想要查看网络连接中的短连接,需要多次使用netstat -anplt命令才可能会发现短连接;

3、Linux安全检查是常用的命令:

  3.1、除root之外,是否还有其它特权用户(uid 为0):

awk -F: '$3==0{print $1}' /etc/passwd

  3.2、可以远程登录的帐号信息:

awk '/$1|$6/{print $1}' /etc/shadow

  3.3、统计登录日志(登录失败的次数):

grep -o "Failed password" /var/log/secure|uniq -c

  3.4、查看登录失败的第一行和最后一行,确认时间范围:

grep "Failed password" /var/log/secure|head -1
grep "Failed password" /var/log/secure|tail -1

  3.5、查看有哪些IP在爆破:

 grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c | sort -nr

  3.6、查看攻击者的用户名字典:

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1
";}'|uniq -c|sort -nr

  3.7、查询用户登录成功的情况(包含日期、用户名、IP):

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

  3.8、统计一下登录成功的IP:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

杂项

mkdir命令建立新目录

mkdir [-mp] dirname
选项:
-m :配置目录的权限;
-p : 递归建目录

  

rmdir命令删除空目录

rmdir [-p] dirname
选项
-p 递归删除,如上一级也是空目录也会删除

  

ls命令显示档案与目录

ls [option] 目录名称
选项:
-a:全部的档案,连同隐藏档案(开头为.的隐藏档案)一起显示出来;
-A:全部的档案,连同隐藏档(不包括.与..这两个目录)
-d:仅列出目录,而不是目录下的档案数据;
-f:直接列出结果,不会排序(默认会以档名排序);
-F:根据档名、目录等信息,给予附加数据结构。例如:*表示可执行文件、/代码目录、=代表socket档案、|代表FIFO档案
-h:将档案容量以人类易度的方式程序出来;
-l:长数据串行出,包含档案的属性与权限等信息;
-n:列出UID与GID而非使用者与群组的名称;
-r:将排序结构倒序,如原档名排序是由小到大,倒叙则是由大到小;
-R:连通子目录内容一起列出来,等于该目录下的所有档案都会显示出来;
-S:以档案容量大小排序;
-t:以时间排序;
--full-time:以完整时间模式输出;
--time={atime,ctime}:输出access时间(atime)或者改变权限属性时间(ctime),而非内容改变的时间(mtime);

  

cp命令复制档案或目录

cp [option] oldsource newsource
选项:
-a:完全复制(包括各种属性);
-i:若目标文件已经存在时,在覆盖时会先询问;
-p:连通档案的属性一起赋值过去,常用于备份;
-r:递归持续赋复制目录

  

rm命令移除档案或目录

rm [-fir] 档案或目录
选项:
-f:忽略不存在的档案,不会出现警告;
-i:互动模式,删除前会先询问;
-r:递归删除,常用于删除目录;

  

mv命令移动档案与目录或更名

mv [options] source destination
选项:
-f:如果目标档案(destination)存在,不会询问直接覆盖;
-i:若目标档案(destination)存在,询问是否覆盖;
-u:若目标档案(destination)存在,且souce比较新,才会更新;

 

sync命令数据同步写入磁盘

Linux sync命令用于数据同步,sync命令是在关闭Linux系统时使用的。

sync

  

关机命令

shutdown、reboot、halt、poweroff命令。

立刻关机:
shutdown -h now 
定时关机(绝对时间):
shutdown -h 18:00
定时关机(相对时间,相对于目前时间,单位是分):
shutdown -h +10
立刻重启:
shutdown -r now
重启前发送提示信息:
shutdown -r +10 'This system will reboot'

  

原文地址:https://www.cnblogs.com/endust/p/11851237.html