033PPT
第一单元 服务
服务
- 网络服务,根据其使用的方法来分,可以被分为三类
- 由init控制的服务
- 由System V 启动脚本启动的服务
- 由xinetd 管理的服务
由init控制的服务
- 配置在/etc/inittab中
- 可以设置respawn参数在服务每次被关闭时自动重启
- inittab文件被改变后,可以用init q来使改动生效
由System V启动的服务
- 由/etc/rc.d/init.d/目录下的System V脚本启动
- /etc/rc.d/init.d/script {start | stop | restart}
- 也可以用service命令来执行脚本。
- 在不同运行级别下的默认开关可以不同
- 用chkconfig来管理
- 在有些地方也被称为standalone的服务
由xinetd管理的服务
- 由xinetd管理
- xinetd daemon
- 服务管理文件放在/etc/xinetd.d/目录下
- 编辑服务文件来开关服务
- 重启xinetd
chkconfig
- System V:
- 决定在切换入某个运行级别下时,服务打开还是关闭
- xinetd:
- 在xinetd服务正在运行的情况下,直接开启或关闭基于xinetd的服务
第二单元 DNS
DNS
- DNS:Domain Name Service/域名服务
- 支持将计算机的域名解析成IP地址(正向搜索)
- 支持将IP地址解析成计算机的域名(反向搜索)
- 允许计算机根据逻辑组合成一个一个名字域
区、域及授权
- 一个域(domain)包含一个完整的分级域名下层树
- 一个区(zone)则是域的一部分,被一个具体详细的服务器所管理
- 子域可以被授权成为附加的域
- 一个区可以直接管理子域
英特网上的分级DNS
- 根域名服务器
- 作为区认证域名服务器的最高级别域名服务器存在
- 为递归查询提供权威解释
- 区认证域名服务器
- 区的划分与认证
- 主域名服务器与从域名服务器
主域和从域
- 主域服务器
- 拥有一个域的主复制数据
- 从域服务器
- 为主服务器提供自动数据备份
- 每一个从服务器都会自动从主服务器处同步更新数据
客户端DNS
- 客户端产生对IP与主机名解析的需求,通常DNS客户端上有许多程序运行时需要解析
- 客户端检索本地数据文件的相关记录
- 客户端将无法自行解释的需求,通过53端口送给指定的DNS服务器
- 收回的数据也许并不权威
服务端DNS
- 服务端接受请求
- 如果自己无法给出回答,则可能将请求转发给上级服务器,或直接询问根域名服务器
- 其上级服务器有可能给出回答,或进一步转交给其他域名服务器
- 一个服务器上可以记录多个域的数据
BIND
- BIND:Berkeley Internet Name Daemon
- BIND是在Internet上应用最为广泛的DNS服务器
- 提供稳定与可信赖的下层结构以提供域名与IP地址的转换
BIND服务一览
- 后台进程:named
- 脚本:/etc/rc.d/init.d/named
- 使用端口:53(tcp,udp)
- 所需RPM包:bind,bind-utils
- 相关RPM包:bindconf,caching-nameserver
- 配置文件:/etc/named.conf
- 相关路径:/var/named/*
/etc/sysconfig/named
- named进程被System V脚本激活后,会根据此文件的参数决定其运行参数:
- 例如:OPTION=“-d 5”(将debug等级设为5)
/etc/named.conf
- named.conf是BIND使用的默认配置文件
- 在每一次named启动与挂起时都会被读取
- 一个简单的文本文件,其中记录的可以包括options(全局参数)、zone(区域定义)、access control lists(访问控制列表)等
option
- 在/etc/named.conf的options段中被宣告
- 常用的参数包括
- directory:指定zone file的存放位置
- forwarders:指定其上级域名服务器
- allow-query:指定允许向其提交请求的客户
- allow-transfer:指定允许复制zone数据的主机
主域
- 由一个zone段在/etc/named.conf中宣告
- type master;
- file:存放该zone数据的文件名
- 必须存在于options段中提及的目录之下
- 文件名可以随意
- allow-update:允许动态更新该zone数据的客户机
从域
- 由一个zone段在/etc/named.conf中宣告
- type slave;
- master:指定其主域名服务器
- 对应的主域名服务器必须承认并存放有该区域的数据
- file:本地用于存放zone数据的文件
- 从域名服务器总是试图与其master联系并获取一份当前数据的副本
反解析域
- 域的名字必须用.in-addr.arpa来结尾
- 由一个zone段在/etc/named.conf中宣告
- 反解析域一般对应到一个具体的IP段
- 反解析域同样可以配置为从域
- 许多服务会尝试进行反解析
根域
- 根域“.”
zone "." IN {
type hint;
file "named.ca";
};
zone文件
- 文件通常存放在/var/named目录下
- 用于存放指定域内的各种资源与数据
- 第一段资源记录被成为起始授权记录(SOA)
- 每一个在/etc/named.conf中定义的zone都应该对应一个具体的zone文件
资源记录
- SOA:定义起始授权
- NS:指定域名服务器
- MX:指定邮件服务器
- A:将一个域名解析成其后的IP
- CNAME:将一个域名设置为另一个域名的别名
- PTR:将一个IP地址指向一个域名
SOA记录
- SOA(Start of Authority):起始授权
- 每一个域文件中都应该有一个SOA 段
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
NS记录
- NS(name server):域名服务器
- 每一个主域名服务器和从域名服务器都应该拥有一条NS记录,以防止主服务器在出现故障后,从服务器不能及时提供服务
@ IN NS server1.example.com.
example.com IN NS server1.example.com.
资源记录
- A记录
- 用于将主机名对应成IP地址
- CNAME记录
- 用于定义某一个地址的别名
- PTR记录
- 用于将IP地址对应成一个主机名
MX与HINFO记录
- MX:用于定义某一个域里负责的邮件服务器
- 每一条MX记录前都需要指定优先级别
example.com IN MX 5 mail - HINFO记录提供解析时对一台主机做补充注释
server1 IN HINFO master server
Round Robin
- 利用复数A记录来均衡数台服务器的访问负载
www 0 IN A 192.168.0.3
www 0 IN A 192.168.0.4
www 0 IN A 192.168.0.5
r n d c
- 域名服务器控制程序
- 安全防范,远程控制运行的域名服务器
- 使用TSIG 安全
- 例如:
[root @stationxx root]# rndc reload - rndc 默认只监听本地loopback端口
BIND语法检查工具
- 在BIND出错时使用如下工具:
named-checkconf
默认检查的配置文件是 /etc/named.comf
named-checkzone
检查一个Zone文件的配置
redhat-config-bind
- 图形界面下的BIND配置工具
- 简单清晰地完成BIND配置
- 可对应多个版本的BIND
- 配置文件存放在/etc/alchemist/namespace/dns/local.adl
第三单元 Samba
SAMBA 原理概述
- SAMBA:Send Message Block
- 整合了SMB协议及Netbios协议,使其运做在TCP/IP上。
- 能够让Unix based的机器与windows互动。
- SAMBA服务有两个进程:
- smbd:SMB服务器
- nmbd:netbios名字服务器
SAMBA 服务一览
- 后台进程:smbd,nmbd
- 脚本:/etc/rc.d/init.d/smb
- 使用端口:137,138,139
- 所需RPM包:samba,samba-common,samba-client
- 相关RPM包:samba-swat
- 配置文件:/etc/samba/smb.conf
SAMBA 的配置
- samba的配置文件:/etc/samba/smb.conf
- 由数个[]将配置文件分成数段,例如:
[global]:一些全局配置
[homes]:让用户可以访问其主目录
[printers]:定义共享的打印机资源 - 图形界面下的配置工具
- SWAT(Samba Web Admin Tool)
- redhat-config-samba
全局设置
- 全局设置写在[global]段内,主要是指samba服务器的一些全局设定
- workgroup
- server string
- hosts allow
- security
- encrypt passwords
- smb passwd file
共享段
- 共享段用于在samba服务器上开放共享目录
- 一般每一个[ ] 表示一个指定的共享目录,[ ]内写的是目录的共享名
测试samba服务
- 用户可以利用testparm指令来检查smb.conf文件的语法。
- 只能检查关键字段的拼写错误。对于配置值错误需要结合日志文件来判断。
- 用户可以用service smb status判断samba服务的开启状况
- 用户可以用nmblookup来检查本机上的samba服务是否正确开启
管理smb用户
- samba服务支持用户级别的共享限制
- 使用smbadduser添加可以使用smb服务的用户。
- 语法:smbadduser linux帐号:windows帐号
- 使用smbpasswd改变用户的密码。
- 用户密码存放在/etc/samba/smbpasswd文件中
- 用户映射存放在/etc/samba/smbuser文件中
smbclient
- 可以用来向服务器请求samba服务资源列表
- smbclient –L 主机名
- 可以用来象一个ftp客户端一样访问samba共享资源
- smbclient -U student%XXX //server1/tmp
smbmount
- smbmount可以将远端的一个window共享目录,或Unix系统通过samba服务共享出来的目录,挂载到自己的Linux文件系统上。
- 语法:smbmount //server1/tmp /mnt/tmp –o \
username=student,password=XXX - 用于替代mount –t smb
第四单元 电子邮件服务
邮件发送模型
- 邮件用户代理(MUA)将信息传送给邮件传输代理(MTA)
- 邮件传输代理决定信息送至目的地的路由,然后根据情况决定是否还需要将信息交给中介邮件传输代理
- 域邮件传输代理将邮件送至邮件投递代理(MDA)
- 用户收到邮件
SMTP协议
- SMTP:Simple Mail Transfer Protocol/简单邮件传送协议
- 定义邮件传送
- 基于TCP服务的应用层
- RFC0821
- 明文传送
SMTP协议的使用
- SMTP协议使用25端口
- SMTP协议命令
- HELO:通报来访者地址
- MAIL FROM:发件人地址
- RCPT TO:收件人地址
- DATA:输入正文内容,用单独的.为行结束
- QUIT:连线结束
安全与反垃圾邮件策略
- 安全策略
- 拒绝从无法解析的域送来的邮件
- 建立各种基于主机、用户、域的访问控制
- 默认配置仅允许本地收发
- 不再使用setuid的工具
- 反垃圾邮件策略
- 默认情况下不做转发
- 建立访问数据库
- 检查邮件信头
sendmail
- sendmail是使用十分广泛的邮件提交工具(MSP)
- 在邮件模型中承担着MTA及MDA的作用
- 支持多种类型的邮件地址寻址
- 支持虚拟域及虚拟用户
- 允许用户及主机伪装
- 提供在投递失败后自动重发等多种错误应对策略
sendmail服务一览
- 后台进程:sendmail
- 脚本:/etc/init.d/sendmail
- 使用端口:25(smtp)
- 所需RPM包:sendmail,sendmail-cf,sendmail-doc
- 配置文件:/etc/sendmail.cf,/etc/aliases,/etc/mail/,/usr/share/sendm ail-cf/
- 相关服务:procmail
sendmail的主要配置文件
- /etc/sendmail.cf是默认的sendmail主要配置文件
- 包含域别名段,信头格式段,转发规则等数据
- 很少被直接修改
- /etc/mail/submit.cf被用于每次sendmail被一个用户工具所调用的时候
- 通常不需要修改
用m4生成sendmail.cf
- m4是UNIX下使用的传统宏处理器
- sendmail.cf可以由一个宏文件经m4处理后得到
- Red Hat默认使用/etc/mail/sendmail.mc为/etc/sendmail.cf的宏文件
m4 /etc/mail/sendmail.mc > /etc/sendmail.cf - 我们推荐使用m4处理sendmail.mc来得到sendmail.cf
编辑sendmail.mc
- 每一个sendmail.mc宏应该定义了操作系统类型、文件位置、请求特征及邮件发送工具、用户列表
- 在每一行的开头添加dnl表示注释
- 默认情况下,sendmail服务器只侦听本地的连接
- 注释
DAEMON_OPTION(‘PORT=smtp,Addr=127.0.0.1,Name=MTA’)
其他有用的配置
- FEATURE(’accept_unresolvable_domains’)
- 接受无法反向解析的域来的邮件
- FEATURE(’dnsbl’)
- 支持根据dns黑洞列表来拒绝垃圾邮件
- FEATURE(’relay_based_on_MX’)
- 自动接受DNS中MX记录来源的邮件转发
- FEATURE(’blacklist_recipients’)
- 允许使用黑名单查禁收件人
/etc/mail/access
- 用于定义接受或拒绝的邮件来源:
- 格式:
IP/域名 设定值 - 设定值:
- REJECT:拒绝
- OK:无条件接受
- RELAY:允许转发
- DISCARD:丢弃
/etc/mail/virtusertable
- 允许在邮件服务中使用虚拟域及虚拟用户并自动映射:
[email protected] joe
@wenhua.org [email protected]
[email protected] [email protected]
/etc/aliases
- 定义本地用户的别名
- 别名后的映射对象可以是:
- 一个本地用户
- 多个本地用户(用逗号分隔)
- 本地文件(需要指出路径)
- 指令(需要管道)
- 另一个email地址
- 设定完/etc/aliases后,需要运行newaliases更新aliases.db
邮件收取
- MDA将收到的信件根据用户存放在/var/spool/mail下
- /var/spool/mail目录下每一个文件对应与文件名同名的用户
- 用户使用mail等工具阅读完信后,未被删除的邮件会自动转存到用户主目录下的mbox文件中
POP3协议
- POP3:Post Office Protocol 3/邮局协议第三版
- POP3协议适用于不能时时在线的邮件用户。支持客户在服务器上租用信箱,然后
利用POP3协议向服务器请求下载 - 基于TCP/IP协议与客户端/服务端模型
- POP3的认证与邮件传送都采用明文
使用pop3协议
- POP3协议使用110端口
- POP3协议命令
- USER:通报用户名
- PASS:输入密码
- LIST:列出所有邮件大小
- RETR:阅读邮件
- DELE:删除邮件
- QUIT:连线结束
配置pop3服务器
- pop3服务一般是基于xinetd的服务
- 可以通过两种方式开启和关闭服务
- 编辑/etc/xinetd.d/ipop3并重启xinetd
- 使用chkconfig来开启或关闭服务
IMAP
- IMAP:Internet Message Access Protocol/英特网信息存取协议
- 另一种从邮件服务器上获取邮件的协议
- 与POP3相比,支持在下载邮件前先行下载邮件头以预览邮件的主题来源
- 基于TCP/IP
- 使用143端口
邮件接收工具
- mozilla-mail
- mozilla下的邮件接收工具
- 采用netscape mail的风格
- evolution
- GNOME下的默认邮件接收工具
- 采用windows下的outlook风格
- kmail
- kde下的邮件接收工具
- fetchmail
- 字符界面下的邮件接收工具
配置fetchmail
- fetchmail支持多种邮件接收协议
- fetchmail的配置文件是用户主目录下的.fetchmailrc文件
- “.fetchmailrc”中每一行代表一个邮件信箱
- 范例:
poll pop.provider.net protocol pop3 username “kevinzou” password “nopass”
procmail
- procmail是一个非常强大的邮件转发工具
- 可以用来:
- 对收到来信进行排序,并送入不同目录
- 预处理邮件
- 在收到一封邮件后激活一个事件或程序
- 自动转发邮件给其他用户
- 默认情况下sendmail会将procmail设定为本机转发邮件工具
- 有可能在短时间内产生大量转发邮件,因此配置时应小心谨慎
简单配置procmail
- procmail的配置文件是用户主目录下的 ”.procmailrc”
- 如需将来自kevinz关于linux的邮件转发给todd,并复制入linux目录:
:0
*^From.*kevinz
*^Subject:.*linux
{ :0 c
! todd@wenhua.org
:0
linux
}
邮件读写工具
- 图形界面下的邮件接受工具一般也可以用来读写邮件
- 字符界面下的邮件读写工具
- 非常简单地邮件读写工具
- pine
- 支持添加附件
- 支持将已读文件存入指定目录
第五单元 WEB服务器
http 服务原理
- 超文本传送协议
- 基于客户端 服务端模型
- 协议流程:
- 连接:客户端与服务端建立连接
- 请求:客户端向服务端发送请求
- 应答:服务端响应,将结果传给客户端
- 关闭:执行结束后关闭
web服务器 apache
- 应用广泛的web服务器
- 支持进程控制
- 在需要前自动复制进程
- 进程数量自动使用需求
- 支持动态加载模块
- 不需重编译就可扩展其用途
- 支持虚拟主机
- 允许使用一台web服务器提供多个web站点的共享
apache服务一览
- 后台进程:httpd
- 脚本:/etc/rc.d/init.d/httpd
- 使用端口:80(http),443(https)
- 所需RPM包:apache,apache-devel,apache-manual
- 相关RPM包:apacheconf
- 配置路径:/etc/httpd/,/var/www/
apache的配置文件
- 配置文件储存为
/etc/httpd/conf/httpd.conf - 设置标准网络服务器参数、虚拟主机、模块
- 定义文件名与mime类型
- 访问控制
- 默认的html存放位置
- /var/www/html
全局配置
- ServerType:选择系统激活服务器的方式。可以是inetd或standalone
- ServerRoot:设定Apache安装的绝对路径
- TimeOut:设定服务器接收至完成的最长等待时间
- KeepAlive:设定服务器是否开启连续请求功能
- MaxKeepAliveRequests:设定服务器所能接受的最大连续请求量
全局配置(二)
- KeepAliveTimeout:使用者 ‘连续’ 请求的等待时间上限
- MinSpareServers:设定最小闲置子进程数
- MaxSpareServers:设定最大闲置子进程数
- StartServers:设定激活时所需建立的子进程数
- MaxClients:设定同时能够提供使用者的最大服务请求数
主机配置
- Port:设定http服务的默认端口。
- User/Group:设定服务器程序的执行者与属组
- ServerAdmin:设定站点管理者的电子邮件
- ServerName:设定服务器的名称
- DocumentRoot:设定服务器的共享路径
- DirectoryIndex:设定默认调用文件顺序
- ErrorLog:设定错误记录文件名称
虚拟主机
- 在同一台服务器上配置多个共享服务
- 在虚拟主机中未指定的配置即采用主机配置
<VirtualHost 192.168.0.254>
ServerName www254.example.com
DocumentRoot /var/www/virtual
</VirtualHost>
访问控制
- Apache提供目录级别与文件级别的基于主机的多种访问控制
- Apache提供目录级别基于用户密码的访问控制
.htaccess
- Apache支持在需要限制访问的目录下,建立 .htaccess文件来实行访问限制。
- 用户可以根据httpd.conf中记录的AllowOverride内容,在 .htaccess文件添加访问控制语句以取代在httpd.conf中的记录。
- 改变 .htaccess文件设置不需要重启httpd
CGI
- CGI程序只能放在有设定ScriptAlias的目录下才可以使用。
ScriptAlias /cgi-bin/ /cgi-bin/ - Apache 可以通过加载模块来倍化CGI程序的速度
Apache加密网站
- Apache用443端口提供https服务
- 需要加载mod_ssl模块
- 相关配置文件在/etc/httpd/conf.d/ssl.conf
- 加密配置
- 认证:conf/ssl.crt/server.crt
- 私钥:conf/ssl.key/server.key
- 认证/钥匙生成
- /usr/share/ssl/certs/Makefile
- 个人签名认证:make testcert
- 认证签名需要:make certreq
Squid Web Proxy Cache
- Squid支持为FTP、HTTP等其他数据流做代理
- Squid会将SSL请求直接转给目标服务器或另一个代理
- Squid提供诸如访问控制列表、缓存管理及HTTP服务器加速
第六单元 NFS、FTP和DHCP
NFS
- NFS:Network File System/网络文件系统
- Linux与Linux之间的文件共享
- 提供远端读存文件的服务
NFS 原理概述
- 建立在RPC协议上的服务,使用时需要打开portmap
- 基于客户端 服务器端模型
- 服务端为多个客户端提供服务
- 客户端也可以从多个服务端处获得文件目录
NFS 服务一览
- 后台进程:nfsd,lockd,rpciod,rpc.mounted,rpc.rquotad,rpc.statd
- 脚本:/etc/init.d/nfs,/etc/init.d/nfslock
- 使用端口:由portmap (111)分配
- 所需RPM包:nfs-utils
- 相关RPM包:portmap(必需)
- 配置文件:/etc/exports
NFS 客户端策略
- 检查服务端的nfs共享资源
- showmount -e server
- 将服务端开放的nfs共享目录挂载到本机上的一个目录
- mount -t nfs server:/share /mnt/nfs
NFS 服务端配置
- 编辑/etc/exports文件以配置开放路径
- 路径 对象(方式)
- 确保portmap服务已开启
- 打开或重启nfs服务
- service nfs start/restart
FTP
- vsftpd是RedHat Linux默认使用的ftp服务端软件
- vsftpd 不再依赖于xinetd服务
- 允许匿名或本地用户访问
- 匿名访问不须额外的RPM包
- /etc/vsftpd/vsftpd.conf是默认的配置文件
ftp服务一览
- 后台进程:vsftpd
- 类型:System V 服务
- 使用端口:20(ftp-data),21(ftp)
- 所需RPM包:vsftpd
- 配置文件:/etc/vsftpd/vsftpd.conf
/etc/vsftpd.ftpusers
/etc/pam.d/vsftpd - 日志:/var/log/vsftpd.log
FTP用户控制
- /etc/vsftpd.ftpusers
- /etc/vsftpd.user_list
FTP测试工具
- ftpwho:查看当前使用ftp的用户
- ftpcount:查看当前连线数目
DHCP
- DHCP:动态主机配置协议
- 使用服务端的dhcpd来提供服务
- dhcpd可以同时为DHCP及BOOTP客户端提供服务
dhcp服务一览
- 后台进程:dhcpd
- 脚本:/etc/rc.d/init.d/dhcpd
- 使用端口:67(bootps),68(bootpc)
- 所需RPM包:dhcpd
- 相关RPM包:
- 配置文件:/etc/ftpaccess,/etc/ftphosts,/etc/ftpusers
- 日志:/var/log/xferlog
配置dhcp服务
- /etc/dhcpd.conf
- 范例:
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.253;
default-lease-time 21600;
max-lease-time 43200;
option domain-name “example.com”;
option routers 192.168.0.254;
option domain-name-servers 192.168.0.254;
}
常用dhcp配置参数
- subnet X.X.X.X netmask X.X.X.X
- 指定dhcp服务工作网段
- range
- 指定分配地址段
- default-lease-time
- 默认租期(请求续租时间)
- max-lease-time
- 最大租期
常用dhcp配置参数(二)
- option routers
- 分配路由器
- option domain-name
- 分配域名
- option domain-name-servers
- 分配DNS server
IP绑定
- host
- 为绑定主机起名(并不是分配给对方的名字)
- hardware ethernet
- 指定硬件地址
- fixed-address
- 指定IP地址或主机名
- 支持为绑定主机单独分配其他网络数据
第七单元 安全及策略
安全术语
- 什么是安全?
- 加密
- 数据完整
- 可用
- 系统安全由系统中最小的安全组件决定
(木桶原理)
基础网络安全
- 大多数的计算机都连接到网络上—局域网、广域网或者Internet
- 由于连接在网络上,增加了对操作系统和后台服务的危胁
常用术语的定义
- 黑客
- 破解者(骇客)
- 拒绝服务
- 缓冲溢出
- 病毒
- 特洛伊木马
- 蠕虫
安全策略
- 物理上的安全性
- 用户限制
- 服务限制
- 网络限制
- 加密
安全策略 (续)
- 安全策略是为了加强对系统安全特性和管理而定义的规则
- 审核
- 让我们检查使用的安全工具
- 实际中使用的安全策略
审核
- 分析 目前的情况
- 了解 安全需求
- 确定 如何实现它们
- 实施 安全机制
- 测试 安装
入侵检测
- 工具
- 嗅探器(sniffers)
- 渗透检测器
- 记录
- 日志
- 日志工具
发现入侵后的措施
- 反应,保护,镜像,恢复,搜索,报告
- 第一步:反应
- 第二步:保护
发现入侵后的措施 续1
- 反应,保护,镜像,恢复,搜索,报告
- 第三步:镜像
- 第四步:恢复
发现入侵后的措施 续2
- 反应,保护,镜像,恢复,搜索,报告
- 第五步:搜索
- 第六步:报告
备份策略
- 一个好的备份策略可以使你从灾难中恢复出来
- 通常备份策略由以下组成:
- 一次定期的完全备份
- 每日增量备份
- 备份媒体远距离存储
第八单元 NIS
什么是NIS服务
- NIS:Network Information Service
- 基于客户端 服务端模型
- 公用资料集中存放在服务端管理
- 提供复数的客户端访问使用
- 基于RPC协议
NIS服务一览
- 服务类型:SystemV
- 后台进程:ypserv,ypbind,yppasswdd
- 使用端口:由portmap (111)分配
- 所需RPM包:ypserv,ypbind,yp-tools
- 相关RPM包:portmap
- 服务端配置文件:/etc/ypserv.conf /var/yp/*
NIS服务端与客户端
- NIS客户端的后台进程是ypbind,服务端的后台进程是ypserv
- 服务端支持NIS协议第一版与第二版
- 客户端还多支持NIS+(v3)
- NIS的局限性
- 安全性差
- 可扩展性不足
- unix-only
NIS客户端基础
- NIS客户端工具ypbind可以通过两种方式获知其域内的服务器是谁
- 在NIS域内广播
- 通过/etc/yp.conf读取本域内NIS服务器的位置
- 使用工具配置客户端
- 使用authconfig将本机添加入一个NIS域
- 指定一个NIS服务器
/etc/nsswitch.conf
- nsswitch.conf记录了系统查询用户密码、组、主机名等资源的遵循顺序
- 确定nsswitch.conf文件中需要向服务器查询数据的资源顺序中包含NIS项
- 查询资源可以是:
- files:本地文件
- dns:域名服务器
- nis/nisplus:NIS服务器
- ldap:ldap服务器
- db:数据库
NIS服务器布局
- 扁平结构
- 一个主服务器负责一个域
- 一个主服务器可以带领多个从服务器
- 提供容错
- 负载均衡
配置NIS服务端
- 在/etc/sysconfig/network中设定一个NIS domain:NISDOMAIN=mydomain
- 修改/var/yp/Makefile决定需共享的数据
- 在/var/yp/securenets中指定许可共享的网段
- 执行/usr/lib/yp/ypinit -m
- 执行service ypbind start
- 执行service ypserv start
配置NIS从服务器
- 将所有从服务器名放在/var/yp/ypservers文件中
- 在每一个从服务器上安装ypserv
- 使用以下指令:
/usr/lib/yp/ypinit –s 主服务器名
NIS工具
- ypcat:列出来自NIS server的map信息
- ypinit:建立并安装NIS database
- ypwhich:列出NIS server的名称
- ypset:强制指定某台机器当NIS server
- makedbm:创造NIS map的dbm档
第九单元 系统安全
监视文件系统
- 监视文件系统可以防止:
- 硬盘空间被占满
- 可能造成安全问题的错误权限
- 监视文件系统包括:
- 数据正确性检验
- 搜寻不需要或可能造成系统破坏的文件
常规搜寻
- 搜寻所有设置了强制位的文件
find / -type f –perm +6000 - 搜寻可以被任何用户写入的文件
find / -type f –perm 2 - 搜寻不属于任何用户与组的文件
find / -nouser –o -nogroup
Tripwire
- 系统文件应该时时处于周密的监视下
- 配置文件被更改可能造成服务的启动与运行故障
- 可执行文件被更改可能造成更大的问题
- tripwire可以根据配置监测文件/目录的大小、更改时间、inode状态、所属用户/组及一系列属性
配置与使用tripwire
- 安装tripwire RPM包
- 编辑twcfg.txt与twpol.txt,根据安装情况来定义配置与监视策略
- 运行/etc/tripwire/twinstall.sh
- 用tripwire –init在/var/lib/tripwire/下建立原始数据库{$HOSTNAME}.twd
- 用tripwire –check来根据数据库检查系统
- 用‘twprint –m r –twrfile 文件名’来阅读监视报告
为Boot Loader加密
- LILO
- 密码明文存放在/etc/lilo.conf中
- 可以应用于全局及局部
- 用于防止用户进入操作系统
- GRUB
- 密码经过md5加密
- 可以应用于全局及局部
- 用于防止用户更改启动参数
插装型认证模块(PAM)
- /lib/security
- 动态可加载库
- 集中安全管理
- 配置在模块被调用时即生效
- /etc/pam.d
- 为PAM ‘客户’配置文件
- 选择需要的库
- 满足所有条件通过认证或失败
PAM 配置
- /etc/pam.d/system-auth
- 控制标志
- 决定PAM如何使用模块调用后的返回值
- required,sufficient,或optional
- /etc/security/下包含了部分配置文件
核心PAM模块
- pam_env:环境变量初始化
- pam_unix
- 标准unix认证
- 允许更改密码
- pam_cracklib:强制使用好密码
常用的pam模块
- pam_nologin
- 如果/etc/nologin存在,则除了root用户,任何用户不能登录
- pam_securetty
- 在/etc/securetty文件中存放的,是root用户可以登录的终端
- 不限制用户登录完成后用su切换成root
常用的pam模块(二)
- pam_access
- 用一个简单的配置文件完成基于用户、组、及来源的访问限制
- 使用/etc/security/access.conf为其配置文件
- pam_listfile
- 允许用户针对某一服务单独建立文件来建立基于用户、组、本地终端、远端主机的限制
常用的pam模块(三)
- pam_limits
- 允许在许可用户使用服务后,对用户的使用资源,进行各种设置
- pam_time
- 使用一个简单的配置文件,来建立基于时间的服务访问限制
- 使用/etc/security/time.conf为配置文件
sudo
- 让一般用户有可能使用root才可以使用的系统管理指令
- 需要配置/etc/sudoers文件,来定义哪些用户可以使用哪些指令,以及使用时是否需要密码
- 用visudo编辑/etc/sudoers文件
- 用‘sudo 系统指令’执行系统指令
第十单元 防火墙和IP伪装
iptables
- iptables是Red Hat Linux里默认使用的防火墙
- iptables提供多个设定参数可以用来定义过滤规则,包括IP/MAC地址、协议、端口、子网掩码
- iptables支持在路由算法发生前后进行网络地址转换
iptables结构
- iptables将防火墙的功能分成多个tables
- filter:数据包过滤
- NAT:Network Address Translation/网络地址转换
- tables又包含多个chains
- 5条默认基础操作chains
- 允许用户自行定义chains
iptables语法
iptables [-t table] <action> [pattern] [-j target]
- action包括:
-A chain:在chain中增添一条规则
-D chain:在chain中删除一条规则
-L chain:列出chain中的规则
-F chain:清空chain中的规则
-P chain:为chain指定新的默认策略,可以是:
- ACCEPT:未经禁止全部许可
- DROP:未经许口全部禁止
iptables语法(二)
- pattern包括:
-s
filter table
- 用于过滤数据包的接送
- chain INPUT:
- 设定远端访问主机时的规则
- 来源是远端访问者,目标是本地主机
- chain OUTPUT:
- 设定主机访问远端主机的规则
- 来源是本地主机,目标是远端被访问主机
- chain FORWARD:
- 设定主机为其他主机转发数据包时的规则
- 来源是请求转发的主机,目标是远端被访问的主机
NAT table
- 用于处理网络地址转换
- chain PREROUTING:
- 路由算法发生之前
- 转换数据包内的来源地址
- chain POSTROUTING:
- 路由算法发生之后
- 转换数据报内的目标地址
用NAT table完成IP伪装
- 对于负责内部子网的路由器,需要为保留地址进行IP伪装
- 使用IP伪装功能需要打开本机上的IP转发功能
- 范例:
iptables –t nat –A POSTROUTING -s 192.168.0.0/24 -o eth1 –j MASQUERADE
第十一单元 网络安全
基础网络安全
- 越来越多的计算机被连接到网络上
- 与网络连通对操作系统和后台进程意味着冒险,被寄生与攻击的可能
基于主机的安全
- 限制不受欢迎的来源
- 封锁不作利用的端口
- 不安装与启动不使用的服务
- 一般,每一种服务本身一般都会提供方式做相关限制
- 配制防火墙保护主机
tcp_wrapper
- 基于主机与服务
- 使用简单的配置文件来设置访问限制
- /etc/hosts.allow
- /etc/hosts.deny
- 基于xinetd的服务也能在其配置中调用libwrap
- 配置一旦被改变,立刻生效
tcp_wrapper的配置
- 访问控制判断顺序:
- 访问是否被明确许可
- 否则,访问是否被明确禁止
- 如果都没有,默认许可
- 配置文件
- 许可用:/etc/hosts.allow
- 禁止用:/etc/hosts.deny
- 基本语法:
后台进程列表:客户端列表 [:参数]
后台进程描述
- 后台进程列表应该是:
- 服务的可执行工具名
- 允许指定多项服务
- 允许使用ALL来匹配所有服务
- 允许可执行工具名后添加IP或主机名,如果本机有多个网络界面
客户端列表
- 客户端描述可以包含:
- IP地址(192.168.0.254)
- 域名或主机名(.example.com, www.wenhua.org )
- 子网掩码(192.168.0.0/255.255.255.0)
- 网络名(@mydomain)
高级语法
- 通配符
- ALL:所有
- LOCAL:所以主机名中不包含.的主机
- UNKNOWN:无法被解析的主机
- KNOWN:可以双向解析的主机
- PARANOID:正向解析成功但无法反向解析的主机
- EXCEPT
- 可用于服务列表与客户端列表
- 可以层层套用
基于xinetd的服务
- xinetd服务支持两种访问限制
- 基于主机
- 基于时间
- 在xinetd与tcp_wrapper都限制的情况下:
- 先检查tcp_wrapper
- 如果tcp_wrapper允许,再检查xinetd是否也允许
0 配置xinetd访问限制
- 可以写在/etc/xinetd.conf中,也可以写在/etc/xinetd.d/目录下的文件中
- 可以使用的控制语句:
- only_from = 客户端描述
- no_access =客户端描述
- access_time =客户端描述
- per_source = 数量
第十二单元 加密与保护
加密的意义
- 数据不加密可能造成的后果
- 密码/数据被盗听
- 数据被篡改
- 认证被操纵
- 不安全的服务和协议
- 密码不安全:telnet,ftp,pop3等等
- 数据不安全:sendmail,nfs等等
- 认证不安全:rsh,rcp等等
单向校验
- 对数据文件用工具求值,并与原文件求得值做比较以验证文件是否为原文件
- 常用的工具:
- sum(CRC-32)
- md5sum(MD5)
- sigen(CRC-32/MD5/SHA/HAVAL)
不对称加密
- 基于公钥与私钥组
- 原理:
- 先由收信人生成一对公钥与私钥
- 收信人将公钥发布出去,留下私钥
- 送信人获取公钥,然后用公钥将传送给收信人的信息加密
- 收信人收到加密信息后再用私钥将信息解密
数字签名
- 另一种同样基于公钥与私钥组的不对称加密
- 原理:
- 发信人先生成一对公钥与私钥
- 发信人将公钥发布出去,留下私钥
- 发信人用私钥将所传送的信息加密,然后送出
- 收信人用获得的公钥将信息解密
openssh
- openssh用来普遍替代了不安全的基本网络通讯工具
- 支持用户与基于标记的认证
- 需要预先安装openssl
- openssh基础配置放在/etc/ssh下
ssh客户端
- ssh:安全shell进程
- ssh 主机名
- ssh 用户@主机名
- ssh 主机名 远端指令
- scp:基于ssh的安全远端拷贝文件与目录
- scp 文件 用户@主机名:远端目录
- scp –r 用户@主机名:远端目录 本地目录
- sftp:基于ssh的安全ftp传送
- sftp 主机名
- sftp –C 用户@主机名
ssh服务端
- 配置ssh服务端,需要安装openssh-server
- 后台进程sshd,作为一个System V服务,可以用/etc/init.d/sshd脚本来控制
- 采用公钥与私钥组机制
- 使用22为其服务端口
- 支持libwrapper的限制
RPM检验
- 未经检验的RPM包可能是危险的
- Red Hat对其认证过的RPM包提供md5及gpg-key的认证
- 用户可以自行检验RPM包是否经过认证
rpm –K RPM包名 - 导入gpg-key
gpg –import /mnt/cdrom/RPM-GPG-KEY
第十三单元 服务 排错
排除的步骤
- 从最简单的问题找起
- 在修改配置之前先看日志文件
- 使用服务的调试模式
- 使用相应的语法检查器
- 更多的问题可以去http://bugzilla.redhat.com 查寻
关于服务的问题
- 检查服务的log文件
- 检查是否可以正确的解析域名或是IP地址
- 检查相依赖的服务或是网络的配置
- 检查安全设置和访问控制连接许可
网络的问题
- 域名解析的问题
- Ip地址配置的问题
- 默认网关的问题
- 路由的问题
- 网卡模块的问题
- 设备激活的问题