用户账号与网络端口与我们的系统安全是息息相关的,无论是用户的限制登录还是密码限制以及端口限制等都是我们常用的一些操作。
在 Linux 系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他大量账号除了超级用户 root 之外,其他大量账号只是用来维护系统运作、启动或保持服务器进程,一般是不允许登录的,因此也称为非登录用户为了确保系统安全,这些系统的登录 shell 通常是 /sbin/nologin,表示禁止终端登录,应确保不被人为改动
各种非登录用户中,还有相当一部分是很少用到的,这些账号可以视为冗余账号,直接删除即可除此之外,还有一些随应用程序安装的用户账号,若程序卸载以后未能自动删除,则需要管理员手动进行清理
对于 Linux 服务器中长期不用的用户账号,若无法确认是否应该删除,可以暂时将其锁定
如果服务器中的用户账号已经固定,不再更改,还可以采取锁定账号配置文件的方法
chattr +i /etc/passwd /etcadow #锁定文件
lsattr /etc/passwd /etcadow #查看为锁定的状态
lsattr /etc/passwd /etcadow #查看为解锁的状态
在生产环境中我们的密码往往会设置固定更改时间,30、90天多为常见,60天相对较少。
Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险 只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果层间在命令行输入铭文的密码,则无意之中服务器的安全壁垒又多了一个缺口 在 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条
在生产中,我们可以设置一个闲置超时自动注销账号时间。当用户无操作超过指定时间后,会自动注销终端,这样就可以避免用户不在时,其他人对服务器的操作风险。
在生产环境中,往往会限制用户以root身份登录,以防止误操导致的破坏和密码泄露导致的网络风险。
Linux系统在默认情况下,会允许所有用户使用su命令,这样就会导致有人可以反复尝试其他用户包括root的登录密码,而导致的密码泄露。
我们可以使用pam_wheel认证模块,设置只允许个别用户使用su。方法如下:将用户添加到wheel组中,修改/etc/pam.d/su配置文件启用认证。
当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名
用户、主机、命令部分都可以定义为别名(必须为大写),分别通过 User_Alias(用户别名)、Host_Alias(主机别名)、Cmnd_Alias(命令别名) 来进行设置
认证过程:用户去访问服务——》访问su——》PAM认证下面的su的配置文件(/etc/pam.d/)——》去调用wheel.so模块
控制类型也可以称作 Control Flags,用于 PAM 验证类型的返回加过程
查看命令是否支持PAM认证
每一行都是一个独立的认证过程,从上到下,依次有PAM模块调用
认证模块类型 | 作用 |
---|---|
auth | 对用户身份进行识别,如提示输入密码,判断是否为 root |
account | 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等 |
password | 使用用户信息来更新数据,如修改用户密码 |
session | 定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统 |
控制类型 | 作用 |
---|---|
required | 需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。该行以及所涉及模块的成功是用户通过鉴别的必要条件 |
requisite | 与 required 类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败 |
sufficient | 如果此模块返回成功,则不管后面的验证,直接向程序返回成功,表示验证通过,如果返回失败,则可以看成 optional(慎用) |
optional | 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型);不管成功、失败,继续下一模块的验证,且此模块的服务也能享用 |
include | 表示在验证过程中调用其他的 PAM 配置文件;比如很多应用通过完整调用 /etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项 |
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。为了加强对引导过程的安全控制,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
在 Linux 系统中,login 程序会读取 /etc/securetty 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统若要限制 root 用户从指定终端登录,可以修改 /etc/securetty 文件
注释指定终端:
建立 /etc/nologin 文件即可,login 程序会检查 /etc/nologin 文件是否存在,如果存在则拒绝普通用户登录系统root 用户不受此限制
限制普通文件登录
运允许普通用户登录
SYN | 建立链接 |
---|---|
ACK | 确认 |
FIN | 结束断开 |
PSH | 传送0数据缓存上层应用协议 |
RST | 重置 |
URG | 紧急 |
常用格式:
nmap [扫描类型] [选项] <扫描目标>
metstat natp #查看正在允许使用的TCP协议的网络状态信息
netstat -natp | grep httpd #实际操作
netstat -naup #查看正在运行的使用UDP协议网络状态
常用选项 | 对应扫描类型 |
---|---|
-p | 指定扫描的端口 |
-n | 禁用反向DNS解析(以加快扫描速度) |
-sS | TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYNACK响应包就认为目标端口正在监听,并立即断开连接; 否则认为目标端口并未开放 |
-sT | TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否 则认为目标端口并未开放~ |
-sF | TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而 忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性 |
-sU | UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢 |
-sP | ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描 |
-P0 | 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放 弃扫描 |
natstat常用选项 | 作用 |
---|---|
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-t | 查看TCP相关的信息 |
-u | 显示UDP协议相关的信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
-n | 以数字的形式显示相关的主机地址、端1等信息 |
-r | 显示路由表信息 |
-l | 显示处于监听状态的网络连接及端口信息 |
1、检查是否安装nmap软件
2、查看本机开放的TCP、UDP端口
3、检测网段存活主机
在本篇的内容里,有很多命令是我们常用的,包括限制用户登录,su、sudo等命令以及pam认证怎么使用,在日常生产中root用户往往是不允许登录的,我们往往会使用sudo命令来提示我们的权限,用pam认证来限制一些用户的权限。