su ,sudo,TCP_Wrappers的相关命令用法及PAM认证机构

su,sudo,TCP_Wrappers的相关命令用法及PAM认证机构

su 切换身份:su –l  username –c  ‘command‘

sudo

来自sudo包

man 5 sudoers

sudo能够授权指定用户在指定主机上运行某些命令。如果

未授权用户尝试使用 sudo,会提示联系管理员

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

sudo为系统管理员提供配置文件,允许系统管理员集中地

管理用户的使用权限和使用的主机

sudo使用时间戳文件来完成类似“检票”的系统,默认存

活期为5分钟的“入场券”

通过visudo命令编辑配置文件,具有语法检查功能

visudo –c 检查语法

sudo

配置文件:/etc/sudoers, /etc/sudoers.d/

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

日志文件:/var/log/secure

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

?:任意单一字符

* :匹配任意长度字符

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

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

\x : 转义

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

配置文件规则有两类;

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

2、授权规则:必须的

sudoers

授权规则格式:

用户 登入主机=(代表用户) 命令

示例:

root ALL=(ALL)  ALL

格式说明:

user: 运行命令者的身份

host: 通过哪些主机

(runas):以哪个用户的身份

command: 运行哪些命令

别名

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

sudo别名和示例

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

,Cmnd_Alias

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

别名定义:

Alias_Type NAME1 = item1, item2, item3 : NAME2 =

item4, item5

示例1:

Student  ALL=(ALL)  ALL

%wheel ALL=(ALL) ALL

示例2:

student ALL=(root)    /sbin/pidof,/sbin/ifconfig

%wheel ALL=(ALL)  NOPASSWD: ALL

sudo示例

示例3

User_Alias  NETADMIN= netuser1,netuser2

Cmnd_Alias NETCMD = /usr/sbin/ip

NETADMIN ALL=(root) NETCMD

示例4

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

sudo示例

示例4

User_Alias ADMINUSER = adminuser1,adminuser2

Cmnd_Alias ADMINCMD = /usr/sbin/useradd,

/usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*,

!/usr/bin/passwd root

ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,

PASSWD:/usr/sbin/userdel

示例5

Defaults:wang runas_default=tom

wang ALL=(tom,jerry) ALL

示例6

wang 192.168.175.136,192.168.175.138=(root)

/usr/sbin/,!/usr/sbin/useradd

示例7

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

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:"

TCP_Wrappers介绍

作者:Wieste Venema,IBM,Google

工作在第四层(传输层)的TCP协议

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

以库文件形式实现

某进程是否接受libwrap的控制取决于发起此进程的程序在编

译时是否针对libwrap进行编译的

判断服务程序是否能够由tcp_wrapper进行访问控制的方法:

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

strings PATH/TO/PROGRAM|grep libwrap.so

TCP_Wrappers的使用

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

帮助参考:man 5 hosts_access,man 5 hosts_options

检查顺序:hosts.allow,hosts.deny(默认允许)

注意:一旦前面规则匹配,直接生效,将不再继续

基本语法:

[email protected]: client_list [ :options :option… ]

[email protected]格式

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

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

:sshd,vsftpd

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

主机有多个IP,可用@hostIP来实现控制

如:[email protected]

TCP_Wrappers的使用

客户端Client_list格式

以逗号或空格分隔的客户端列表

基于IP地址:192.168.10.1  192.168.1.

基于主机名:www.magedu.com  .magedu.com 较少用

基于网络/掩码:192.168.0.0/255.255.255.0

基于net/prefixlen: 192.168.1.0/24(CentOS7)

基于网络组(NIS 域):@mynetwork

内置ACL:ALL,LOCAL,KNOWN,UNKNOWN,

PARANOID

EXCEPT用法:

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

172.16.100.1

示例

示例:只允许192.168.1.0/24的主机访问sshd

/etc/hosts.allow

sshd: 192.168.1.

/etc/hosts.deny

sshd :ALL

示例:只允许192.168.1.0/24的主机访问telnet和vsftpd服务

/etc/hosts.allow

vsftpd,in.telnetd: 192.168.1.

/etc/host.deny

vsftpd,in.telnetd:  ALL

TCP_Wrappers的使用

[:options]选项:

帮助:man 5 hosts_options

deny 主要用在/etc/hosts.allow定义“拒绝”规则

如:vsftpd: 172.16. :deny

allow 主要用在/etc/hosts.deny定义“允许”规则

如:vsftpd:172.16. :allow

spawn 启动一个外部程序完成执行的操作

twist  实际动作是拒绝访问,使用指定的操作替换当前服

务,标准I/O和ERROR发送到客户端,默认至/dev/null

测试工具:

tcpdmatch [-d] daemon[@host] client

-d 测试当前目录下的hosts.allow和hosts.deny

示例

sshd: ALL :spawn echo "$(date) login  attempt  from

%c  to  %s,%d" >>/var/log/sshd.log

说明:

在/etc/hosts.allow中添加,允许登录,并记录日志

在/etc/hosts.deny中添加,拒绝登录,并记录日志

%c 客户端信息

%s 服务器端信息

%d 服务名

%p 守护进程的PID

vsftpd: 172.16.  :twist /bin/echo “connection

prohibited”

PAM认证机制

PAM:Pluggable Authentication Modules

认证库:文本文件,MySQL,NIS,LDAP等

Sun公司于1995 年开发的一种与认证相关的通用框架机制

PAM 是关注如何为服务验证用户的 API,通过提供一些动

态链接库和一套统一的API,将系统提供的服务和该服务的

认证方式分开

使得系统管理员可以灵活地根据需要给不同的服务配置不

同的认证方式而无需更改服务程序

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

PAM认证机制

它提供了对所有服务进行认证的中央机制,适用于login,远

程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP)),su等

应用程序中。系统管理员通过PAM配置文件来制定不同应用

程序的不同认证策略;应用程序开发者通过在服务程序中使

用PAM API(pam_xxxx( ))来实现对认证方法的调用;而

PAM服务模块的开发者则利用PAM SPI来编写模块(主要是

引出一些函数pam_sm_xxxx( )供PAM接口库调用),将不

同的认证机制加入到系统中;PAM接口库(libpam)则读取

配置文件,将应用程序和相应的PAM服务模块联系起来

PAM认证构架

pam认证原理

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

件)→pam_*.so

PAM认证首先要确定那一项服务,然后加载相应的PAM的配

置文件(位于/etc/pam.d下),最后调用认证文件(位于

/lib/security下)进行安全认证

PAM认证机制

PAM认证过程:

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

2.passwd开始呼叫PAM模块,PAM模块会搜寻passwd程序的

PAM相关设定文件,这个设定文件一般是在/etc/pam.d/里

边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passed

这个设置文件

3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提

供的相关模块来进行验证

4.将验证结果回传给passwd这个程序,而passwd这个程序会

根据PAM回传的结果决定下一个动作(重新输入密码或者通

过验证)

PAM认证机制

PAM相关文件

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

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

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

为每种应用模块提供一个专用的配置文件:

/etc/pam.d/APP_NAME

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

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  用来传递给该模块的参数

PAM认证机制

模块类型(module-type)

Auth 账号的认证和授权

Account 与账号管理相关的非认证类的功能,如:用来限

制/允许用户对某个服务的访问时间,当前有效的系统资源

(最多可以有多少个用户),限制用户的位置(例如:root用

户只能从控制台登录)

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

Session 用户获取到服务之前或使用服务完成之后需要进

行一些附加的操作,如:记录打开/关闭数据的信息,监视

目录等

-type 表示因为缺失而不能加载的模块将不记录到系统日

志,对于那些不总是安装在系统上的模块有用

Control:

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

两种方式实现:

简单和复杂

简单方式实现:一个关健词实现

required :一票否决,表示本模块必须返回成功才能通过

认证,但是如果该模块返回失败,失败结果也不会立即通

知用户,而是要等到同一type中的所有模块全部执行完毕

再将失败结果返回给应用程序。即为必要条件

PAM认证机制

requisite :一票否决,该模块必须返回成功才能通过认证,

但是一旦该模块返回失败,将不再执行同一type内的任何模

块,而是直接将控制权返回给应用程序。是一个必要条件

sufficient :一票通过,表明本模块返回成功则通过身份认

证的要求,不必再执行同一type内的其它模块,但如果本模

块返回失败可忽略,即为充分条件

optional :表明本模块是可选的,它的成功与否不会对身份

认证起关键作用,其返回值一般被忽略

include: 调用其他的配置文件中定义的配置信息

复杂详细实现:使用一个或多个“status=action”

[status1=action1 status2=action …]

Status:检查结果的返回状态

Action:采取行为 ok,done,die,bad,ignore,reset

ok  模块通过,继续检查

done 模块通过,返回最后结果给应用

bad 结果失败,继续检查

die 结果失败,返回失败结果给应用

ignore 结果忽略,不影响最后结果

reset 忽略已经得到的结果

PAM认证机制

module-path: 模块路径

相对路径:

/lib64/security目录下的模块可使用相对路径

如:pam_shells.so、pam_limits.so

绝对路径:

模块通过读取配置文件完成用户对系统资源的使用控制

/etc/security/*.conf

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

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

root身份验证错误

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

user/share/doc/pam-*

rpm -qd pam

man –k pam_

man 模块名 如man rootok

《The Linux-PAM System  Administrators‘ Guide》

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_securetty.so

功能:只允许root用户在/etc/securetty列出的安全终端上

登陆

示例:允许root在telnet登陆

vi /etc/pam.d/login

#auth required pam_securetty.so #将这一行加上注释

或者/etc/securetty文件中加入

pts/0,pts/1…pts/n

模块:pam_nologin.so

功能:如果/etc/nologin文件存在,将导致非root用户不能登陆

,如果用户shell是/sbin/nologin 时,当该用户登陆时,会显

示/etc/nologin.txt文件内容,并拒绝登陆

块:pam_limits.so

功能:在用户级别实现对其可使用的资源的限制,例如:可

打开的文件数量,可运行的进程数量,可用内存空间

修改限制的实现方式:

(1) ulimit命令,立即生效,但无法保存

-n   最多的打开的文件描述符个数

-u   最大用户进程数

-S   使用 `soft‘(软)资源限制

-H   使用 `hard‘(硬)资源限制

(2) 配置文件:/etc/security/limits.conf,

/etc/security/limits.d/*.conf

配置文件:每行一个定义;

<domain>        <type>  <item>  <value>

Username 单个用户

@group 组内所有用户

*  所有用户

<type> 限制的类型

Soft 软限制,普通用户自己可以修改

Hard 硬限制,由root用户设定,且通过kernel强制生效

- 二者同时限定

<item> 限制的资源

nofile 所能够同时打开的最大文件数量,默认为1024

nproc 所能够同时运行的进程的最大数量,默认为1024

<value> 指定具体值

示例: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 不能运行超过20个进程

时间: 2024-08-02 04:20:05

su ,sudo,TCP_Wrappers的相关命令用法及PAM认证机构的相关文章

linux学习:归档,备份,进程,网络相关命令用法整理

压缩 tar 归档命令,不具备压缩功能tar -cf output.tar file1 file2 file3 folder1... #参数-c表示创建文件,-f表示指定文件.tar -cf output.tar *.txt   #归档所有.txt文件tar -rvf file.tar new_file.txt  #向归档文件file.tar追加一个文件.tar -tf file.tar #列出归档文件中的内容tar -xf file.tar #参数-x表示提取文件或文件夹.将内容提取到当前文件

linux系统命令学习系列-用户切换命令su,sudo

先复习一下上节内容: 用户组添加groupadd 用户组修改groupmod 用户组删除groupdel 作业创建一个id为501的组group1,然后改成group2, 同时id变为502,最后删除这个组,命令分别如下: groupadd –g 501 group1 groupmod –g 502 –n group2 group1 groupdel group2 这一节,我们来说一下用户切换相关命令 为什么要进行用户切换? 在操作过程中需要使用特定的用户进行特定的操作,多数情况下是因为权限,比

linux su sudo命令详解

#su [OPTION] USERNAME 切换用户 [OPTION] - 变更当前的工作环境PWD 空 默认切换为root用户 默认情况下使用su只是将PAHT和用户切换为USERNAME的,并不变更PWD.使用-则和用USERNAME登陆在实质上是一样的. #sudo [OPTION] COMMAND 某用户在不切换用户的情况下以另一个用户的权限通过某个主机执行某个命令. [OPTION] -l 列出当前用户可以使用的所有sudo类命令. -k 清除认证,下次使用需输入密码.默认第一次输入密

sudo命令用法介绍

sudo命令用法介绍 sudo命令用来以其他身份来执行命令,预设的身份为root.在/etc/sudoers中设置了可执行sudo指 令的用户.若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员.用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码. 语法:sudo(选项)(参数) 选项: -b:在后台执行指令: -h:显示帮助: -H:将HOME环境变量设为新身份的HOME环境变量: -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密

用户权限相关命令

用户权限相关命令 目标 用户 和 权限 的基本概念 用户管理 终端命令 组管理 终端命令 修改权限 终端命令 01. 用户 和 权限 的基本概念 1.1 基本概念 用户 是 Linux 系统工作中重要的一环,用户管理包括 用户 与 组 管理 在 Linux 系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限 在 Linux 中,可以指定 每一个用户 针对 不同的文件或者目录 的 不同权限 对 文件/目录 的权限包括: 序号 权限 英文 缩写

&#8203;文件检索相关命令总结

文件检索相关命令 一.概览 1. which:用于查找可执行文件(外部命令.脚本) 2. whereis:查找程序.帮助手册.源文件的位置 3. locate:索引库模糊查找 4. whatis:在whatis数据库里查找完整的单词,相当于man –f. 5. find:精确多条件查找 二.细说        实验环境如下显示,操作系统环境不同,命令执行后显示结果会略有出入,但是不影响命令的用法. [[email protected] ~]$ uname–r                  /

Linux之进程管理(2)相关命令之四

Linux之进程管理(2)相关命令之四 设置或调整进程优先级命令: nice  rnice nice 命令 nice - run a program with modified scheduling priority 运行一个程序时修改调度其进程优先级 格式及用法: nice  [options]  [command [args]] -n  # :#表示要设置此程序nice值,-20到19,值越下,优先级越高 注:-20到19的每个nice值分别对应(Centos5中为100-139,CentO

su&sudo

su - run a shell with substitute user and group IDs su -l USERNAME su命令和su - 命令有本质的区别,前者只是切换了root身份,但shell仍然是普通用户的shell:而后者连同用户和shell环境都切换成root了.只有切换了shell环境才不会导致环境变量引用错误. sudo: sudo这个命令设计初的主要目的是为了使某些用户具有特定的权限,从而完成其他普通用户无法实现的功能. 1.授权指定用户在指定主机上运行指定的管理

Linux用户、用户管理的常见命令用法以及用户的权限管理

    用户和用户组的基本概念: Linux的用户是通过账号和密码登录到Linux系统的,而Linux主机并不会直接识别账号和密码,它只认识ID.那么Linux系统用户的ID分为以下类别: 系统管理员:root,0-UID 普通用户:1-65535-UID 普通用户有分为:系统用户和登录用户 系统用户:1-999-UID 登录用户:1000-65535-UID Linux用户组(GID)的分类: 管理员组:root,0(GID) 普通用户组:1-65535(GID) 普通用户组又分为: 系统组: