本文用于记录在安全中的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'