tcp-wrapper:tcp的包装器,将接受wrapper的服务符合allow就放行,符合drop就丢弃,工作在能够接受其控制服务之前,是一个屏障。
tcp-wrapper是有libwrap.so库文件来实现
检测方式:
ldd $(which sshd) | grep libwrap,它属于动态连接,which后跟服务名称
string $(which sshd) | grep hosts,它属于静态连接。
动态连接:共享库文件,是二进制文件。
静态连接:直接做成程序的一部分,没有依赖关系
两个文件:/etc/hosts.allow,/etc/hosts.deny
定义格式:
daemon_lists:client_lists[:options:]
daemon_lists:服务的名字,是可执行程序的名字,多个中间用“,”隔开。ALL表所有
client_lists:
1、ip地址,例192.168.0.1
网段,例192.168.0.,10.0.
2、network,例192.168.0.0/255.255.255.0必须使用长格式的
3、name的,例www.magedu.com
检查的顺序:先检查allow,若定义有则放行,若没有就检查deny,若deny中有定义则直接拒绝,否则默认allow.
telnet的安装:
yum install telnet-server
service xinetd start
chkconfig telnet on
service xinetd restart
telnet拒绝root用户登录,可以先用普通用户登录在su到root用户
例:一台主机上有两个ip地址,定义仅允许访问位于192.168.0.181地址的telnet服务被192.168.0.1主机访问。
用daemon@host明确那个端口
vim /etc/hosts.allow
[email protected]: 192.168.0.1
vim /etc/hosts.deny
in.telnetd: ALL
宏:ALL,LOCAL所有本地主机,UNKNOWN主机名称无法解析,KNOWN主机名解析,PARANOID正反向解析不匹配
更强大的宏:EXCEPT表示除了,例外
例:vsftp: ALL EXPECT 192.168.0
守护进程:
独立守护进程:完全实现自我管理,进程要时时运行,适合访问频率高的,例httpd,vsftpd,named
瞬时守护进程:平时并不启动,若用户访问则开启访问完后关闭,例telnet
超级守护进程:xinetd,它本身是一个独立守护进程,文件在/etc/xinetd.conf
所有瞬时守护进程受xinetd管理,有配置文件分段存放,分段目录在/etc/xinetd.d
例:vim /etc/xinetd.d/telnet
service telnet 服务名称
{
disable = NO 开启服务
flags = REUSE
socket_type = stream套接字类型,
wait = no当第一个用户进来,第二个用户不用等,即允许并发
user = root 登录的用户名
server = ... 对应的二进制程序文件的路径
log_on_failure += USERD用户登录失败的记录日志,在原有之上在加上用户的id号
}
也可以加上别的选项:
per_source = 10 同一个ip最多并发多少个请求
only_from = 相当与acl的白名单,例:only_from = 192.168.0.0/24
用户的管理:
SA:系统管理员
DBA:数据库管理员
persona:类似进程的上下文
认证:通过用户名和密码的方式
授权:访问资源的权限
审计:类似用户名是否过期等
glibc:标准C库中的库文件,获取用户信息,将用户的用户名转换成对应的id号,即名称解析
Name Server Switch:名称服务转换,本身也是库,在/etc/nsswitch.conf,用一堆的库文件实现
nis:网络信息服务
可以用命令来显示file的文件
例:getent passwd或getent shadow
getent passwd gentos显示个人信息
PAM:Pluggable Authentication Modules插入式认证模块,它本身只是一个框架,不具备认证功能,借助与模块来实现。
装载模块:modprobe,insmod
卸载模块:modprobe -r,rmmod
显示模块:lsmod
模块信息:modinfo
PAM的库文件:
/lib/security
若是64的系统则在/lib64/security
/etc/pam.d下软件实现认证的文件
两个配置文件:
/etc/pam.conf
/etc/pam.d/
对应应用程序在/etc/pam.d/
对每个字段的说明:
type:类别
auth:认证用户的用户名和密码
account:审计,用户帐号是否在有效期
passwd:修改密码是否符合复杂度的要求
session:建立会话,定义可以有多少个用户并发等
control:控制,说明一些成功或失败应采取什么的动作
有两种方式:简单的和复杂的
简单的:
required若这一关不过则最终结果为不过,但后面还要检查
requisite若这一关不过后面不用检查,则直接为不通过
sufficient充分的,足够,只要这一关过了,则后面不用看直接过
optional无意义的,凑数的
include包含其他文件检查
复杂的:[value=actio1 value2=action2 ...]
6中动作:
ok,done,bad,die,ignore,reset
module-path:模块的路径
module-arguments:模块参数
常见的模块:
1、pam_unix传统Unix的认证机制
常用选项:nullok允许为空
shadow维持以shadow方式存放密码
md5加密以md5方式
调用模块是要使用/etc/passwd/shadow认证
2、pam_permit直接允许访问
3、pam_deny直接拒绝访问
4、pam_cracklib.so检查密码是否符合复杂性要求等,尤其在改密码有用
常用选项:minlen最短长度
difok密码的重复,即过去用过的10不让再使用
dcredit=N包含多少个数字
ucredit=N包含多少个大写字母
lcredit=N包含多少个小写字母
ocredit=N包含多少个其他字符
retry=N最多允许重试几次
5、pam_shells检查用户的shell是否合法,只要在/etc/shells即为合法
6、pam_securetty定义root只能通过那个终端登录
凡在/etc/securetty都允许登录
7、pam_listfile.so使用一个简单文件来确定某个用户或组能否登录服务
item=[tty|user|rhost|ruser|group|shell]
sense=[allow|deny]
例:指定某组的允许登录
vim /etc/pam.d/system-auth-ac
auth required pam_listfile.so intem=group sense=allow file=/etc/security/allow_group
vim /etc/security/allow_group
root添加组
group
8、pam_rootok只要是管理员就行,经常用到su中
/etc/pam.d/su
9、pam_limits组或用户能够获取资源的量
/etc/security/limits.conf
格式:<domain><type><item><value>
domain:指定用户或某组中的用户,*表所有,@group
type:软限制soft,硬限制hard,两者都是使用-
item:nofile所允许打开文件的最大使用个数
cpu:所允许最大使用cpu,单位是分钟
nproc:最多允许运行进程的个数
as:限制内存空间大小,单位是KB
若为0为不做任何限制
普通用户可以用ulimit命令来调整
help ulimit查看命令的使用