账号安全管理
- 系统账号管理
-
- 账号清理
- 账号安全设置
- 删除历史命令
- 用户切换与提权
-
- su命令——切换账户
- sudo命令——提升执行权限
- PAM认证
-
- PAM及作用
- PAM认证原理
- PAM认证的构成
- PAM认证类型
- PAM控制类型
- 用法
- 终端机登录控制
-
- 限制 root 只在安全终端登录
- 禁止普通用户登录
- 弱口令检测
- 端口扫描
系统账号管理
账号清理
-
账号分为 登录用户 与 非登录用户:
登录用户:为超级用户root、自己创建的普通用户、别人使用的其他用户。
非登录用户:为随系统或程序安装过程产生的其他大量其他账号包(例如 bin、daemon、adm、ip、mail、nobady、apache、mycql、dbus、ftp、gdm、haldaemon等) -
为了确保系统安全,这些非登录用户shell通常是 /sbin/nologin 的,表示禁止终端登录,确保别人不能随意改动。
[root@localhost~]#grep “/sbin/nologin” /etc/passwd ######可以查看禁止登录的非登录用户
而这种非登录用户中有相当一部分很少用到或根本不会用到,这些账号可以视为冗余账号,没什么卵用还占开机速度占空间等,我们就直接删除即可
- 对于Linux服务器中长期不用的用户账号,不确定能不能删除,可以暂时时将其锁定,等到以后再删。
示例:
[root@localhost~]#usermod -L xiaojiejie 或者 passwd -l xiaojiejie ########锁定账号
[root@localhost~]#passwd -S xiaojiejie #########查看账号是否锁定状态
[root@localhost~]#usermod -U xiaojiejie 或者 passwd -u xiaojiejie ############解锁账号
[root@localhost~]#passwd -S xiaojiejie ##########查看账号是否锁定状态
- 最安全的便是锁定账号的配置文件,只要锁上,如果不解开是无法删除的,无法添加账号,不能更改密码,登录shell,属主目录等属性信息。
[root@localhost~]#chattr +i /etc/passwd /etc/shadow #######锁定文件
[root@localhost~]#lsattr /etc/passwd /etc/shadow###########查看锁定的状态
—-i——– /etc/passwd
—-i——– /etc/shadow
[root@localhost~]#chattr -i /etc/passwd /etc/shadow #########解锁文件
[root@localhost~]#lsattr /etc/passwd /etc/shadow###########查看锁定的状态
————- /etc/passwd
————- /etc/shadow
账号安全设置
在不安全的网络环境中,为了降低密码被猜出或者被暴力破解的风险,用户应该养成定期更改密码的习惯,避免长期使用同一个密码。管理员可以在服务器端限制用户密码的最大有效天数,对于密码已经过期的用户,登录时将被要求重新设置密码,否则将拒绝登录。
密码有效期为30天:
[root@localhost~]#vi /etc/login.defs###########适用于新建的用户
PASS_MAX_DAYS 30########添加这条命令
[root@localhost~]#chage -M 30 lisi###########适用于已有的lisi用户
统一要求所有用户更改新密码:
[root@localhost~]#chage -d 0 xiaojiejie##########要求小姐姐用户下次登录需要改密码
删除历史命令
防止你的电脑被入侵后一查你的历史命令,你输了哪些命令一清二楚
有二种清除历史命令的方式:
1、history -C##########只能清除当时的历史命令,重启机器后就会再次出现
2、**vi /.bash_profile**#######vi编辑/.bash_profile
export HISTSIZE=0######添加这条命令,重启后删除这条命令,在刷新下
用户切换与提权
大多数Linux服务器并不建议用户直接以root用户进行登录,一方面可以大大减少因错误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络环境中被泄露的风险。鉴于这些原因,需要为普通用户提供一种身份切换或权限提升机制,以便在必要的时候执行管理任务。
su命令——切换账户
示例:
[root@localhost~]#su – root ##############切换至root账户
password:
其中选项“-”表示切换用户后进入目标用户的登录shell环境,若缺少此选项则仅切换身份,不切换用户环境。对于切换root 用户,目标 root 可以省略不写。
- 默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用控制,可以借助于pam_wheel 认证模块,至允许极个别用户使用su命令进行切换。
示例:
将授权使用su命令的用户kcce添加到wheel 组,修改/etc/pam.d/su 认证配置以启用pam_wheel认证
[root@localhost~]#gpasswd -a kcce wheel ######添加授权用户kcce
(显示:) Adding user kcce to group wheel
[root@localhost~]#grep wheel /etc/group###########确认wheel组成员
(显示:) wheel:x:10:kcce
[root@localhost~]#vi /etc/pam.d/su###########编辑配置文件/etc/pam.d/su
(显示:) #%PAM-1.0
auth sufficient pam_rootok.so
…
auth required pam_wheel so use_uid #############去掉此行开头的#号
…
启用pam_wheel 认证后,未加入到wheel 组内的其他用户将无法使用su命令,尝试切换时会显示“拒绝权限”
sudo命令——提升执行权限
当你是普通用户在执行命令时有时会提示你没有执行权限,这会搞的你很不爽,所以这时你就得切换到超级用户root 账户,所以你必须得知道root 账户的密码,在生产环境中的Linux服务器每多一个人知道特权密码,其安全风险也就增加一分,而在这种情况下,管理员既不想给你密码又能让你有特权执行命令时就可以用到 sudo 命令了。(当然这得是管理员的事情了,是需要他来设置的)
-
在配置文 /etc/sudoers 中添加授权
sudo 机制的配置文件为 /etc/sudoers ,文件的默认权限为440,需使用专门的 visudo 工具进行编辑。
也可以使用 vi /etc/sudoers 编辑文件,不过保存时必须执行 “wq!”强制操作,否则系统提示为只读文件而拒绝保存
格式:user MACHINE=COMMANDS
#:用户(user):授权的用户名,或采用 “%组名” 的形式 (授权一个组的所有用户)
#:主机(MACHINE):使用此配置文件的主机名,此部分主要是方便在多个主机间共用同一份 sudoers 文件,一般设置为 localhost 或者实际的主机名即可。
#:命令(COMMANDS):允许授权的用户通过sudo方式执行的授权命令,需要填写命令程序的完整路径,多个命令之间以 逗号 ”,“进行分隔。
1、 典型的 sudo 配置记录中,每一行对应一个用户或组的 sudo 授权配置
示例:
要授权用户 Jerry 能够执行 ifconfig 命令来修改IP地址,而wheel 组的用户不需要验证密码就可执行文件[root@localhost~]# visudo
(…省略一大堆内容)
Jerry localhost=/sbin/ifconfig
%wheel (空好几格) ALL=NOPASSWD:ALL
——————————————————————
2、当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名来设置。
用户(User_Alias)、主机(Host_Alias)、命令(Cmnd_Alias)
示例:
通过别名的方式来添加授权记录,允许用户Jerry、tom、kcce 在主机 smtp、pop 中执行 rpm、yum命令[root@localhost~]#visudo
(…省略一部分内容)
User_Alias(空格)OPERATORS=jerry,tom,kcce
Host_Alias(空格)MAILSVRS=smtp,pop
Cmnd_Alias(空格)PKGTOOLS=/bin/rpm,/usr/bin/yum
OPERATORS(空格)MAILSVRS=PKGTOOLS
———————————————————————
3、sudo 配置记录的命令部分允许使用通配符 “*”、取反符号 “!”,当需要授权某个目录下的所有命令或取消其中个别命令时特别有用。
示例:
授权用户kkg 可以执行 /sbin/ 目录下除 ifconfig、route 以外的其他所以命令程序[root@localhost~]#visudo
(…省略一部分内容)
kkg localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route
———————————————————————4、管理员想查看 sudo 日志记录,应在 /etc/sudoers 文件中增加 “Defaults logfile ” 设置
示例:
[root@localhost~]#visudo
(…省略一部分内容)
Defaults logfile = “/var/log/sudo -
通过 sudo 执行特权命令
1、普通用户输入命令,会得到权限不够的提示[kcce@localhost~]$ /sbin/ifconfig egh0 192.168.1.11/24#######未使用sudo的情况
SIOCSIFADDR:权限不够
SIOCSIFNETMASK:权限不够
…
[kcce@localhost~]$ sudo /sbin/ifconfig egh0 192.168.1.11/24#########使用sudo 的情况
…
passwd for 用户:[kcce@localhost~]$/sbin/ifconfig egh0 ##########查看执行结果
第一次通过sudo 执行命令时,必须以用户自己的密码(不是root用户或者其他用户的密码)进行验证,此后再次通过sudo执行命令时,只要与前一次sudo 操作的间隔时间不超过5分钟,则不再重复验证。
2、已授权的用户查看自己的sudo 配置,未配置的用户将会得到 “may not run sudo”的提示
示例:
[kcce@localhost~]$visudo
…
用户kcce可以在该主机上运行以下命令:
kcce localhost=/sbin/ifconfig3、如果已经启用sudo日志,则可以从 /var/log/sudo 文件中看到用户的 sudo 操作记录
示例:
[kcce@localhost~]$tail /var/log/sudo
…
May 13 09:49:47 :kcce : TTY=pts/0; PWD=/home/kcce ; USER=root;
COMMAND=/sbin/ifconfig eth0:0 192.168.1.11/24
…
PAM认证
- PAM 是Linux系统可插拔认证模块
- linux系统使用su命令存在安全隐患,默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,带来安全风险
- 为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令 进行切换。
PAM及作用
- PAM是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式
- PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet、rlogin、fsh、ftp、)su等应用程序
- 系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略
PAM认证原理
- PAM认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so(.so 后缀代表模块文件)
- PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
- 用户访问服务器的时候,服务器的某一个服务程序把用户的不同请求发送到PAM模块进行认证不同的应用程序所对应的PAM模块也是不同的
PAM认证的构成
查看某个程序是否支持PAM认证,可以用 ls 命令:
ls /etc/pam.d | grep su查看 su 的PAM配置文件:
cat /etc/pam.d/su
其中:
1、每一行都是一个独立的认证过程
2、每一行可以区分为三个字段1)认证类型2)控制类型3)PAM模块及其参数
PAM认证类型
- 认证管理
接收用户管理,进而对该用户的密码进行认证 - 账户管理
检查账户是否被允许登录系统,账号是否过期,账号的登录是否有时间段的限制等 - 密码管理
主要用来修改用户的密码 - 会话管理
主要是提供会话的管理和记账
PAM控制类型
-
控制类型也可以称作Control Flags,用于PAM验证类型的返回结果
1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不在继续,否则忽略结果并继续
4.optional不用于验证,只显示信息(通常用于session(会话)类型)
用法
- 限制使用 su 命令的用户
vi /etc/pam.d/suauth sufficient pam_rootok.so ###去掉#号
#auth required pam_wheel.so use_uid
- 限制root用户登录
新建用户,切换用户,即使输入了正确的root密码,也无法登录密码
echo "su_WHEEL_ONLY yes" >> /etc/login.def
- 添加 wheel
gpasswd -a 用户名 wheel
终端机登录控制
限制 root 只在安全终端登录
- 安全终端配置:/etc/securetty
vi /etc/securetty# tty3
# tty4
禁止普通用户登录
- 建立 /etc/nologin 文件
- 删除 nologin 文件或吃那个气后及恢复正常
vi /etc/nologin
yong ## 添加用户取消上述登录限制:
rm -rf /etc/nologin
弱口令检测
- Joth the Ripper,简称为 JR,一款密码分析工具,支持字典式的暴力破解,通过对shadow文件的口令分析,可以检测密码强度。
[root@localhost ~]# mkdir /111 '创建挂载点'
[root@localhost ~]# mount.cifs //192.168.100.3/cccc /111 '挂载(cccc文件中有john压缩包)'
'对于如何将Windows中文件挂载到Linux中的,可以查看我的博客“Linux 安装及管理程序--理论和命令配置”https://blog.csdn.net/CN_TangZheng/article/details/102849246'
Password for root@//192.168.100.3/cccc:
[root@localhost ~]# cd /111
[root@localhost 111]# ls
john-1.8.0.tar.gz
[root@localhost 111]# tar zxvf john-1.8.0.tar.gz -C /opt '将压缩包解压到/opt中'
[root@localhost 111]# cd /opt/john-1.8.0/ '进入压缩包'
[root@localhost john-1.8.0]# ls '查看压缩包'
doc README run src 'doc是说明文档,README是说明书,run是脚本,src是源码文件'
接下来是手工编译安装的过程
[root@localhost src]# yum install gcc gcc-c++ -y...此处省略内容
[root@localhost src]# make linux-x86-64 'make编译'...此处省略内容
[root@localhost src]# cd ..
[root@localhost john-1.8.0]# ls
doc README run src
[root@localhost john-1.8.0]# cd run
[root@localhost run]# ls '此时已经有john脚本'
ascii.chr john lm_ascii.chr makechr relbench unique
digits.chr john.conf mailer password.lst unafs unshadow
[root@localhost run]# ./john /etc/passwd /etc/shadow '运行脚本查看/etc/passwd /etc/shadow文件'
Loaded 4 password hashes with 4 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status '等待几分钟,若设置的密码在弱口令字典中,就会被识别出来密码,说明密码不够复杂,不太安全'
123123 (root)
123123 (lisi)
123123 (wangwu)
4g 0:00:01:14 100% 2/3 0.05368g/s 344.0p/s 363.4c/s 363.4C/s leslie..boston
Use the "--show" option to display all of the cracked passwords reliably
Session completed
[root@localhost run]# cat password.lst '查看弱口令字典'
端口扫描
- 一款强大的网络扫描,安全检测工具,可以探测局域网中那些主机在线,或者某台主机中开了那些端口
NMAP的扫描语法“
nmap [扫描类型] [选项] <扫描目标…>常用的扫描类型:
-sS,-sT,-sF,-sU,-sP,-P0-sT:TCP端口-sU:UDP端口-sP:ping
- nmap实验
[root@localhost run]# rpm -q nmap
未安装软件包 nmap
[root@localhost run]# yum install nmap -y
...此处省略内容[root@localhost run]# nmap -sP 192.168.197.0/24 '192.168.197.0/24是本台主机的网络号,此命令查看此网段中那些主机在线'Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-14 23:49 CST
Nmap scan report for 192.168.197.1
Host is up (0.00064s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.197.2
Host is up (0.000052s latency).
MAC Address: 00:50:56:EF:60:82 (VMware)
Nmap scan report for 192.168.197.254
Host is up (0.000077s latency).
MAC Address: 00:50:56:EA:BF:C1 (VMware)
Nmap scan report for 192.168.197.141
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.95 seconds[root@localhost run]# nmap -sT 192.168.197.141Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-14 23:52 CST
Nmap scan report for 192.168.197.141 '查看主机192.168.197.141开了哪些TCP端口'
Host is up (0.00078s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbindNmap done: 1 IP address (1 host up) scanned in 0.11 seconds
———————————————————————————————————
到此结束,感谢浏览~