下面介绍的是服务与安全管理的tcp_wrapper、sudo、nsswitch、pam
一、tcp_wrapper
1、tcp_wrapper基础 --------------------tcp封装器
tcp_wrapper依赖的库文件:libwrap.so
(1)、判断是否受tcp_wrapper访问控制:动态链接(libwrap.so库文件)、静态链接(strings命令)
动态链接至libwrap.so库的应用程序:# ldd /PATH/TO/APP_FILE | grep libwrap
静态库文件应用程序:# strings COMMAND
(2)、常见的基于tcp_wrapper访问控制的服务:sshd,vsftpd
几种服务:openssh、http、mysql、vsftpd、nfs、samba
2、tcp_wrappers的配置文件 ----------------------/etc/hosts.allow、/etc/hosts.deny
格式:daemon_list : client_list [[[: option] : option] ...]
(1)、daemon_list --------------应用程序文件名(/usr/sbin/*)
daemon_list的三种方式:单个程序文件名、多个程序文件名(逗号隔开)、所有应用程序(ALL)
(2)、client_list ------------3种方式
单个IP地址或主机名、网络地址、访问控制列表
client_list的四种访问控制列表:ALL、KNOWN、UNKNOWN、PARANOID
(3)、: option --------------3类选项
option的三类选项为:deny、allow、spawn
spawn:%c -------------------客户端信息
%s -------------------服务端信息
例:
daemon_list:ALL -------------所有的应用程序(进程)
client_list:172.16.0.0/255.255.0.0
172.16.
ALL ------------所有的主机
KNOWN ----------能正常访问的主机
UNKNOWN ---------不能正常访问的主机
: option:deny:拒绝访问规则,hosts.allow文件中
allow:允许访问规则,hosts.deny文件中
spawn:生成、发起、执行
例:
vsftpd : 172.16.0.0/16 : allow ---------------/etc/host.allow(默认允许)
vsftpd : ALL EXCEPT 172.16. EXCEPT 172.16.67.1 ------------------/etc/hosts.deny(默认拒绝)
例:针对sshd、vsftpd服务进行记录
sshd, vsftpd : ALL : spawn /bin/echo $(/bin/date) %c attempt login %s >> /var/log/tcpwrapper.log
二、sudo
1、sudo基础 ---------------以root用户身份执行
sudo的授权配置文件:/etc/sudoers
2、配置文件内容 ---------------/etc/sudoers
/etc/sudoers内容有两类:、别名的定义、用户规格(授权)
(1)、别名定义 --------------别名全大写
格式:Alias_Type ALIASNAME = item1, item2, ...
Alias_Type:User_Alias、Host_Alias、Runas_Alias、Cmnd_Alias:
Alias_Type -------------使用驼峰式
ALIASNAME -------------使用全大写
例:User_Alias USERADMINUSERS = tom, jerry, centos, suse, %myclass -----------------“%”在别名定义中,表示组。
Cmnd_Alias USERADMINCOMMANDS = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod
(2)、用户规格(授权项): -----------------编辑/etc/sudoers,每行只有一个授权
格式为:who where=(whom) what
格式各部分解释如下:
who ----------授权的目标用户(5种方式)
username ---------------单个用户名称
#uid ------------单个用户UID
%groupname ------------指定组内的所有账户
%#gid -----------指定知道的GID的组,其内的所有用户账户
user_alias -------------定义过的别名
where --------------授权的客户端主机(3种)
ip/hostname ------------单个主机
Network Address --------------网络地址
host_alias -------------定义过的别名
whom -----------------真实身份,一般为root
what -------------授权运行的命令
command -------------单个命令
directory ------------目录下的所有命令
sudoedit ---------------授权可以执行sudo命令的用户
cmnd_alias ----------定义过的别名
例:little ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root
例:little ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/su ! /usr/bin/su root
注:visudo命令:-----------------编辑/etc/sudoers文件,具有【语法纠错】功能
(3)、sudo命令:----------------用户授权
格式:sudo [option]... command
常用选项:
-u user --------------指定用户身份
-l[l] [command] ------------------显示能以sudo运行的所有命令
(4)、授权中的标签
PASSWD --------------要有密码
NOPASSWD -------------可以没有密码
例:Cmnd_Alias USERADMINCOMMANDS = NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod
sudo的特殊命令:passwd、su、sudo、sudoedit
三、nsswitch
1、nsswitch基础 ---------------名称服务开关
名称解析:将自然语言,解析为机器语言的数字符号。
解析:根据关键字查找存储库,找出与关键字相关的信息。
通用框架:应用程序的调用接口
Linux中实现名称解析的通用框架:库(/lib64/libnss*, /usr/lib64/libnss*)
2、解析库应用程序的配置文件 ----------/etc/nsswitch.conf
格式:db: store_format1 store_format2 ....
查找键的返回状态:(4种)success、notfound、unavail、tryagain
状态返回值的响应:return、continue
3、getent命令 ------------从名称服务器得到响应
格式:getent database [key]
四、pam
1、pam基础 --------------通用的认证框架
Linux中实现pam的通用框架:库(/lib64/security/*)
2、配置文件 -------------/lib64/security/*
pam的配置文件有两种:全局配置文件、专用配置文件。其中,全局配置文件已经废弃。
(1)、全局认证配置文件 -------------------/etc/pam.conf
格式:application type control module-path module-arguments
(2)、专用配置文件 ------------------/etc/pam.d/*APP_NAME*
格式:type control module-path module-arguments
type:
auth ---------------认证、授权
account ------------账号管理,与认证无关
password ------------用户修改密码时,密码的复杂度
session -------------附加操作
control:
required ----------------没有被满足,认证一定失败,认证过程并不中断
requisite ---------------没有被满足,认证一定失败,立即中断
sufficient ------------条件被满足,认证成功,立即中断
optional -------------不影响认证
include ----------------其他的配置文件包含到当前位置,类似复制
substack ---------------复制,并在子栈运行,不影响主栈
module-path ---------------可以是相对路径、绝对路径
module-arguments ------------默认模块参数
例:auth required pam_shells.so --------------------pam_shells.so模块的认证
3、pam_limits.so模块 -------------限制用户会话过程中对各种系统资源的使用情况
格式:pam_limits.so [ change_uid ] [ conf=/path/to/limits.conf ] [ debug ] [ utmp_early ] [ noaudit ]
配置文件: --------------/etc/security/limits.conf、 /etc/security/limits.d/*
格式:
doemain: ----------------用户名/组名
username ---------------单个用户名称
%groupname/@groupname ------------指定组内的所有账户
type: ----------------软/硬限制,不同于磁盘配额中的软限制和硬限制
hard:------------硬限制
soft:------------软限制
-:--------------任意
item:
core:-------------文件大小 (KB)
date:--------------最大数据大小(KB)
fsize:---------------最大文件大小(KB)
memlock:-------------最大可用内存空间(KB)
nofile:---------------最大可以打开的文件数量
rss:--------------最大可驻留空间(KB)
stack:-----------------最大堆栈空间(KB)
cpu:-----------------最大CPU使用时间(MIN)
nproc:-----------------最大运行进程数
as:--------------地址空间限制
locks:--------------最大锁定文件数目
nice:--------------nice值
maxlogins:--------------用户可以登录到系统最多次数
value:-----------------具体值
例:-------------/etc/security/limits.conf
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
4、pam_listfile.so模块 ------------------------实现基于用户/组、主机名/IP、终端的访问控制
格式:pam_listfile.so item=[tty|user|rhost|ruser|group|shell] sense=[allow|deny] file=/path/filename onerr=[succeed|fail] [ apply=[user|@group] ] [ quiet ]
常用选项:
item=[tty|user|rhost|ruser|group|shell]:----------------对哪些列出的目标或者条件采用规则
sense=[allow|deny]:----------在配置文件中找到符合条件的项目时的控制方式。如果没有找到符合条件的项目,则一般验证都会通过
file=/path/filename:--------------------指定配置文件的全路径名称
onerr=[succeed|fail]:-------------------当出现错误时的缺省返回值
apply=[user|@group]:----------------规则适用的用户类型(用户或者组)
quiet
例:auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ftpusers
例:auth required pam_listfile.so \
onerr=fail item=user sense=allow file=/etc/loginusers
5、pam_time.so模块 -------------------提供基于时间的控制,用户只能在某个时间段内才能登录
格式:pam_time.so [ debug ] [ noaudit ]
常用选项:
debug:
noaudit:
配置文件:/etc/security/time.conf
格式:services;ttys;users;times
例:login ; tty* & !ttyp* ; !root ; !Al0000-2400
例:games ; * ; !waster ; Wd0000-2400 | Wk1800-0800
例:
# vim /etc/security/time.conf
login ; tty3 ; user1 ; al0100-0200 user1 1点到2点才能登录
login ; tty3 ; user1 ; all
sshd ; * ; * ; al0100-0200