账号安全基本措施
1.1系统账号清理
-
将用户设置为无法登录、
-
锁定账户
-
删除账户
-
锁定账户密码 本质锁定
shell——/sbin/nologin却比较特殊,所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。举例来说,各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,他们都可以进行系统程序的工作,但就是无法登陆主机而已。
1.将用户设置为无法登录
2.锁定用户
3删除账户
4锁定配置文件
chattr
-a 让文件或目录仅供附加用途。只能追加
-i 不得任意更动文件或目录。
设置密码规则
对于新建用户
可以修改 /etc/login.defs 文件里的内容来设置密码规则
命令历史
Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。
退出后清空历史命令
切换用户
先要使用grub2-mkpasswd-pbkdf2命令生成PBKDF2加密口令,然后在/etc/grub.d/00_header文件中添加超级用户和PBKDF2加密口令,最后使用grub2-mkconfig命令生成grub配置文件。
-
su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令
-
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
说明:root su至其他用户无须密码;非root用户切换时需要密码
注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
su 与 su-
即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误(例如无法使用 service 命令)。
-
限制使用su命令的用户
su命令的安全隐患
(1) 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
(2) 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进
行切换
限制使用su命令的用户
将允许使用su命令的用户加入wheel组。启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户(编辑/etc/pam.d/su文件)。
查看su操作记录
安全日志:/var/log/secure查看/etc/pam.d/su 文件
-
PAM安全认证流程
-
控制类型也称做Control Flags,用于PAM验证类型的返回结果
-
1.required验证失败时仍然继续,但返回Fail
-
2.requisite验证失败则立即结束整个验证过程,返回Fail
-
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续4.optional不用于验证,只显示信息(通常用于session类型)
-
sudo命令的用途及用法
·用途:以其他用户身份(如root)执行授权的命令
●用法sudo授权命令
sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。sudo于1980年前后推出,sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等
sudo特性:
-
sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
-
sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
-
sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
-
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440
-
user: 运行命令者的身份
host: 通过哪些主机 多个 192.168.91.100 - 110
(runas):以哪个用户的身份
command: 运行哪些命令User和runas:
username(用户名)
#uid(id号)
%group_name(组名)
%#gid(组id)
user_alias|runas_alias(别名) MYUSER=zhangsan,lisi
host:
ip或hostname(IP地址或主机名)
host_alias(别名) localhost
command:
command name (命令)
directory (文件夹里的命令)
sudoedit (可以编辑sudoers这个文件,变相变成管理员)
Cmnd_Alias (命令别名)别名
sudo别名有四种类型:
-
User_Alias(用户)
-
Runas_Alias(代表用户)
-
Host_Alias(登录主机)
-
Cmnd_Alias(命令)
-
通配符
? 任意单一字符
* 匹配任意长度字符
[wxc] 匹配其中一个字符
[!wxc] 除了这三个字符的其它字符
\x 转义
[[alpha]] 字母 -
grub 加密
/etc/grub.d目录
定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首先被读取。
文件 描述 00_header 设置grub默认参数 10_linux 系统中存在多个linux版本 20_ppc_terminfo 设置tty控制台 30_os_prober 设置其他分区中的系统(硬盘中有多个操作系统时设置) 40_custom和41_custom 用户自定义的配置 设置GRUB 2加密
由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。
在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行、编辑菜单项以及执行任意菜单项。
GRUB 2密码支持以下两种格式
-
明文密码:密码数据没有经过加密,安全性差
-
PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。
-
nmap命令常用的选项和描类型
-p:指定扫描的端口。
-n:禁用反向DNS解析(以加快扫描速度)
-sS: TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即
断开连接;否则认为目标端口并未开放。
-sT: TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监
听服务,否则认为目标端口并未开放。
-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单
过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
-sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0:跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法
ping通而放弃扫描。
-
服务 端口号 HTTP 80 HTTPS 443 Telnet 23 FTP 21 SSH(安全登录)、SCP(文件传输)、端口重定向 22 SMTP 25 POP3 110 WebLogic 7001 TOMCAT 8080 WIN2003远程登录 3389 Oracle数据库 1521 MS SQL* SEVER数据库sever 1433 MySQL 数据库sever 3306 - TCP
-
首部长度为 20~60 字节,以下是各字段的含义。
源端口号:它是 16 位字段,为发送方进程对应的端口号。
目标端口号:它是 16 位字段,对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程。
序号:当 TCP 从进程接收数据字节时,就把它们存储在发送缓存中,并对每一个字 节进行编号。编号的特点如下。
编号不一定从 0 开始,一般会产生一个随机数作为第一个字节的编号,称为初 始序号(ISN),范围是 0~232-1。
TCP 每个方向的编号是互相独立的。 当字节都被编上号后,TCP 就给每个报文段指派一个序号,序号就是该报文段 中第一个字节的编号。
当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。 确认号:对发送端的确认信息,用它来告诉发送端这个序号之前的数据段都已经收 到,如确认号是 X,就是表示前 X-1 个数据段都已经收到。
首部长度:用它可以确定首部数据结构的字节长度。一般情况下 TCP 首部是 20 字 节,但首部长度最大可以扩展为 60 字节。
保留:这部分保留位供今后扩展功能用,现在还没有使用到。 控制位:这六位有很重要的作用,TCP 的连接、传输和断开都受这六个控制位的指 挥。各位含义如下。
URG:紧急指针有效位。
ACK:只有当 ACK=1 时,确认序列号字段才有效;当 ACK=0 时,确认号字段 无效。
PSH:标志位为 1 时,要求接收方尽快将数据段送达应用层。
RST:当 RST 值为 1 时,通知重新建立 TCP 连接。
SYN:同步序号位,TCP 需要建立连接时将这个值设为 1。
FIN:发送端完成发送任务位,当 TCP 完成数据传输需要断开连接时,提出断 开连接的一方将这个值设为 1。
窗口大小:说明本地可接收数据段的数目,这个值的大小是可变的,当网络通畅时 将这个窗口值变大以加快传输速度,
当网络不稳定时减小这个值可保证网络数据的 可靠传输,TCP 中的流量控制机制就是依靠变化窗口的大小实现的。 校验和:用来做差错控制,与 IP 的校验和不同,TCP 校验和的计算包括 TCP 首部、 数据和其他填充字节。在发送 TCP 数据段时,
由发送端计算校验和,当到达目的地 时又进行一次校验和计算。若这两次的校验和一致,则说明数据基本是正确的,否 则将认为该数据已被破坏,接收端将丢弃该数据。 紧急指针:和 URG 配合使用,当 URG=1 时有效。 选项:在 TCP 首部可以有多达 40 字节的可选信息。