系统安全与应用

一、账号安全基本措施

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 临时隐藏历史,关机重启后会再次显现(clean也可以)
[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统安全设计应用安全设计需要从以下几个方面考虑: 1. 访问控制:应用系统需要实现严格的访问控制,确保只有经过认证和授权的用户才能访问应用。可以使用身份验证、授权管理、角色管理等技术手段来实现访问控制。 2. 输入过滤:应用系统应对用户输入进行有效的过滤,防止恶意输入导致应用漏洞或攻击。可以使用输入验证和过滤技术来实现输入过滤。 3. 输出过滤:应用系统应对输出数据进行有效的过滤,防止输出数据中包含恶意代码或脚本。可以使用输出过滤和编码技术来实现输出过滤。 4. 异常处理:应用系统应对异常情况进行有效的处理,防止应用被攻击或崩溃。可以使用异常处理和错误处理技术来实现异常处理。 5. 安全配置:应用系统应进行安全配置,防止漏洞或攻击。可以使用安全配置和加固技术来实现安全配置。 6. 安全测试:应用系统应进行安全测试,以发现潜在的漏洞和脆弱性。可以使用静态代码分析、动态测试和漏洞扫描等技术来实现安全测试。 7. 数据安全:应用系统需要保证数据的安全性,包括数据的保密性、完整性和可用性。可以使用加密技术、访问控制技术和备份和恢复技术来实现数据安全。 综上所述,系统安全设计应用安全设计需要综合考虑访问控制、输入过滤、输出过滤、异常处理、安全配置、安全测试和数据安全等方面。这些技术手段可以有效地提高应用的安全性,防止漏洞和攻击,并确保数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值