系统安全 ——— 账号安全管理

账号安全管理

  • 系统账号管理
    • 账号清理
    • 账号安全设置
    • 删除历史命令
  • 用户切换与提权
    • 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/ifconfig

    3、如果已经启用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)控制类型3PAM模块及其参数

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

———————————————————————————————————

到此结束,感谢浏览~

Published by

风君子

独自遨游何稽首 揭天掀地慰生平