linux帐户安全管理与技巧

任务一:建立与删除普通用户账户,管理组

    管理帐户的俱行工具及功能如下:

    useradd [] 添加新用户

    usermod [] 修改已存在的指定用户

    userdel [-r] 删除已存在的指定帐户,-r参数用于删除用户自家目录

    groupadd [] 加新组

    groupmod [] 修改已存在的指定组

    groupdel 删除已存在的指定组

1)创建一个新用户user1,查看用户是否创建成功

    

    

2)创建一个新组group1

    groupadd group1

 

3)创建一个新用户user2并将其加入用户组group1中

    useradd -G group1 user2

4)创建一个新用户user3,指定登录目录为/www,不创建自家用户目录(-M)

    useradd -d /www -M user3

5)将用户user2添加到附加组group1中

    usermod -G group1 user1

    至此,group1组中有user1,user2两个用户,用命令查看/etc/group文件如下图:

  

   3、4、5通过cat /etc/passwd的结果:

  

    (注:用户user3不属于组group1中的用户)

6)删除用户user3,用户uers3从用户组中消失

    userdel user3      

    

        

7)删除用户user2,同时删除自家目录

    userdel -r user2

    

8)删除组group1,则组group1中的用户则被分配到其自己分配的私有组中。

    

    groupdel group1

任务二:用户口令管理与口令时效管理

(1)passwd命令

    passwd命令用来设置用户口令,格式为:passwd [] []

    用户修改自己的用户密码可直接键入passwd,若修改其他用户密码需加用户名。超级用户还可以使用如下命令进行用户口令管理:

    passwd -l //禁用用户帐户口令

    passwd -S //查看用户帐户口令状态

    passwd -u //恢复用户帐户口令

    passwd -d //删除用户帐户口令

    在创建完用户user1后,没给用户passwd口令时,账户默认为禁用状态:

    

1. 给用户user1创建口令,设置为:111111

    

    passwd user1

    接下来我们再次查看user1状态时,则为如下图所示:

    

    密码已经设置,且为SHA512加密

2. 禁用账户user1

    

    passwd -l user1

3. 恢复账户user1的账户口令:

    passwd -u user1

    

4. 删除用户账户口令

    passwd -d user1

    

    用户user1的密码即为空。

(2)chage命令

    下面列出了chage命令的选项说明:

    -m days: 指定用户必须改变口令所间隔的最少天数。如果值为0,口令就不会过期。

    -M days: 指定口令有效的最多天数。当该选项指定的天数加上-d选项指定的天数小于当前的日期时,用户在使用该帐号前就必须改变口令。

    -d days: 指定从1970年1月1日起,口令被改变的天数。

    -I days: 指定口令过期后,帐号被锁前不活跃的天数。如果值为0,帐号在口令过期后就不会被锁。

    -E date: 指定帐号被锁的日期。日期格式YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。

    -W days: 指定口令过期前要警告用户的天数。

    -l: 列出指定用户当前的口令时效信息,以确定帐号何时过期。

    例如下面的命令要求用户user1两天内不能更改口令,并且口令最长的存活期为30天,并且口令过期前5天通知用户

    chage -m 2 -M 30 -W 5 user1

    可以使用如下命令查看用户user1当前的口令时效信息:chage -l user1

    

任务三:PAM可插拔验证模块

1. 指定密码复杂性

    修改/etc/pam.d/system-auth配置:(注意:在root用户下进行,其余用户对这个文件只有读的权限)

    vi /etc/pam.d/system-auth

    限制密码最少有:2个大写字母,3个小写字母,3个数字,2个符号

    文件中有一行为:

    password requisite pam_cracklib.so try_first_pass retry=3

    在其后追加如下参数:

    ucredit=-2 lcredit=-3 dcredit=-3 ocredit=-2

2. 验证时若出现任何与pam_tally有关的错误则停止登录

    auth required pam_tally.so onerr=fail magic_root

 

3. 账号验证过程中一旦发现连续5次输入密码错误,就通过pam_tally锁定此账号600秒

    account required pam_tally.so deny=5 lock_time=600 magic_root reset

    

分析与思考
1)思考还有哪些加强linux账户安全的管理方法?
1.设置密码最小长度
2.设置密码最长使用期限
2)比较一下linux账户跟unix账户管理的异同。

Unix是linux的祖先 ,linux是一种类unix系统。

  • Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。

  • 这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一 个黑箱之中,只有相关的开发人员才能够接触的产品的原型。

另外两大区别:
UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上。

UNIX是商业软件,而Linux是自由软件,免费、公开源代码的。

3)对密码策略有效性的验证

(1)、pam_access验证模块 
pam_access验证模块一般与account验证类型一同使用。它主要用于对访问进入管理,提供基于登录名、主机名或域名、公网IP地址或网络号,以及非网络登录时的tty名称的访问控制。pam_access验证模块主要是根据/etc/security/access.conf配置文件中的内容,来进行相应的验证工作的。如果access.conf文件不在缺省的/etc/security/目录,你可以在其后使用accessfile参数指定自定义配置文件的绝对路径。
  /etc/security/access.conf配置文件中的每一行都由如下三个字段构成,中间用冒号隔开: 
  permission:users/groups:origins 
  permission(权限)字段可以用“+”,即允许访问,“-”禁止访问来表示相应的权限。 
  users/groups(用户或组)字段可以是一个或几个登录名、组名及ALL(表示任何人)的一个清单。要区分哪个是用户名,哪个是组名,可以将组名加入到一个括号中,例如(groups)。
  origins(来源)字段可以是非网络登录时的tty名称、主机名、域名(以“.”开始)、主机地址、网络号(以“.”结束)、带有子网掩码的公网IP地址,以及ALL(表示任何主机)和LOCAL只要不包含“.”的所有字符)。还可以使用EXCEPT操作符来表示除…之外。
(2)、pam_cracklib验证模块 
    pam_cracklib验证模块通常只与password验证类型一起使用。这个验证模块可以通过插入password堆栈,为特殊的应用提供可插入式密码强度性检测。它的工作方式就是先提示用户输入密码,然后使用一个系统字典和一套规则来检测输入的密码是否不能满足强壮性要求。密码的强度检测分二次进行,第一次只是检测密码是否是提供的对比字典中的一部分,如果检测结果是否定的,那么就会提供一些附加的检测来进一步检测其强度,例如检测新密码中的字符占旧密码字符的比例,密码的长度,所用字符大小写状况,以及是否使用了特殊字符等等。
  由于pam_cracklib验证模块提供了细致的密码强度检测,因此,当我们在使用时,必需为它指定相应的额外检测选项。这些选项包括: 
  debug:此选项表示将模块信息写入系统日志 
  type=xxx:此选项用来修改缺省的密码提示文本,例如,如果缺省提示输入密码的文本为“New Passwork:”,那么你就可以通过设置type=my password:来改变提示文本。  
retry=N:此选项定义用户在重试输入多少次密码后,返回一个错误信息,然后不准继续输入。缺省是1次。 
  difok=N:此选项用来定义新密码中必须有几个字符要与旧密码不同,如果新密码中有1/2以上的字符与旧密码不同时,该新密码就会被接受。 
    difignore=N:此选项用来设定在difok之前收到多少个字符时,difok设置会被忽略,缺省为23。 
  minlen=N:此选项用来设置新密码的最小长度。 
   dcredit=N:此选项用来设定新密码中可以包含数字的最大数目。 
  ucredit=N:此选项用来设定新密码中可以包含的大写字母的最大数目。 
   lcredit=N:此选项用来设定新密码中可以包含的小写字母的最大数目。 
  ocredit=N:此选项用来设定新密码中可以包含的特殊字符的最大数目。 
    minclass=N:此选项用来规定新密码中的字符类别的最小数目,字符一般有四种类别:数字、大写字母、小写字母,以及特殊字符。 
    use_authtok:在某个与密码相关的验证模块后使用此选项,例如pam_unix.so验证模块,可以强迫此模块不提示输入密码,而使用上面设置的另一种方式,例如pam_cracklib.so。
    dictpath=/path/to/dict:指定cracklib目录路径。 
(3)、pam_limit验证模块 
pam_limits验证模块通常与session验证类别一同使用。它主要用来限制用户在会话过程中对系统资源的使用,即使UID=0的用户也受它的限制。此模块使用一个独立的配置文件来设置对系统资源的限制情况,默认的配置文件是/etc/security/limits.conf,在使用中可以用conf选项来指定配置文件所在的位置。当你使用pam_limits验证模块时,先对此配置文件进行相应的设置总是一个不错的选择。
    /etc/security/limits.conf配置文件的设置语法如下: 
    <domain> <type> <item> <value> 
配置文件语法格式中的“domain”列可以是用户名、采用@group语法的组名,还可以用通配符“*”来表示任何用户,以及使用“%”通配符来只限制maxlogins,并可以采用%group的语法格式。
  配置文件语法格式中的“type”列有两个值: 
  soft:用来设置对系统资源的软限制,它允许用户所使用的系统资源可以在设定的硬限制值的规定范围来上下浮动。 
  hard:用来设置对系统资源的硬限制,这些硬限制由超级用户设置,并由系统内核来执行。普通用户对系统资源的使用率不能超过设置的硬限制设定值。 
    配置文件语法格式中的“item”和“value”是成对使用的,“item”表示某类具体的系 
统资源,而“value”就是“item”的值。在limits.conf配置文件中可以设置的系统资源有: 
  core:    核心文件的大小 (KB) 
  data:     最大的数据包大小(KB) 
  fsize:     最大的文件大小(KB) 
  memlock: 最大可用的内存空间(KB) 
  nofile:    最大可以打开的文件数量 
  rss:      最大的可驻留空间(KB) 
  stack:    最大的堆栈空间(KB) 
  cpu:      最大的CPU占用时间(minutes) 
  nproc:    最大允许运行的进程数量 
  as:       地址空间限制(KB) 
  maxlogins: 用户可以登录到系统的最多次数,UID=0的用户除外 
    priority:    优先运行的用户进程(负值越高的进程优先) 
    sigpending: 最大数量的等待信号(Linux2.6及以上内核) 
    msqqueue:  POSIX信息队列的最大可使用的内存(bytes)(Linux2.6及以上内核) 
    locks:      最大可锁定文件的数目(Linux2.4及以上内核的系统) 
  上面这些“item”项目是一些对系统资源使用情况非常有用的,新版本的PAM中还新加入了其它一些项目,你可以通过它的帮助文档得到它们的说明。需要注意的是,用户的限制优先级要高于组的限制,如果你为一个组设置了某种系统资源限制,但是其中的某个用户设置了另一级别的系统资源限制,那么,系统将会优先按用户级别的限制处理。另外,如果无限制可以使用“-”号表示。
  优先级高。 
(4)、pam_time验证模块 
pam_time验证模块通常与account验证类型一起使用。它并不对用户提供验证服务,而是用来限制用户在指定的日期、时间及终端线路上对系统或特定应用程序进行访问。
要正确使用Pam_time验证模块,必需有一个正确的/etc/security/time.conf相配套。此配置文件中每一行的语法格式为: 
services;ttys;users;times 
services字段:表示应用PAM功能的服务名称。 
ttys字段:应用此规则的终端名,可以“*”号表示任何终端,“!”表示非。 
users字段:应用此规则的用户名单或网络组名,可以“*”号表示任何用户,“!”表示非。 
times字段:指定时间,通常使用日期/时间范围的格式来表示。可以用星期几英文单词前两个字母来表示具体的日期,例如MoTuSa就是指星期一星期二和星期六。注意:重复的日期将会被取消,比如MoMo表示任何一天都没有。两个字母的组合有: Mo、Tu、We、Th、Fr、Sa、Su、Wk、Wd、Al, Mo到Su分别指从星期一到星期天,Wk指每一天,Wd指周末,Al也指每一天,例如AlFr指除星期五外的每一天。 时间采用24小时制,即HHMM(时分)的形式。日期/时间范围前可有“!”表表除此以外的所有日期/时间,用“-”连接指定的时间范围,如果结束时间小于开始时间,就表明时间持续到第二天的结束时间,例如Al1800-0800就是指每天下午6点整到第二天的早晨8点整。
(5)、pam_listfile验证模块 
pam_listfile验证模块通常与auth验证类型一起使用。此模块提供根据某个指定的文件来允许或禁止用户访问某个应用程序或服务的功能,这些被指定的文件必需事先存在,然后通过file参数来指定该文件。pam_listfile验证模块可以根据用户名、tty、rhost、ruser、用户组、使用的shell来对用户进行访问控制。
Pam_listfile验证模块可以使用的选项有: 
item=[tty|user|rhost|ruser|group|shell]:设置访问控制的对象类型。 
sense=allow|deny:用来指定当在保存“item”对象的文件中找不到item指定的对象时的动作方式,如果在文件中找不到相应的对象,则执行相反的动作。 
onerr=succeed|fail:用来指定当某类事件(如无法打开配置文件)发生时的返回值。 
file=filename:指定保存有“item”对象的文件位置。 
apply=[user|@group]:用指定使用非用户和组类别时,这些规则所适用的对象。当item=[user|ruser|group]时,这个选项没有任何意义,只有当item=[tty|rhost|shell]时才有意思。
(6)、pam_unix验证模块 
pam_unix提供基于/etc/passwd 和 /etc/shadow文件的类UNIX风格的认证。它适用所有的验证类型,包括:auth、account、 password、session。
当pam_unix验证模块与auth验证类型一起使用时,此模块可以使用的选项有debug、audit、use_first_pass、try_first_pass、nullok和nodelay,主要功能是验证用户密码的有效性,在缺省情况下(即不带任何参数时),该模块的主要功能是禁止密码为空的用户提供服务;
在作为account类型使用时,此时该模块可识别的参数有debug、audit,该模块主要执行建立用户帐号和密码状态的任务,然后执行提示用户修改密码,用户采用新密码后才提供服务之类的任务;
在作为password类型使用时,此时该模块可识别的参数有debug、 audit、 nullok;、not_set_pass、use_authtok、try_first_pass、use_first_pass、md5、bigcrypt、shadow、nis、
remember,该模块完成让用户更改密码的任务; 
在作为session类型使用时,此时该模块没有可识别的参数,该模块仅仅完成记录用户名和服务名到日志文件的工作。 
Pam_unix验证模块可以使用的选项有: 
debug:将调试信息写入系统日志,当pam_unix验证模块与所有验证类别使用时都有效。 
audit:提供比debug更多诊断调试,它只有当pam_unix验证模块与 auth、account及password验证类型使用时有效。 
nullok:默认情况下,如果密码为空,那么就不允许用户访某项服务,而使用此项后将则覆盖这个默认动作。它只有当pam_unix验证模块与 auth、和password验证类型使用时有效。
nodelay:当用户验证失败后,系统在给出错误信息时会有一个延迟,默认为2秒钟。当使用此选项后,将取消这个延迟。它只有当pam_unix验证模块与 auth验证类型使用时有效。
try_first_pass:当pam_unix验证模块与auth验证类型一起使用时,使用该选项将在提示用户输入密码前,尝试使用以往的密码验证方式来对用户进行验证。而当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定的密码与以前的旧密码相同。
use_first_pass:当pam_unix验证模块与auth验证类型一起使用时,使用该选项将在提示用户输入密码前,直接使用以往的密码验证方式来对用户进行验证。而当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定的密码与前面password提供的密码相同。
use_authok:当用户修改时,使用此选项强制用户使用前面堆叠验证模块提供的密码,例如由pam_cracklib验证模块提供的新密码。当pam_unix验证模块与password验证类型一起使用时有效。
md5:采用md5对用户密码进行加密, 当pam_unix验证模块与password验证类型一起使用时有效。 
shadow:使用用shadow密码,当pam_unix验证模块与password验证类型一起使用时有效。 
sha256:使用此选项,当下次修改密码时将用SHA256算法加密,如果SHA256的libcrypt不存在,就会重新使用MD5加密密码。Sha512与此选项相同,只是加密强大不同而已。当pam_unix验证模块与password验证类型一起使用时有效。
rounds=n:用来指定使用SHA256和SHA512算法加密密码时重复哈希算法的次数。当pam_unix验证模块与password验证类型一起使用时有效。 
remember=n:使用此选项将会将n个使用过的旧密码,以MD5的方式加密后保存到/etc/security/opasswd文件中。当pam_unix验证模块与password验证类型一起使用时有效。

4)系统日志查看内容

【开始】→【运行】→输入 eventvwr.msc ->“事件查看器”

在“事件查看器”当中的系统日志中包含了系统组建记录的事件,在启动过程中加载驱动程序和其他一些系统组建的成功与否都记录在系统日志当中。

 

 

posted @ 2021-09-10 09:36  乐忧hh  阅读(415)  评论(0)    收藏  举报