安全之路(二)-linux操作系统
CDN:做缓存,可以让用户更快的访问,CDN防御缺陷:如果知道服务器IP就没用了
nslookup国外IP
服务器信息收集:nmap
查看系统信息:
uname -a:内核版本号,偶数是稳定版内核,奇数是开发板内核
uname -r:查看当前操作系统内核版本号,比如看客户有没有操作系统漏洞
fdisk-l:查看硬盘大小(硬盘大小是1000单位,内存时1024)及分区
/dev/vda:vda硬盘文件名(在linux中一切皆文件)vd:硬盘接口,a:表示第一块,b表示第二块,1表示第一分区
cat /proc/cpuinfo 查看系统cpu信息
cat /proc/meminfo 查看系统内存信息
系统优化
1、关闭防火墙:
iptables -nL:查看防火墙状态
setup:图形界面开启或关闭防火墙状态
禁用防火墙
systemctl stop firewalld
停止并禁用开机启动
sytemctl disable firewalld
2、关闭selinux服务:
/etc/selinux/config:修改这个文件的配置文件SELINUX=disabled
getenforce:查看当前selinux状态
3、安装vmwaretools
结构
根目录下结构
以点开头的文件是隐藏文件
/:根目录
/bin:保存了管理员和普通用户都能执行的命令(目录下所以命令文件都是编译成二进制的机器语言原生是C语言编写的)
/sbin:只有管理员能执行的命令
/boot:主引导目录、独立的分区/dev/sda1,具有内核、启动菜单、还有驱动盘(初始化镜像光盘)
/dev:设备文件存放目录,硬盘都在这
/etc:配置文件存放目录
/home:普通用户家目录,保存的用户的配置文件,
/root:超级管理员的家
/media:媒体,光驱默认的挂载目录(比如在该目录下可以找到光盘)
/mnt:临时设备的挂载目录(比如U盘等外接设备)
/proc:进程状态存放目录,占内存空间不占硬盘空间
/tmp:临时文件存放目录
/usr:GUN社区软件默认安装目录
/var:常变文件存放目录,日志文件存放目录
/var/log/secure:
grep:过滤
|:管道符,降前一条命令作为后一条命令的参数
grep "过滤值" 过滤文件|awk '{print $1}'|sort|uniq -c:将过滤的值获取第一个位置的值-排序-合并输出内容及数量,awk过滤字段,$1:以空格作为分隔符 取第一个字段
颜色,sort:排序,uniq :统计,-c:显示合并的次数
蓝色字体:文件
黑色:普通文件
浅蓝色:符号链接(快捷方式)
红色:压缩文件
黑底黄字:设备文件
紫色:图片文件、模块文件
常用命令:
ls:列出当前目录内容,ls -a:列出所有内容包括隐藏文件,ll:展示目录详细信息,ls-hl:可以把数字转换为M等单位
pwd:print directory directory列出当前目录
cd:change dir 绝对路径相对路径
cat:查看 -n 可以输出行号信息
cat -n /etc/man.config |more:实现带行号分页查看
tail -f /etc/log/secure:跟踪日志变化,tail是查看最后十行,-f跟踪
touch:文件不存在创建新文件,文件存在更新文件的时间标记
echo:标准输出相当于print,可以重定向>输出到文件实现文件写入功能,追加写入用>>
mkdir:创建目录,默认只能创建一级 -p:递归建立目录的父目录
mv:剪切、重命名
cp:拷贝,默认只能考文件不能考目录 -r:递归拷贝可以拷贝目录
rm:移除 -f 强制删除不会询问 -rf:删除目录r是递归
ln:链接
ln-s 源文件(要用绝对路径)链接文件:s:符号链接
man:帮助菜单/搜索关键字,q退出,n下一个匹配项,N上一个匹配项
wc -l:显示文件的行数,wc会显示行数、字符数,字节数
du -sh 文件目录:统计文件目录占磁盘空间大小
find /-size +100M:在根目录下查找100M以上文件
-size:按文件大小查找
-name:按名字查找
-type:按文件类型查找,f:文件。d:目录,l:链接
find /tmp -name conf.log -a type f :在/tmp目录下找文件conf.log并且类型是文件
dd if=/dev/zero of=/dev/sda bs=512 count=1:清除分区表抹数据,设备文件中前512字节存放的分区信息
文件压缩与解压缩
只能压缩文件,不能压缩目录
gzip 文件:压缩
gunzip:解压缩
bzip2:压缩文件
bunzip2:解压缩
tar打包压缩
-j:使用bzip2打包
-z:使用gzip打包
-c:creat创建文件
-f:后面跟新建的文件名,注意文件后缀与压缩工具匹配z用。tar.gz,j用tar.bz2
tar -j
-tf:可以看压缩包里有什么内容,未解压
tar-tf /tmp/log.tar.gz
-xf:解压缩,不用知道工具,会直接解,不写解压路径会解压到当前目录下,如果有同名文件解压出来的文件会覆盖之前文件
tar -xf /tmp/log.tar.gz
-C:指定解压缩路径
命令分类:
内部命令:当前所用的命令解释器自带的命令,linux是bash,windows是cmd,man不着的是内部命令,查看内部命令,help+内部命令名字
外部命令:GUN社区第三方软件安装后的命令,能让which找到的都是外部命令
vim

读取另一个文件的内容到当前:末行模式下:r /etc/main.config:降/etc/main.config内容读取到当前文件
gg:跳转到第一行
dd:删除当前光标所在行
命令行模式下:删除第一行空白行 gg dd
末行模式:set nu :显示行号
命令行模式:58G:快速跳转到58行 40->向右移动40字符
命令行模式:/dh:向下搜索dh
末行模式:50,100 s/man/MAN/g:将50到100行的小写man替换成大写MAN,并且如果一行中有多个man要全部替换
命令行模式:u:撤销上一步操作
命令行模式:3G 6yy G p:光标跳转到第3行,将当前第3行开始往下复制6行,G光标跳转到最后一行,p粘贴到当前行下
末行模式:2,4 d :删除第2-第4行
:w ,ain.txt:另存为一个文件
命令模式:45G 15x:光标停留在45行向右删除15个字符
q!:不保存退出
wq!:保存退出,或者shift——zz也可以保存退出

源码包安装过程
解压缩看INSTALL文件看安装说明
1.第一步指定安装路径生成makefile文件
2.make,找makefile文件进行编译(把C语言编译成计算机语言,相当于c语言下的gcc命令)
3.make install 把编译好的文件拷贝到安装路径
4.到安装路径下/usr/local/webserver/bin/apachectl start 启动
5.主页/usr/local/webserver/htdocs/index.html
关闭apache:/usr/local/webserver/bin/apachectl stop
用户权限
-rw-r--r-- 1 root(文件所属者) root(文件所属组) 35 Oct 27 14:59 main2.txt
etc/passwd:保存系统中所有用户信息
root:x:0:0:root:/root:/bin/bash
字段1:用户名
字段2:密码占位符,密码在shadow文件,如果为空就可以无密码登录
字段3:用户uid号
字段4:用户基本组id号
字段5:用户信息记录位置(已废弃)
字段6:用户家目录
字段7:用户登录系统后用什么命令解释器,可以对用户做一些限制比如/sbin/nologin,就不能登录
用户身份标示为0:超级管理员;500-6000普通用户;1-499:程序用户(不能登录系统)
/etc/shadow:记录系统中用户密码信息
root:$1$ugcIGyim$y0N5fcyjH6YWFgsdNae.b.:18926:0:99999:7:::
字段1:用户名
字段2:使用MD5及salt加密后的密文,
字段3:18926距离1970年1月1日(unix诞生)密码最近一次修改时间
字段4:密码最短有效期,如果是3表示3天内不能改密码
字段5:密码最长有效期,linux基线手册要求至少3个月要改一次单位是天,90
字段6:7密码过期前7天警告
字段7:密码不活跃期缓冲期、
字段8:密码距离1970年1月1日失效时间
/etc/group:保存了组信息
一个用户必须有一个基本组,该组有基本组成员,该组不允许删除
一个用户可以有多个附加组,该组无基本成员,该组可以被删除
用户建立
useradd:创建用户
-u:指定用户id
-g:指定用户基本组id
-G:指定附加组
-s:指定用户登录的命令解释器,一般指定为-s /sbin/nologin不允许登录 -s /bin/login允许登录
useradd -u 500 -g 1000 allen:创建用户allen,指定uid=500,组id为1000,
id allen:查看allen用户的信息
usermod:修改用户信息,选项同上
userdel:删除用户
-r:删除用户家目录,一般删用户都用这个命令 userdel -r allen
groupadd:创建组
-g:指定gid
groupmod:修改组信息,选项同上
groupdel:删除组
passwd 用户名:用户密码
-S:查看用户密码状态
-l:锁定用户,锁定后即使对方知道密码也无法登录
-u:解锁用户密码
-d:删除用户密码
chage
chage -M 90 allen:修改用户密码的最长有效期
提权
用户名 登录的主机=允许执行的命令 NOPASSWD:ALL所有命令不需要密码
allen ALL=/sbin/init,usr/bin/vim ALL
给用户最高权限:
allen ALL=(root)NOPASSWD:ALL
/etc/sudousers是visudo的配置文件
文件权限
-rw-r--r--(文件权限) 1(所含文件个数) root(文件所有者) root(文件所属组) 3232(文件大小) Nov 28 2019 rsyslog.conf
drwxr-xr-x. 2 root root 4096 Jun 23 2020 rsyslog.d
文件权限分割
- rw- r-- r--(文件权限)
d rwx r-x r-x.
字段1:文件类型,d:目录;-:文件;l:符号链接;c:字符型设备文件(能显示输出的);b:block块设备一般存数据硬盘一般是b
字段2:文件所属者权限
字段3:文件所属组权限
字段4:其它用户的权限(既不是文件所有者,也不在文件所属组中)
r w x
文件: 读 写 执行
目录: 列出目录内容 添加删除文件 进入该目录
权限从左往右看匹配谁就看谁,不再叠加后面的权限,比如是文件所有者就不再去看所属组的权限
3个特殊权位:
t:粘滞位,只对目录有效
在目录中建立的文件只有文件创建者可以删除
方法1:
chmod 777 /tmp/test
chmod o+t /tmp/test
方法2:
chmod 1777 /tmp/tes
sgid:
只对目录有效,在目录中建立的文件所属组是继承于父目录的所属组
suid:只对可执行文件有效
提权:
which vim
chmod u+s /usr/bin/vim
chmod 4755 /usr/bin/vim
无论谁用vim谁就用root在用
但是vim这种使用频率较高容易发现,可以找一些不太常用的比如find来提权
which find
chmod u+s /bin/find
然后普通用户操作:
获得root 权限
find /opt name rh exec"/bin/dash"\ :找opt下的rh是为了只找到一个结果,不然exec会输出多条结果,bin/dash命令解释器漏洞没有处理可以来运行,exec是find的选项,后面的命令使用find的权限去执行,find查找出来的内容交给后面的命令处理,前面find有机构结果后面的命令就要处理几次
man 帮助命令里面调用!表示执行命令
suid提权
sudo 提权
在visudo里添加用户权限比如man路径

ALL表示从任意主机登录都可以,root:使用命令遵循root权限
NOPASSWD:/usr/bin/man:man命令不需要密码验证
不用sudo:
1.man ls
2:!whoami,结果会是jerry
使用sudo:
1:sudo man ls
2:!whoami,结果是root
3.!passwd root:可以给root修改密码
在man帮助里面调用!所用命令都能运行,man是因为提权成root在运行
visudo给权限的时候一定要注意,命令是否能出现交互界面,只要能出现交互界面比如man的交互界面就可以提权,因为在交互界面输入!都是当前用户的命令,当前是root
排查该类漏洞:
find /perm 4755:查找权限为4755的
find /prem +4000:查找所有带suid权限的,其它权限忽略
侵权可能会用这个提权,系统排查是否有后门提权可以排查是否有该提权
删文件权限是看该用户在文件上一级目录中的权限
目录必须要有x权限,w、r权限才能生效,因为系统在列出目录内容和添加删除文件时都需要进入目录才能执行
修改文件权限
chmod 对象 运算符号 权限 文件或目录
chmod a=--- 目录
chmod g=rwx 目录
chmod o=rx 目录
对象:u:user所有者,g:文件所属组,0:其它,a:all所有
运算符号:+:赋权,—:撤权,=指定权限


本文来自博客园,作者:qxll,转载请注明原文链接:https://www.cnblogs.com/qxll/p/15465314.html

浙公网安备 33010602011771号