sudo更换身份

su  切换身份   使用su 切换身份必须首先直到被切换成用户的密码   如: su root  就必须要知道root的密码 这种机制安全性不高,容易泄露管理员密码

1. sudo能够授权指定用户在指定主机上执行某些命令

2. sudo 可以提供日志,记录每个用户使用sudo操作

3. sudo 为系统管理员提供配置文件,允许系统管理员集中的管理用户的使用权限和使用的主机

4. sudo 使用时间戳文件来完成类似"检票"系统,默认存活期为5分钟

5. 使用sudo授权后普通用户就可以执行默认不能执行的操作 相当于提升普通用户的执行权限

sudo配置

配置文件:/etc/sudoers(不建议使用),    /etc/sudoers.d/

时间戳文件:/var/db/sudo

日志文件:/var/log/secure

配置文件支持使用通配符glob:

?:任意单一字符

* :匹配任意长度字符

[wxc]:匹配其中一个字符

[!wxc]:除了这三个字符的其它字符

\x : 转义

[[alpha]] :字母 示例: /bin/ls [[alpha]]*

配置文件规则有两类:

1、别名定义:不是必须的

2、授权规则:必须的

授权规则格式

root              ALL=(ALL)               ALL

yxh             192.168.30.7=(root)    /bin/mount      /dev/cdrom  /mnt/

执行格式 :   sudo  mount    /dev/cdrom   /mnt/     执行命令的时候必须和授权规则中写的命令保持完全一致 sudo  mount    /dev/cdrom   /mnt 执行失败  因为缺少最后的/

sudo命令

ls -l /usr/bin/sudo

sudo –i –u wang 切换身份

sudo [-u user] COMMAND

-V 显示版本信息等配置信息

-u user  默认为root

-l,ll 列出用户在主机上可用的和被禁止的命令

-v 再延长密码有效期限5分钟,更新时间戳

-k 清除时间戳(1970-01-01),下次需要重新输密码

-K 与-k类似,还要删除时间戳文件

-b 在后台执行指令

-p 改变询问密码的提示符号     示例:-p ”password on %h for user %p:"

user1 ALL=(user2)  ALL           第一个ALL表示所有主机  第二个ALL表示所有权限      表示user2有的权限全都赋给user1

user2可以在终端执行               sudo  -u  user1   cat /etc/shadow             如果没有指定-u选项,默认代表root用户

sudo别名和示例

Users和runas:

username

#uid

%group_name

%#gid

user_alias|runas_alias

host:

ip或hostname

network(/netmask)

host_alias

command:

command name

directory

sudoedit

Cmnd_Alias

别名有四种类型:User_Alias,   Runas_Alias,   Host_Alias ,Cmnd_Alias

别名格式:[A-Z]([A-Z][0-9]_)*

别名定义: Alias_Type NAME1 = item1, item2, item3 : NAME2 = item4, item5

示例1

User_Alias NETADMIN= netuser1,netuser2

Cmnd_Alias NETCMD = /usr/sbin/ip

NETADMIN ALL=(root) NETCMD

示例2

User_Alias SYSADER=wang,mage,%admins

User_Alias DISKADER=tom

Host_Alias SERS=www.magedu.com,172.16.0.0/24

Runas_Alias OP=root

Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod

Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk

SYSADER SERS= SYDCMD,DSKCMD

DISKADER ALL=(OP) DSKCMD

示例3 排除特定场景

user1     192.168.175.136,192.168.175.138=(root)       /usr/sbin/,    !/usr/sbin/useradd

user1     ALL=(ALL) /bin/cat /var/log/messages*

安全隐患    sudo cat  /var/og/messages   /etc/passwd

user1      ALL=(ALL) /bin/cat /var/log/messages*,        !/bin/cat /var/log/messages*   *

TCP_Wrappers介绍

工作在第四层(传输层)的TCP协议   实现简单的防火墙功能

对有状态连接的特定服务进行安全检测并实现访问控制

以库文件形式实现   某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对 libwrap进行编译的

判断服务程序是否能够由tcp_wrapper进行访问控制的方法:不是所有服务都支持TCP_Wrappers

ldd  /PATH/TO/PROGRAM     |   grep  libwrap.so

strings PATH/TO/PROGRAM  |   grep libwrap.so

配置文件:/etc/hosts.allow, /etc/hosts.deny

检查顺序:hosts.allow,hosts.deny(默认允许)   注意:一旦前面规则匹配,直接生效,将不再继续

基本语法:  daemon_list@host: client_list  [ :options :option… ]

单个应用程序的二进制文件名,而非服务名.

例如vsftpd    以逗号或空格分隔的应用程序文件名列表 如:sshd,vsftpd

ALL表示所有接受tcp_wrapper控制的服务程序

主机有多个IP,可用@hostIP来实现控制 如: in.telnetd@192.168.0.254

EXCEPT用法:

示例:vsftpd: 172.16.   EXCEPT 172.16.100.0/24    EXCEPT 172.16.100.1

PAM认证机制

使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序

一种认证框架,自身不做认证

PAM 是关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统 一的API,将系统提供的服务和该服务的认证方式分开

PAM相关文件

模块文件目录:/lib64/security/*.so

环境相关的设置:/etc/security/

主配置文件:  /etc/pam.conf     默认不存在

为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME

注意:如/etc/pam.d存在 /etc/pam.conf  将失效

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so

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

PAM认证过程:

1.使用者执行/usr/bin/passwd 程序,并输入密码

2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件, 这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻

/etc/pam.d/passwd此设置文件

3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证

4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

通用配置文件/etc/pam.conf格式

application  type  control    module-path     arguments

专用配置文件/etc/pam.d/* 格式

type   control   module-path     arguments

服务名(application) telnet、login、ftp等

服务名字“OTHER”代表所有没有在该文件中明确配置 的其它服务

模块类型(module-type)

control  PAM库该如何处理与该服务相关的PAM模块的成功或失败情况

module-path 用来指明本模块对应的程序文件的路径名

Arguments  用来传递给该模块的参数

Auth 账号的认证和授权

Account 与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以有多少个用户),限制用户的位置(例如:root用户只能从控制台登录)

Password 用户修改密码时密码复杂度检查机制等功能

Session 用户获取到服务之前或使用服务完成之后需要进行一些附加的操作, 如:记录打开/关闭数据的信息,监视目录等

-type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是 安装在系统上的模块有用

module-path: 模块路径

相对路径:  /lib64/security目录下的模块可使用相对路径 如:pam_shells.so、pam_limits.so

绝对路径:  模块通过读取配置文件完成用户对系统资源的使用控制 /etc/security/*.conf

注意:  修改PAM配置文件将马上生效

建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误

Arguments 用来传递给该模块的参数

PAM模块示例

模块:pam_shells

功能:检查有效shell

man pam_shells

示例:不允许使用/bin/csh的用户本地登录

vim /etc/pam.d/login

auth required pam_shells.so

vim /etc/shells

去掉 /bin/csh

useradd –s /bin/csh testuser

testuser将不可登录

tail    /var/log/secure

示例:pam_limits.so

限制用户最多打开的文件数和运行进程数

/etc/pam.d/system-auth

session     required      pam_limits.so

vim /etc/security/limits.conf

apache   –    nofile 10240     apache用户可打开10240个文件

student  hard   nproc   20     student用户不能运行超过20个进程

SUDO安全委派和安全模块的更多相关文章

  1. 【转】Nginx模块开发入门

    转自: http://kb.cnblogs.com/page/98352/ 结论:对Nginx模块开发入门做了一个helloworld的示例,简单易懂.也有一定的深度.值得一看. Nginx模块开发入 ...

  2. Nginx模块开发入门

    前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...

  3. [转] Nginx模块开发入门

    前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...

  4. ubuntu 开启 rewrite 模块

    1.sudo a2enmod rewrite 开启Rewrite模块 (停用模块,使用 a2dismod) 2. 在/etc/apache2/ 修改apache2.conf 文件中把AllowOver ...

  5. Nginx模块开发入门(转)

    前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...

  6. Nginx模块开发入门(转)

    前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...

  7. python模块和包(模块、包、发布模块)

    模块和包 目标 模块 包 发布模块 01. 模块 1.1 模块的概念 模块是 Python 程序架构的一个核心概念 每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块 模块名 同样也 ...

  8. python-面向对象-12_模块和包

    模块和包 目标 模块 包 发布模块 01. 模块 1.1 模块的概念 模块是 Python 程序架构的一个核心概念 每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块 模块名 同样也 ...

  9. FW: Nginx模块开发入门

    前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...

随机推荐

  1. [Bayes] Point --> Line: Estimate "π" by R

    “半个数学系 + 一个计算机科学系 = Deep Learning初级班” simulation = function(sampleSize){ c = rep(0,sampleSize) // &l ...

  2. PHP实现删除非站内外部链接实例代码

    /** *  删除非站内链接 * * @access    public * @param     string  $body  内容 * @param     array  $allow_urls  ...

  3. SpringBoot------Maven Clean报错

    报错信息: Plugin org.apache.maven.plugins:maven-clean-plugin: or one of its dependencies could not be re ...

  4. windows cmd命令显示UTF8设置

    windows cmd命令显示UTF8设置   在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况 ...

  5. 【IBM-WALA】Step by Step : use WALA to generate System Dependency Graph PDF and Dot File (Mac)

    Preparations: 1. IDE : eclipse (my version is luna) 2. maven (my version is 3.5.0) 3. git 4. JAVA 1. ...

  6. 获取HttpServletRequest请求Body中的内容

    在实际开发过程中,经常需要从 HttpServletRequest 中读取HTTP请求的body内容,俗话说的好”好记性不如烂笔头“,特在此将其读取方法记录一下. import java.io.Buf ...

  7. SSL、数字签名、CA 工作原理通俗描述

    SSL(Secure Socket Layer) 是一种加密技术,可以提供对称加密和非对称加密.由于它在协议层里正好是在传输层与应用层之间,这就决定了上层应用必须经过它,这就是它广泛流行和易于实现的原 ...

  8. Android 监听键盘弹出和收起.

    entends:http://stackoverflow.com/questions/36837066/how-to-validate-virtual-keyboard-visibility 监听键盘 ...

  9. 多线程局部变量之threading.local()用法

    假如,开了十个线程并且做同样的一件事,他们需要带着自己的数据进来,完成事情后带着自己的数据出去.如果是并发,同时进来,他们的数据就会混乱. 一般情况,我们加锁就可以了,一个人先进来,先加锁,另一个人过 ...

  10. 【PPT大放送】MPD软件工作坊北京站圆满落幕 深圳站即将开幕!

    MPD工作坊深圳站体验票开启啦!文末有彩蛋哦! 7月14日至15日,由麦思博(msup)有限公司举办的第40届MPD软件工作坊在北京国家会议中心举行. 麦思博(msup)有限公司一直专注于软件研发中心 ...