Linux账户安全

一.Linux账户与组的基本概念

在Limux操作系统中,每一个文件和程序都归属于一个特定的 “用户”。每个用户都由一个唯一的身份来标识,这个标识称为用户ID (UserID, UID
)。系统中的每一个用户也至少需要属于一个“用户分组”,即由系统管理员所建议的用户小组,这个小组中包含着许多系统用户。与用户一样,用户分组也是由一个唯一
的身份来标识的,该标识称为用户分组ID (GroupID
GID)。用户可以归属于多个用户分组。对某个文件或程序的访问是以它的UID和GID为基础的。一个执行中的程序继承了调用它的用户的权利和访问权限。一般来说,
用户和组有如下几种对应关系:

  • 一对一:某个用户可以是某个组的唯一成员。

  • 多对一:多个用户可以是某个唯一的组的成员, 不归属其他用户组。

  • 一对多:某个用户可以是多个用户组的成员。

  • 多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组。

每个用户的权限可以被定义为普通用户和根用户(root)。普通用户只能访问其拥有的或者有权限执行的文件。根用户能够访问系统全部的文件和程序,而不论根用户是否是这些文件和程序的所有者。根用户通常也称“超级用户””其权限是系统中最大的,可以执行任何操作。

二.Linux账户信息的关键文件

1.Password用户账号文件
#  /etc/passwd文件是Linux安全的关键文件之一。该文件用于用户登录时校验用户的登录名(LOGNAME),加密的口令数据项(PASSWORD),用户ID(UID),默认的用户分组ID(GID),用户信息(USERINFO),用户登录子目录以及登录后使用的shell(SHELL).这个文件的每一行保存一个用户的资料,而用户资料的每一个数据项采用冒号":"分割,如下所示:




[root@localhost ~]# cat /etc/passwd | grep 'root'
root:x:0:0:root:/root:/bin/bash
解析:
登录名:root
加密后的口令表示:x  #一般使用不可逆的加密算法。
UID:0
GID:0
用户信息:root
宿主目录/家目录:/root
登录后执行的shell:/bin/bash
​


​
#   在安全检查中需要着重注意该文件的权限,默认/etc/passwd文件的权限为0644.使用命令stat  /etc/passwd进行检查,如果该文件的权限和属主发生了异常情况(如误操作或入侵事件),需要引起注意。



[root@localhost ~]# stat /etc/passwd
  文件:"/etc/passwd"
  大小:2429       块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:18064261    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2022-05-16 14:45:23.469999910 +0800
最近更改:2022-04-25 16:32:16.217576422 +0800
最近改动:2022-04-25 16:32:16.217576422 +0800
创建时间:-
[root@localhost ~]# 
2.Shadow用户影子文件
#   linux使用不可逆的加密算法加密口令。由于加密算法是不可逆的,所以从密文时得不到明文的。但/etc/passwd文件是全局可读的,加密算法是公开的,恶意用户获取/etc/passwd文件后,便极有可能破解口令。而且,在计算机性能日益提高的今天,对帐户文件进行字典攻击的成功率会越来越高,速度越来越快。因此,针对这种安全问题,Linux/UNIX广泛采用了"Shadow(影子)文件"机制,而加密的口令转移到/etc/shadow文件里,该文件只为root超级用户可读,而同时/etc/passwd/文件的密文域显示为一个X,从而最大限度地减少了密文泄露的机会
​



[root@localhost ~]# cat /etc/shadow
username:passwd:lastchg:min:max:warn:inactive:expire:flag
解析:
username:用户的登录名
passwd:加密的用户口令
lastchg:最后一次修改事件:表示从1970年1月1日起到上次修改口令所经过的天数
min:最小修改时间间隔:表示两次修改口令之间至少经过的天数
max:密码有效期:表示口令还会有效的最大天数,如果是99999则表示永不过期
warn:密码需要更改前的警告天数:表示口令失效期多少天内系统向用户发出警告
inactive:密码过期后的宽限天数
expire:账户失效时间:表示用户被禁止登录的时间
flag:保留域,暂未使用
3.group组账号文件
#  /etc/passwd文件中包含着每个用户默认的分组ID(GID).在/etc/group文件中,这个GID被映射到该用户分组的名称以及统一分组的其他成员中去。
​



[root@localhost ~]# cat /etc/group
组名:用户组口令:组标识号:组内用户列表
"组名":是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令":字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
"组标识号":与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表":是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
4.组账号文件gshadow
#    如同用户账号文件的作用一样,组行号文件也是为了加强组口令的安全性,防止黑客对其施行暴力攻击,而采用的一种将组口令与与组的其他信息相分享的安全机制。其格式包括用户组名,加密的组口令和组成员列表。



[root@localhost ~]# groupadd wanan  //添加用户组
[root@localhost ~]# gpasswd wanan   //给用户组设置密码为123
正在修改 wanan 组的密码
新密码:
请重新输入新密码:
[root@localhost ~]# cat /etc/gshadow | grep 'wanan'
wanan:$6$aWR/c/VciOaU$J8trSU3fJWNDKHn3Z.m6Frtu7UKCDp6YZmUo8NNjSMtylKtG.ZjI6xz9yC.WdEuuGIKb0JIB5D898/kjeO22P1::
[root@localhost ~]# 

三.Linux账户与组管理操作

1.添加账户
Ⅰ.useradd命令

相关参数:

  • -c comment:描述新用户账号,通常为用户全名

  • -d home_dir:设置用户主目录,默认值为用户登录的登录名,并放在/home/目录下

  • -D :创建新账号后保存为新账号设置的默认信息

  • -e expire_date:用YYYY-MM-DD格式设置账号过期日期

  • -f inactivity:设置口令失效时间。inactivity值为0时,口令失效后账户立即失效

  • -g 设置基本组

  • -k 框架目录:设置框架目录,该目录包含用户的初始配置文件,创建用户时间时该目录下的文件都被复制到用户主目录下

  • -m 自动创建用户主目录,并把框架目录(默认为/etc/skel)下的文件复制到用户主目录下

  • -M 不创建用户主目录

  • -r 允许保留的系统账号,使用用户ID创建一个新账号

  • -s shll 类型 :设定用户使用的登录shell类型

  • -u 用户ID:设置用户ID

      -b, --base-dir BASE_DIR            新账户的主目录的基目录
    

    -c, --comment COMMENT         新账户的 GECOS 字段
     -d, --home-dir HOME_DIR         新账户的主目录
     -D, --defaults                       显示或更改默认的 useradd 配置
      -e, --expiredate EXPIRE_DATE 新账户的过期日期
     -f, --inactive INACTIVE               新账户的密码不活动期
     -g, --gid GROUP                   新账户主组的名称或 ID
     -G, --groups GROUPS             新账户的附加组列表
     -h, --help                                       显示此帮助信息并推出
     -k, --skel SKEL_DIR                   用此目录作为骨架目录
     -K, --key KEY=VALUE                   不使用 /etc/login.defs 中的默认值
     -l, --no-log-init                         不要将此用户添加到最近登录和登录失败数据库
     -m, --create-home                   创建用户的主目录
     -M, --no-create-home         不创建用户的主目录
     -N, --no-user-group                 不创建同名的组
     -o, --non-unique                 允许使用重复的 UID 创建用户
     -p, --password PASSWORD 加密后的新账户密码
     -r, --system                                   创建一个系统账户
     -R, --root CHROOT_DIR                chroot 到的目录
     -P, --prefix PREFIX_DIR                 prefix directory where are located the /etc/* files
     -s, --shell SHELL                   新账户的登录 shell
     -u, --uid UID                       新账户的用户 ID
     -U, --user-group                     创建与用户同名的组
     -Z, --selinux-user SEUSER     为 SELinux 用户映射使用指定 SEUSER

    例:创建一个用户名为David的用户,其描述信息为"Project manager",用户组为Project_group(如果系统中没有这个组,需要事先创建这个组)。登录shell为/bin/bash,登录主目录为/home/david。

    [root@localhost ~]#groupadd Project_manager
    [root@localhost ~]# useradd -r david -c “Project manager” -g Project_group -s /bin/bash -d /home/david
    [root@localhost ~]# id david
    uid=988(david) gid=1003(Project_group) 组=1003(Project_group)
    [root@localhost ~]#

Ⅱ.adduser命令
例:创建zaoan用户



[root@localhost ~]# adduser zaoan
Ⅲ.修改/etc/passwd配置文件
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]# cat /etc/passwd | grep 'wuan'
wuan:x:1002:1002:This is a wuan:/home/wuan:/bin/bash
[root@localhost ~]# id wuan
uid=1002(wuan) gid=1002(wanan) 组=1002(wanan)
[root@localhost ~]# 
2.添加组
Ⅰ.groupadd命令
#语法格式:groupadd   [选项]  用户组名
选项:
  -f, --force       如果组已经存在则成功退出,并且如果 GID 已经存在则取消 -g
  -g, --gid GID                 为新组使用 GID
  -h, --help                    显示此帮助信息并推出
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -o, --non-unique              允许创建有重复 GID 的组
  -p, --password PASSWORD       为新组使用此加密过的密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       directory prefix
​



例子:创建一个GID为6830,组名为test_group的用户组,命令如下:
[root@localhost ~]# groupadd -g 6830 test_group  //创建成功
[root@localhost ~]# groupadd -g 6831 test_group  //由于组名不唯一,所以创建失败
groupadd:“test_group”组已存在
[root@localhost ~]# groupadd -g 6831 -f -o test_group //由于组名不唯一,所以创建失败,但是不提示
[root@localhost ~]# groupadd -g 6830 test_group1  //由于GID不唯一,所以创建失败
groupadd:GID “6830”已经存在
[root@localhost ~]# groupadd -f -g 6830 test_group1 //使用-f选项,则创建成功,gid递增为6831
[root@localhost ~]# groupadd -g 6830 -f -o test_group1 //综合使用-f和-o选项,系统将Gid设置6831
Ⅱ.修改/etc/groups配置文件
[root@localhost ~]# vim /etc/group
[root@localhost ~]# cat /etc/group | grep "test_group2"
test_group2:x:6832:
[root@localhost ~]# groupadd test_group2
groupadd:“test_group2”组已存在
[root@localhost ~]# 


​
3.给用户或组设置口令
Ⅰ.给用户设置口令
第一种:passwd  用户名
[root@localhost ~]# passwd zaoan
更改用户 zaoan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# 
第二种:使用echo 密码  | passwd --stdin 用户
[root@localhost ~]# echo centos | passwd --stdin zaoan
更改用户 zaoan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# 
Ⅱ.给组设置口令
语法格式:gpasswd  组名
[root@localhost ~]# gpasswd test_group2
正在修改 test_group2 组的密码
新密码:
请重新输入新密码:
[root@localhost ~]# 
4.修改账户和组信息
Ⅰ.usermod命令
#语法格式:
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
#选项:
-c<备注>       修改用户帐号的备注文字。
-d登入目录>     修改用户登入时的目录。
-e<有效期限>    修改帐号的有效期限。
-f<缓冲天数>    修改在密码过期后多少天即关闭该帐号。
-g<群组>       修改用户所属的群组。
-G<群组>       修改用户所属的附加群组。
-l<帐号名称>    修改用户帐号名称。
-L            锁定用户密码,使密码无效。
-s<shell>     修改用户登入后所使用的shell。
-u<uid>       修改用户ID。
-U            解除密码锁定。
​



例子:使用usermod命令将zaoan的组改为root,用户id改为2021
[root@localhost ~]# usermod -g root -u 2021 zaoan
[root@localhost ~]# id zaoan
uid=2021(zaoan) gid=0(root) 组=0(root)
[root@localhost ~]# 
​
使用usermod命令将zaoan的用户描述改为database manager ,其登录shell改为/bin/sh;
[root@localhost ~]# usermod -s /bin/sh -c "database 1manager" zaoan
[root@localhost ~]# cat /etc/passwd | grep 'zaoan'
zaoan:x:2021:0:database 1manager:/home/zaoan:/bin/sh
[root@localhost ~]# 
​
​
在某些情况下需要锁定用户,即暂时不允许该用户登录。例如:临时锁定test用户,不允许其登录,那么可以使用命令
usermod -L 用户
[root@localhost ~]# usermod -L zaoan
[root@localhost ~]# su zaoan
bash-4.2$ ls
ls: 无法打开目录.: 权限不够
​
​
解除用户锁定状态的命令:
[root@localhost ~]# usermod -U zaoan
[root@localhost ~]# su zaoan
Ⅱ.groupmod命令
#语法格式:groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
​
#选项:
  -g, --gid GID                 将组 ID 改为 GID
  -h, --help                    显示此帮助信息并推出
  -n, --new-name NEW_GROUP      改名为 NEW_GROUP
  -o, --non-unique              允许使用重复的 GID
  -p, --password PASSWORD       将密码更改为(加密过的) PASSWORD
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
​
​



例子:将组test_group的名称改为team,需要注意的是,更换的新名称在老名称之前
[root@localhost ~]# groupmod -n team test_group
例子:将组team的GID改为6840
[root@localhost ~]# groupmod -g 6840 team
例子:将组team的GID更改为6830,名称改为test_group
[root@localhost ~]# groupmod -g 6830 -n test_group team
5.删除用户和组
Ⅰ.userdel命令
#语法格式:userdel  -r  用户名
Ⅱ.配置/etc/passwd文件
#将目标用户所在那一行删除
Ⅲ.groupdel命令
#语法格式:groupdel  组名 
Ⅳ.配置/etc/group文明
#将目标组名所在的哪一行删除
6.其他操作命令
Ⅰ.chfn:修改用户信息
#语法作用:主要用来修改用户的全名,办公室地址,电话等。
#语法格式:
chfn [-f full-name][-o office][-p office-phone][-h home-phone][-u][-v][username]
-u | --help显示帮助文档
​
-v | --version显示命令版本
​
-f | --full-name设置真实姓名
​
-o | --office设置办公室地址
​
-h | --home-phone设置家庭电话
​
-p | --office-phone设置办公室电话
Ⅱ.chsh:改变用户的shell类型
#语法格式:chsh [-s shell][--list-shells][--help][--version][username]
-s或--shell:更改系统预设的shell环境。; 
-l或--list-shells:列出目前系统可用的shell清单;
-u或--help:在线帮助; 
-v或-version:显示版本信息。

四.Linux账户密码安全配置

1.密码复杂度设置
#   linux系统中,设置密码强度时安全领域中十分重要的环节。弱密码复杂度设定包含两种方式:第一种是使用命令authconfig;第二种是修改文件/etc/pam.d/system-auth内容。
Ⅰ.authconfig命令

authconfig命令功能非常丰富,下面只介绍密码相关参数。

  • –passminlen= :最小密码长度

  • –passminclass=:最小字符类型数

  • –passmaxrepeat=:每个字符重复的最大数

  • –passmaxclassrepeate=:密码中同一类的最大连续字符数

  • –update:更新设置到配置文件中

    例如:需要设定用户的密码必须不小于8位且其中包含大写字母,小写字母,数字和其他字符,每个字符最多重复两次。使用命令如下:
    [root@localhost ~]# authconfig --passminlen=8 --passminclass=4 --passmaxrepeat=2 --update
    [root@localhost ~]# cat /etc/security/pwquality.conf
    minlen = 8   //最大长度为8
    minclass = 4 //密码中必须包含4种类型
    maxrepeat = 2 //每个字符最多重复两次
    maxclassrepeat = 0 //同一类字符连续数位0
    lcredit = 0
    ucredit = 0
    dcredit = 0
    ocredit = 0


    使用用户zaoan测试,输入弱密码123456:
    [root@localhost ~]# useradd ah1
    [root@localhost ~]# passwd
    更改用户 root 的密码 。
    新的 密码:  
    无效的密码:密码少于8个字符

Ⅱ.使用/etc/pam.d/system-auth文件
#   system-auth文件属于Linux的PAM认证系统中的cracklib模块,该模块能提供额外的密码检测能力,且在Centos中已经默认安装。同时,system-auth文件时密码设置及登录的控制文件,因此可以通过修改该文件内容设置密码复杂度。

system-auth文件包含4个组件:auth,account,password,session

  • auth组件:认证接口,要求并验证密码

  • account组件:检测是否允许访问。检测账户是否过期或者在末端时间内能否登录

  • password组件:设置并验证密码

  • session组件:配置和管理用户session

    [root@localhost ~]# cat /etc/pam.d/system-auth

    auth       required     pam_env.so
    auth       required     pam_faildelay.so delay=2000000
    auth       sufficient   pam_fprintd.so
    auth       sufficient   pam_unix.so nullok try_first_pass
    auth       requisite     pam_succeed_if.so uid >= 1000 quiet_success
    auth       required     pam_deny.so


查看/etc/pam.d/system-auth

该文件支持四种依赖关系:required,requisite,sufficient,optinal

  • required<要求>:该模块必须success才能继续。即使失败用户也不会立刻获知,直到所有相关模块完成。

  • requisite<必需的>:该模块必须success才能使认证继续进行

  • sufficient<足够的>:如果失败则忽略

  • optinal:无论是否失败将忽略结果

其中pam_cracklib.so支持的选项如下:

  • minlen=N:新密码的最小长度

  • dcredit=N:当N>0时表示新密码中数字出现的最多次数;当N<0时表示新密码中数字出现的最小次数

  • ucredit=N:当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现的最小次数

  • lcredit= N:当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现的最小次数

  • ocredit=N:当N>0时表示新密码中特殊字符出现的最多次数;当N<0时表示新密码中特殊字符出现的最小次数

  • maxrepeat=N:拒绝包含多个N个相同连续字符的密码。默认值为0表示禁用此检查。

  • maxsequence=N:拒绝包含长于N的单调字符序列的密码。默认值为0表示禁用此检查;实例是‘12345’或‘fedcb’。除非序列只是密码的一小部分,否则大多数此类密码都不会通过吉纳丹检查

  • enforce_for_root:如果用户更改密码是root,则模块将会在失败检查时返回错误。默认情况下,此选项处于关闭状态,只打印失败检查的消息。但root仍可以更改密码。

2.密码策略设置
#  Linux系统中设置密码策略是安全领域中十分重要的环节。密码策略的设定包括三种方法:第一种方法修改/etc/shadow文件配置策略;第二种方法是使用chage配置策略;第三种方法是修改/etc/login.defs配置文件。
Ⅰ.修改/etc/shadow文件配置策略
例如:设置用户的密码策略为:密码最长有效期为90天;密码修改之间最小天数为10天,口令生效前5天开始通知用户修改密码,密码过期后宽限时间为7天。
#修改前:
[root@localhost ~]# cat /etc/shadow  | grep hehao
hehao:$6$xI81rvuf$2cef2BCsnHXaN.RINKlFYmVjcq8yXEd9u8jEpsRhid8t/7mprbui2gjusl9I3n.ToBc8ymhaG4xpb7HuRruts1:19130:0:99999:7:::
#修改
[root@localhost ~]# vim /etc/shadow 
#修改后
[root@localhost ~]# cat /etc/shadow  | grep hehao
hehao:$6$xI81rvuf$2cef2BCsnHXaN.RINKlFYmVjcq8yXEd9u8jEpsRhid8t/7mprbui2gjusl9I3n.ToBc8ymhaG4xpb7HuRruts1:19130:10:90:5:7::
[root@localhost ~]# 
Ⅱ.使用chage命令策略配置
使用chage命令可以显示更加详细的用户密码信息,还可以修改密码策略
#基本语法:chage  [选项]  用户名
选项
# -l:列出用户的详细密码状态
# -d 日期 :修改/etc/shadow文件中指定用户密码信息的第三个字段,即最后一次修改密码的日期,格式为YYYY-MM-DD。
# -m 天数:修改密码最短保留天数,即/etc/shadows文件中的第四个字段
# -M 天数:修改密码的有效期,即/etc/shadow文件中的第五个字段
# -W 天数:修改密码到期前的警告天数,即/etc/shadow文件中的第六个字段
# -I 天数:修改密码到期前后的宽限天数,即/etc/shadow文件中的第七个字段
# -E 日期:修改账号的失效日期,格式为YYYY-MM-DD,即/etc/shadow文件中的第八个字段
​
​



举例:
#查看用户hehao的密码状态
[root@localhost ~]# chage -l hehao
最近一次密码修改时间                  :5月 18, 2022 -d
密码过期时间                         :8月 16, 2022 
密码失效时间                         :8月 23, 2022 
帐户过期时间                         :从不  -E
两次改变密码之间相距的最小天数          :10  
两次改变密码之间相距的最大天数          :90  -
在密码过期之前警告的天数               :5   -W
[root@localhost ~]# 
#设置密码过期时间为2022年5月20号
[root@localhost ~]# chage -E 2022-05-21 hehao
​
​
举例:设置hehao用户密码策略为:密码最长有效期为90天,口令生效前5天开始通知用户修改密码,密码过期后宽限天数为7天且用户首次登录需要重设密码。
[root@localhost ~]# chage -d 0 -M 90 -W 5 -I 7 hehao
[root@localhost ~]# cat /etc/shadow | grep hehao
hehao:$6$xI81rvuf$2cef2BCsnHXaN.RINKlFYmVjcq8yXEd9u8jEpsRhid8t/7mprbui2gjusl9I3n.ToBc8ymhaG4xpb7HuRruts1:0:0:90:5:7::
[root@localhost ~]#su hehao
password:
you are required to chage your password immendiately (root enforced)
Changing password for hehao:
(current) UNIX password:
Ⅲ.修改/etc/login.defs配置文件
#   /etc/login.defs文件用于在创建用户时对用户的一些基本属性进行默认设置,如指定用户UID和GID的范围,用户的过期时间,密码的最大长度等。
#   需要注意的是,该文件的用户默认设置对root用户无效,并且当此文件中的配置与/etc/passwd和/etc/shadow文件中的用户信息有冲突时,系统会以/etc/passwd和/etc/shadow文件为准。
#login.defs配置文件参数:
​
#MAIL_DIR        /var/spool/mail  
-->创建用户时,系统会在目录/var/spool/mail中创建一个用户邮箱,如lamp用户的邮箱是/var/spool/mail/lamp
​
#PASS_MAX_DAYS   99999
-->密码的有效期,99999是自1970年1月1日的起始密码有效天数,相当于237年,可以理解为永久
​
#PASS_MIN_DAYS   0
-->表示自上次修改密码以来,最少隔多少天后用户才能修改密码,默认值为0
​
#PASS_MIN_LEN    5
-->指的是密码的最小长度,默认不小于5位,但是现在用户登录时验证已经被PAM模块取代,所以这个选型并不生效
​
#PASS_WARN_AGE   7
-->指定在密码到期前多少天,系统就开始通知用户密码即将到期,默认7天
​
#UID_MIN                  1000
-->指定用户的最小UID为1000
​
#UID_MAX                 60000
-->指定用户的最大UID为1000
​
#GID_MIN                  1000
-->指定用户组的最小GID为1000
​
#GID_MAX                 60000
-->指定用户组的最大GID为1000
​
#SYS_GID_MIN               201
-->指定系统用户组的最小GID为201
​
#SYS_GID_MAX               999
-->指定系统用户组的最大GID为999
​
#CREATE_HOME     yes
-->指定在创建用户时,是否同时创建用户主目录,yes表示创建
​
#UMASK    077
-->用户主目录的权限默认设置为077
​
#USERGROUPS_ENAB yes
-->指定删除用户的时候是否同时删除用户组,这里指的时删除用户的初始组,此项的默认项为yes
​
​
#ENCRYPT_METHOD SHA512
-->指定用户密码采用的加密规则,默认采用SHA512,这是新的密码加密模式,原来的linux只能使用DES或MD5加密
3.用户远程登录次数限制
#   有一些攻击性软件试专门采用暴力破解密码形式反复进行登录尝试(如Hydra).对于这种情况,可以调整用户登录次数限制,使其密码输入3次后自动锁定,并且设置锁定时间,在锁定时间内即使密码输入正确也无法登录。
#   打开/etc/pam.d/sshd文件,在#%PAM-1.0的下面,加入下面的内容,表示当密码输入错误达到3次,就锁定用户150秒;如果root用户输入密码错误达到3次,锁定300秒。这里锁定的意思是即使密码正确也无法登录。



[root@localhost ~]# vim /etc/pam.d/sshd 
#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       required     pam_tally2.so    deny=3 unlock_time=150 even_deny_root root_unlock_time=300
​
其中,deny表示限制错误尝试次数;unlock_time表示普通用户锁定时间;even_deny_root表示开启root用户锁定;root_unlock_time表示root用户锁定时间
​
[root@localhost ~]# ssh ah1@192.168.80.132
ah1@192.168.80.132's password: #输错密码第一次
Permission denied, please try again.
ah1@192.168.80.132's password:  #输入密码第二次
Permission denied, please try again.
ah1@192.168.80.132's password:  #输入密码第三次
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@localhost ~]# ssh ah1@192.168.80.132
ah1@192.168.80.132's password: 
Permission denied, please try again.
#重新登录,输入正确也无法登录
4.禁止用户随意切换至root
#  在linux中,有一个默认的管理组wheel。在实际生产环境中,即使有系统管理员root的权限,也不推荐使用root用户登录。一般情况下用普通用户邓丽就可以了,在需要root权限执行一些操作时,在使用su命令登录root用户。但是,如果有人知道了root密码,就可以通过su命令登录称为root用户,这无疑为系统带来了安全隐患。
​
#为了预防此类安全事件,可以限制只有wheel组的用户才可以使用su命令切换为root.将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户、然后设置只有wheel组内的成员可以使用su命令切换到root用户,从而实现禁止用户随意切换至root的功能。
​



#配置方法需要修改/etc/pam.d/su文件,该文件用户控制su命令运行中的程序控制。在第一行加人auth required pam wheel.so group=wheel即可
​
[root@localhost ~]# vim /etc/pam.d/su
#%PAM-1.0
auth            required        pam_wheel.so   group=wheel
auth            sufficient      pam_rootok.so
[root@localhost ~]# su ah1
[ah1@localhost root]$ vim /etc/pam.d/su
[ah1@localhost root]$ su 
密码:
su: 拒绝权限
[root@localhost ~]# usermod -G wheel ah1
[ah1@localhost root]$ su 
密码:
[root@localhost ~]# 

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值