Java教程

系统安全与应用

本文主要是介绍系统安全与应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、账号安全基本措施

1.系统账号清理

(1)将非登录用户的Shell设为/sbin/nologin

          usermod -S /sbin/nologin

(2)锁定长期不使用的账号

         usermod-L用户名

         passwd -|用户名

         passwd -S用户名

(3)删除无用的账号

         userdel [-r]将家目录一起删掉

(4)锁定账号文件passwd、shadow

        chattr +i /etc/passwd /etc/shadow(锁定文件并查看状态)

        Isattr /etc/passwd /etc/shadow(解锁文件并查看状态)

        chattr -i /etc/passwd /etc/shadow(解锁文件并查看状态)

[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
此刻解锁定可以添加修改密码

2.密码安全控制

(1)设置密码有效期

(2)要求用户下次登录时修改密码

适用于新用户
[root@localhost ~]# vim /etc/login.defs

#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   30
PASS_MIN_DAYS   0
:wq                                                
适用于老用户
[root@localhost ~]# chage -M 30 123
                             天数 用户名
[root@localhost ~]# cat /etc/shadow |grep 123
123:$6$1VOb.Rd.emlYopvT$tclzmGjvX3.y/pLPumnx.L1Ew4s8bCP2Ovc7tjYGO0R3/LljHB/gqlhuyleqjjsv1lJTwDoyTobYAJmLiULkH0::0:30:7:::
              我们可以通过此查看密码有效期

[root@localhost ~]# chage -d 0 123强制每次登陆都需要改密码
[root@localhost ~]# echo “123123” |passwd --stdin 123
                       更改用户123的密码为123123

3.命令历史限制

减少记录的命令条数

注销时自动清空命令历史

(1)产看历史history

[root@localhost ~]# history
    1  vim /etc/sysconfig/network-scripts/ifcfg-ens33 
    2  vim /etc/sysconfig/network-scripts/ifcfg-ens33 
    3  systemctl restart network
   。。。(以下还有好多,此处省略)

(2)临时隐藏历史

[root@localhost ~]# history -c 临时隐藏历史,关机重启后会再次显现
[root@localhost ~]# history
    1  history

(3)减少记录的命令条数

[root@localhost ~]# vim /etc/profile
输入/HIS<回车>
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=10(这这里修改)
:wq (保存退出)
[root@localhost ~]# source /etc/profile我们刷新一下
[root@localhost ~]# history
  391  chage -M 30 123
  392  cat /etc/shadow |grep 123
  393  su 123
  394  hitory
  395  history
  396  vim /etc/profile
  397  history
  398  source .bashrc
  399  source /etc/profile
  400  history
(现在我们就只显示最近十条历史)                                                     

(4)清空命令历史

[root@localhost ~]# vim .bashrc

# .bashrc
按o插入,在空白处输入
echo "" > ~/.bash_history                                                    
:wq  保存退出
[root@localhost ~]# source .bashrc 刷新
[root@localhost ~]# cat ./bash_history
(里面的东西空了)
[root@localhost ~]# reboot重启下
[root@localhost ~]# history历史就无了
    1  history

3.终端自动注销

闲置60秒后自动注销

[root@localhost ~]# vim .bash_profile
PATH=$PATH:$HOME/bin

export PATH
G到行尾,输入
export TMOUT=60 
<esc>输入                                                                          
:wq 保存退出
[root@localhost ~]# source .bash_profile  要刷新下
闲置60秒会自动注销

二、切换用户su命令

1.用途及用法

用途:Substitute User,切换用户

格式:su -用户名

2.密码验证

root→任意用户,不需要验证密码

普通用户→其他用户,需要验证目标用户的密码

[root@localhost ~]# su 123
[123@localhost root]$ pwd
/root
[123@localhost root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
不加-,保留目前所有的环境

[root@localhost ~]# su - 123
[123@localhost ~]$ pwd
/home/123
[123@localhost ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/123/.local/bin:/home/123/bin
加-,使用目标用户的shell环境,目录切换为目标用户的家目录

 查看当前用户名

[123@localhost ~]$ whoami
123
查看当前用户名

3.闲置使用su命令的用户

将允许使用su命令的用户加入wheel组

启用pam_wheel

[root@localhost pam.d]# vim su
将第六行开启,删除#
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid(开启后只有wheel组里面的用户才能使用su)
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so                                                                                
:wq
[123@localhost pam.d]$ su root
密码:
12^Hsu: 拒绝权限(这里权限被拒绝)

开启第二行,注释(#)第六行与注释第二行与第六行,都是所有用户都可以使用su命令

4. 查看su操作记录

安全日志文件:/var/log/secure

三、Linux中的PAM安全认证

1.su命令的安全隐患

(1)默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险

(2)为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

2.PAM(Pluggable Authentication Modules)可插拔式认证模块

(1)是一种高效而且灵活便利的用户级别的认证方式

(2)是当前Linux服务器普遍使用的认证方式

3.PAM认证原理

(1)一般遵循的顺序

          Service (服务) →PAM (配置文件) →pam_ *.so

(2)首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security'下)进行安全认证

(3)用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证

(4)不同的应用程序所对应的PAM模块是不同的

4.PAM认证的构成

(1)查看某个程序是否支持PAM认证,可以用Is命令

         示例:查看su是否支持PAM模块认证

[123@localhost pam.d]$ ls /etc/pam.d | grep su
ksu
su
sudo
sudo-i
su-l

(2)查看su的PAM配置文件: cat /etc/pam.d/su 

        每一行都是一个独立的认证过程

        每一行可以区分为三个字段:认证类型;控制类型;PAM模块及其参数

[123@localhost pam.d]$ cat /etc/pam.d/su
#%PAM-1.0
#auth		sufficient	pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth		sufficient	pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth		required	pam_wheel.so use_uid
auth		substack	system-auth
auth		include		postlogin
account		sufficient	pam_succeed_if.so uid = 0 use_uid quiet
account		include		system-auth
password	include		system-auth
session		include		system-auth
session		include		postlogin
session		optional	pam_xauth.so

 

第一列代表PAM认证模块类型

auth:对用户身份进行识别,如提示输入密码,判断是否为root。 

account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。

password:使用用户信息来更新数据,如修改用户密码。

session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,
用户数据的打开和关闭,挂载文件系统。能连接几个终端

第二列代表PAM控制标记

required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。

requisite:与reguired类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。

sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。

optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),

include:表示在验证过程中调用其他的PAM配置文件。

比如很多应用通过完整调用/ etc/pam.d/syatem- auth (主要负责用户登录系统的认证工作)
来实现认证而不需要重新逐一去 写配置项。

5.PAM验证流程

四、 使用sudo机制提升权限

1.sudo(super userdo超级用户)命令的用途及用法

用途:以其他用户身份(如root)执行授权命令

用法:sudo 授权命令

2.配置sudo授权

(1)visudo或者vi /etc/sudoers

(2)记录格式

       用户     主机名列表=命令程序列表

[123@localhost root]$ sudo ifconfig ens33:2 192.168.91.202/24

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] 123 的密码:
对不起,用户 123 无权以 root 的身份在 localhost.localdomain 上执行 /sbin/ifconfig ens33:2 192.168.91.202/24。


[root@localhost ~]# visudo

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

## Allows members of the users group to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
123 localhost=(root) /sbin/iconfig
:wq

这篇关于系统安全与应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!