松江新城建设集团有限公司网站,photoshop手机版在线使用,设计教程,网站可以免费做吗nsswitch#xff1a;network service switch
名称解析#xff1a;name --- id 认证服务#xff1a;用户名、密码验证或token验证等 名称解析和认证服务都涉及查找位置#xff0c;即保存在哪里。如linux认证#xff0c;passwd、shadow#xff0c;是在文件中…nsswitchnetwork service switch
名称解析name --- id 认证服务用户名、密码验证或token验证等 名称解析和认证服务都涉及查找位置即保存在哪里。如linux认证passwd、shadow是在文件中还可能在数据库中等。名称解析中名称和对应的地址保存方式等。认证服务也可能用到名称解析服务如Linux输入的是用户名认证时是解析成id在认证密码。
以解析库为例可能存储的方式 文件、MySQL、NIS、LDAP、DNS等 那么一个解析程序要实现解析功能就必须实现这几种存储方式的访问驱动这将是很麻烦的事情。解决方法是做一个中间层——通用框架。 做一个通用框架通过配置文件让这个框架灵活指定使用哪种存储。
对于一台主机中的通用框架通常是提供一个库文件方便各个程序使用。在前面学习自制Mini Linux时使用dropbear用到认证时就使用了这样的一种框架nsswitch提供的库是/usr/lib64/libnss3.so
然后还能看到提供的不同的存储访问文件如dns、file、nis、db等 所以通用框架与各存储交互的实现是通过 /usr/lib64/libnss*/lib64/libnss* 具体是实现哪种存储访问通过配置文件/etc/nsswitch.conf 这里passwd、shadow、group等相当于数据库的名后面的files等相当于实现实现有很多种如filesnisdnsdb等。 而实现有其默认值如passwd的实现files默认是/etc/passwd文件等 配置文件说明配置文件中数据库名后的实现可以有多个使用时按顺序依次查找 db store1 store2 。。。 每种存储中查找的结果状态STATUS success | notfound | unavail | tryagain 对于每种状态参数的行为ACTION return | continue 示例 hostfiles nis [NOTFOUNDreturn] dns对主机名的解析先从file中查找没有找到即状态为NOTFOUND行为采取默认continue就是继续找下一个存储即nis如果nis中也没有找到即状态为NOTFOUND默认是继续去找dns这里设置了[NOTFOUNDreturn]就改变了nis的行为找不到就返回了不找了。这个写法与直接去掉后面的dns的区别是如果nis不存在而不是查找找不到那么就查找后面的dns。
配置文件中services配置的是files默认就是找/etc/serviceshosts配置的files默认找/etc/hostsnetstat命令使用-tnl选项不进行地址和端口的解析使用-tl将解析地址和端口此时就用到了nsswitch将地址和端口进行了解析。
可用通过命令来查找对应的数据库中的信息getent database [netry] pampluggable authentication module插入式认证模块
pam与nsswitch类似nsswitch是实现名称解析的通用框架而pam是实现认证的通用框架。
认证时密码的存储方式和位置各种各样对于实现认证的程序来说也面临多种存储驱动的问题。
认证库文件、MySQL、LDAP、NIS 。。。 通用框架与各存储交互的实现以及各种辅助性功能如密码认证通过但是用户是被锁定状态也不能允许认证通过再比如修改密码是的复杂度不符合时的处理等。 pam所在位置/lib64/security/
每个模块实现一种功能实际使用中可能要配置使用多个模块实现一种功能组合。
配置文件/etc/pam.conf、/etc/pam.d/*.conf 通常每个应用使用一个单独的配置文件如登录使用/etc/pam.d/loginsu使用/etc/pam.d/su 通常是一个规则栈。 配置文件中每行定义一种检查规则 格式type control module-path module-arguments type检查功能类别。 auth账号的认证和授权 account与账号管理相关的非认证功能 password用户修改密码时密码检查规则 session用户获取到服务之前或使用服务完成之后要进行的一些附加性操作 control同一种功能的多个检查之间如何进行组合 有两种实现机制 1、使用一个关键词来定义如sufficientrequiredrequisite 2、使用一或多个“statusaction”形式的组合表示 简单机制 required表示本模块必须返回成功才能通过认证。但是如果该模块返回失败的话失败结果也不会立即通知用户而是要等到同一stack中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必要条件。 requisite与required类似该模块必须返回成功才能通过认证。但是一旦该模块返回失败将不再执行同一stack内的任何模块而是直 接将控制权返回给应用程序。是一个必要条件。 sufficient表明本模块返回成功已经足以通过身份认证的要求不必再执行同一stack内的其它模块但是如果本模块返回失败的话可以忽略。可以认为是一个充分条件。 optional表明本模块是可选的它的成功与否一般不会对身份认证起关键作用其返回值一般被忽略。 include调用其他的配置文件中定义的配置项。 复杂机制[status1action1,status2action2,...] status返回状态ok。。。 actionokdonedieignorebadreset module-path模块路径 /lib64/security/此目录下的模块引用时可使用相对路径 module-arguments模块参数
模块 1pam_shells.so检查是否是安全的shell。 2pam_limits.so模块通过读取配置文件完成用户对系统资源的使用控制 /etc/security/limits.conf /etc/security/limits.d/* domain type item value domainusername、group、*(所有用户) typesoft、hard(由root设定通过kernel强制生效)软限制和硬限制-二者同时限定 itemnofile-所能够同时打开的最大文件数量nproc-所能够同时运行的最大进程数量 msqqueue使用的POSIX消息队列能够占用的最大内存空间 sigpending所能够使用的最大信号数量 value
ulimit -n #文件数量 ulimit -u #进程数量
PAM的配置文件有点类似网络安全配置中的ACL只不过PAM更复杂。 对于同一种类型type如auth可能有多行auth每行的module不一样实现的功能不一样即多行相同的type实现了一个功能组对于多行auth还有一个问题是这一行认证通过或不通过以后对后续行的操作的规定或说影响这就是control来规定的。
做一个简单的测试对sshd服务其PAM配置文件如下
添加一个用户设置其shell为tcsh 以此用户远程ssh登录
可以登录成功。然后修改/etc/pam.d/sshd在第一行添加 auth required pam_shells.so 意思是使用pam_shells.so进行安全shell的验证。 然后testpam退出重新登录依然可以登录系统 将/etc/shells中的tcsh注释掉 再次登录无法登录系统 因为testpam的shell是/bin/tcsh而这个shell因为没有在/etc/shells中说明是不安全的shell而pam_shells.so就是验证是否是安全shell因为不是了所以拒绝登录。
rsyslog日志
系统主要的日志类型历史日志。其他的还有如数据库的事务日志等 历史事件记录什么样的事项要根据日志的级别。 日志级别事件的关键性程度loglevel 日志中都记录哪些信息时间事件... 系统日志服务为各应用程序记录日志是操作系统提供的一个公共的日志系统为一些小的应用提供日志功能而不需要每个应用单独编写日志功能。 syslogcentos5 syslogdsystem主要为用户空间的进程记录日志 klogdkernel为内核进程记录日志
rsyslogcentos6提供的日志功能 也包括 syslogd和klogd不但能为本地主机而且能够为远程主机记录日志集中式日志管理功能。其特点如下 多线程 支持UDPTCPSSLTLSRELP等协议 MySQLPGSQLOracle实现日志存储 强大的过滤器可实现过滤日志信息中任何部分 自定义输出格式 elasticsearch一个高性能分布式搜索和分析引擎可用于日志分析logstash日志收集器kibana是为 Elasticsearch设计的开源分析和可视化平台elasticsearch的前端——elk
日志收集方 facility设施从功能或程序上对日志进行分类多个应用同一类的日志流统一到一个统一的收集管道中叫做facility。系统提供的facility authauthprivcrondaemonkernlprmailmarknewssecurityuseruucplocal0-local7syslog priority级别 debuginfonoticewarnwarningerrerrorcritcriticalalertemergpanic 指定级别 *所有级别 none没有级别 priority此级别及更高级别的日志信息 priority此级别本身 配置文件中facility.priority /var/log/message
程序环境 主程序/sbin/rsyslogd 配置文件/etc/rsyslog.conf 服务脚本/etc/rc.d/init.d/rsyslog 系统引导时的信息记录在/var/log/dmesg中。
配置文件rsyslog.conf说明 RULESfacility.priority target target: 文件路径记录于指定的日志文件中通常在/var/log下路径前的“-”表示异步写入 用户将日志通知给指定用户*代表所有用户 日志服务器hosthost必须监听在tcp或udp协议514端口上提供服务 管道 | COMMAND
文件记录的日志的格式 事件产生的日期时间 主机 进程pid事件内容 有些日志记录二进制格式/var/log/wtmp/var/log/btmp /var/log/wtmp当前系统上成功登录的日志last命令查看 /var/log/btmp当前系统上失败的登录尝试lastb命令查看lastlog命令显示当前系统上每一个用户最近一次的登录时间
rsyslog服务器 在rsyslog配置文件中将监听打开可以监听udp或tcp # Provides UDP syslog reception$ModLoad imudp $UDPServerRun 514
# Provides TCP syslog reception$ModLoad imtcp $InputTCPServerRun 514
配置后重新启动服务service rsyslog restart 监听端口已经启动。
这样其他主机就可以通过这些端口向此主机发送日志信息。
测试其他主机向此主机发送信息 先要配置其他主机的/etc/rsyslog.conf配置某日志的target即存储位置为此主机 日志主机192.168.147.130客户端192.168.147.129配置129上的日志配置文件 在客户端129上安装vsftpyum install tree在日志主机上
可以看到客户端日志信息已经开始被记录在日志主机上了。 注意日志主机上先关闭防火墙。service iptables stop
测试将日志记录在mysql数据库中 mysql数据库建在129上客户端主机日志主机130上需要有mysql的驱动
安装rsyslog-mysqlyum install rsyslog-mysql安装后查看安装的文件rpm -ql rsyslog-mysql 主要就是一个so文件。还有一个createDB.sql是初始化日志库的SQL语句文件
然后在mysql服务器上配置 创建日志库的用户
直接执行日志库的sql文件初始化数据库 # mysql -usyslogu -p123456 -h192.168.147.129 /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 至此日志数据库的初始化完成。 在日志服务器上修改配置文件加载mysql的驱动模块配置target 配置后重新启动服务。
此后的日志记录到mysql数据库中select * from SystemEvents\G;
至此日志服务存储到文件和存储到mysql中就配置完成。loganalyzer下一步就是为基于mysql的日志服务配置一个日志前端展示应用loganalyzer 1下载LogAnalyzer 3.6.6 2安装支持环境。LogAnalyzer就是一个php的web应用链接mysql日志库然后以各种方式展示或查询或分类日志对日志分析实现就是这样的一个功能。所以需要安装httpd、php等。yum install httpd php php-mysql php-gd 3测试httpd、php、mysql是否运行正常 编写测试页面/var/www/html/index.php 注意防火墙和selinux都需要关闭。 4解压tar xf loganalyzer-3.6.6 将src下的内容拷贝到/var/www/html/log/下将contrib下的文件也拷贝到/var/www/html/log/下同时将拷贝过去的contrib下的文件configure.sh secure.sh增加执行权限chmod x *.sh 然后运行这两个程序./configure.sh ./secure.sh 5修改配置文件权限chmod 666 config.php 如果config.php不存在这个命令将创建文件。 6在浏览器上执行安装即访问install.php
完成后显示日志页面
后面就是这个网站的使用了。