(精品)第十章 守护进程与计算机网络安全.ppt

上传人:hwp****526 文档编号:84704038 上传时间:2023-04-07 格式:PPT 页数:27 大小:108KB
返回 下载 相关 举报
(精品)第十章 守护进程与计算机网络安全.ppt_第1页
第1页 / 共27页
(精品)第十章 守护进程与计算机网络安全.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《(精品)第十章 守护进程与计算机网络安全.ppt》由会员分享,可在线阅读,更多相关《(精品)第十章 守护进程与计算机网络安全.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、守护进程(1)n一般服务程序所遵循的通用模式一般服务程序所遵循的通用模式n创建一个套接口(socket)n绑定端口和地址(bind)n使套接口处于监听状态,监视客户的连接请求(listen)n接受客户的请求(accept)n守护进程守护进程n守护进程是一种在后台运行的进程,独立于所有终端n网络服务器一般都采用这种方式运行,如Web服务器、FTP服务器、邮件服务器等。守护进程(2)n守护进程的特点守护进程的特点n当系统初始化时,它们被一次性启动。n它们启动后一直运行着,直至系统关闭。n大部分时间等待某一事件的发生,事件发生时它们便处理这些事件。n往往调用其他进程处理各种请求。守护进程(3)n守护

2、进程的几种启动方式守护进程的几种启动方式n系统初启时,由初始化文件/etc/rc启动(如某些服务进程),这样启动的守护进程具有超级用户权限n由crontab周期性地启动(/etc/cron.allow与/etc/cron.deny)n由命令at在某一指定的时间运行(只执行一次)(/etc/at.allow与/etc/at.deny)n从终端上启动,这种方式的守护进程与终端相连,编写程序时,要处理好与终端、与同一终端相关的其他进程之间的关系守护进程(4)nxinetd守护进程守护进程在redhat linux7.0中,用xinetd来启动一些守护进程nUNIX系统以client/server方式

3、提供多种服务,如ftpd、telnetd、httpd等服务(以d结尾,意为daemon),这些进程事先启动服务进程,以便随时处理来自本地或远程的服务请求.但这些服务进程始终运行着,占用太多的系统资源,而且可能有些服务进程很少使用.n从文件/etc/services查找服务所使用的端口号,并bind()echo 7/tcp ftp 21/tcp telnet 23/tcp守护进程(5)n几点几点说明说明n/sbin/chkconfig-list查看启动进程nchkconfig-level 启动或停止服务,如:#chkconfig-level 2 crond off n还可直接用:/etc/rc.

4、d/init.d/httpd stop|start|restartn关于运行级:0、5关机;1、s或S单用户;2、3或4多用户;6重新启动n用户自己编写守护进程时,不必使用socket()、bind()、listen()、accept()等系统调用,而是根据/etc/xinetd.conf登记的目录中的文件完成相应的工作守护进程(6)nxinetd守护进程守护进程实例实例:守护程序 inetdserv.cpp客户程序 inetdcli.cpp配置文件 inetdserv(root用户建立)守护进程(7)ninetdserv守护进程实现步骤守护进程实现步骤n配置文件为/etc/xinetd.co

5、nf,其最后一行“includedir/etc/xinetd.d”,说明了xinetd的配置文件在/etc/xinetd.d/目录中n已经编译好守护程序inetdserv(见inetdserv.cpp)拷贝到/tmp目录下n以root的身份在/etc/xinetd.d/目录中编辑配置文件inetdserv(见下页)n修改文件/etc/services,添加一行:inetdserv 9099/tcpn/etc/rc.d/init.d/xinetd restart守护进程(8)#default:on#description:The proftpd server serves proftpd ses

6、sions;service inetdserv disable=no port=9099 socket_type=stream protocol=tcp user=root server=/tmp/inetdserv wait=no 守护进程(9)n客户请求客户请求n./inetdcli 202.113.29.19注意:将/etc/xinetd.d中daytime服务启动$telnet 202.113.29.19 13$telnet 202.113.29.19 9099守护进程(10)n几个时间函数的用法几个时间函数的用法#include ntime():获得当前时间戳nlocaltime()

7、:将time_t类型的日期/时间转换为ASCII码nstrftime():格式化日期/时间%a 缩写星期名%A星期全名%b 缩写月份名%B月份全名%C两位数字世纪(year/100)%Y 四位数字年%d 日(0131)%D mm/dd/yy或dd/mm/yy(少用)%H 小时(0023)%M 分(0059)%S 秒网络安全程序设计(1)在编写客户/服务器程序时,应考虑程序的安全性问题,即程序抵御外来威胁的能力,外来的威胁可能来自Internet或本地局域网络的某个用户n套接口编程中网络安全的实现套接口编程中网络安全的实现n信任状:适用于本地用户n通过客户网络地址识别用户:简单n通过主机和域名标

8、识用户的方法适于以下访问通过主机和域名标识用户的方法适于以下访问n授予对指定主机的访问权限n授予对指定域内主机的访问权限n拒绝外界访问指定主机n拒绝外界访问指定域内的主机n拒绝外界访问与特定名称不匹配的IP网络安全程序设计(2)n通过主机名或域名识别客户通过主机名或域名识别客户TCP服务程序中服务程序中 struct sockaddr_in adr_clnt;int len_inet,c,s;len_inet=sizeof(adr_clnt);c=accept(s,(struct sockaddr*)&adr_clnt,&len_inet);UDP服务程序中服务程序中 struct socka

9、ddr_in adr_clnt;int len_inet,s,z;char dgram512;len_inet=sizeof(adr_clnt);z=recvfrom(s,dgram,sizeof(dgram),0,(sockaddr*)&adr_clnt,&len_inet);网络安全程序设计(3)n获取客户地址后,便可获取主机名获取客户地址后,便可获取主机名 struct sockaddr_in adr_clnt;struct hostent*hp;hp=gethostbyaddr(char*)&adr_clnt,sizeof(adr_clnt.sin_addr),adr_clnt.sin

10、_family);if(!hp)fprintf(logf,”error:%sn”,hstrerror(h_errno);else fprintf(logf,”%sn”,hp-h_name);n得到主机名后,可以授予或拒绝客户对本机资源的访问权限得到主机名后,可以授予或拒绝客户对本机资源的访问权限网络安全程序设计(4)n通过IP地址识别客户虽然用主机名和域名标识客户方便,但服务器获取IP地址后,需使用gethostbyaddr()将IP地址分解成主机名,但攻击者通过设置私有域名服务器,骗过IP地址的检查,故直接用IP地址识别客户为好n将IP地址和主机名记录到LOG文件中缺点:n若用户的IP地址改

11、变,要修改服务器上IP表n动态IP(DHCP)不便于管理(应子网级限制)网络安全程序设计(5)n给inetd服务增加安全措施n孤立式网络安全策略n必须单独编写管理服务程序中与安全问题有关的程序代码n必须单独测试每个服务程序的网络攻击的防御能力n由于服务程序相对独立,每个服务程序都给外界提供了访问机会,外界提供了访问机会增加导致系统脆弱n集中式网络安全策略n守护进程inetd的引入简化了服务器编程ninetd可以采取集中式网络安全策略控制系统安全n调用TCP外包器程序(如tcpd),其功能是插入到inetd和服务程序之间,验证外来客户的访问权限(检查文件/etc/hosts.allow和/etc

12、/hosts.deny),然后调用服务程序网络安全程序设计(6)n给xinetd服务增加安全措施n若启动守护进程xinetd,则检查/etc/xinetd.d中的每个服务配置文件,用only_from指明允许地址,用no_access指明拒绝地址n修改配置后,重新启动xinetd,即:/etc/rc.d/init.d/xinetd restartn$man xinetd.conf(注意only_from与no_access)网络安全程序设计(7)n实例1:修改/etc/xinetd/inetdserv文件(1)su(切换为root,并提供password)(2)vi/etc/xinetd.d/

13、inetdserv(加入only_from=202.113.29.8)(3)/etc/rc.d/init.d/xinetd restart (注意看/tmp/inetdserv是否存在)(4)exit(退出root)(5)在29.8上执行./inetdcli 202.113.29.19 (6)修改only_from=202.113.29.4,重复(3)(5)网络安全程序设计(8)n用到可变参数列表函数:#include void va_start(va_list ap,last);/初始化ap,使ap指向last后第一个可变参数 type va_arg(va_list ap,type);/将a

14、p所指参数值返回,ap指向下一个参数 void va_end(va_list ap);/清除变量ap,表明函数功能到此结束 int vprintf(char*format,va_list ap);/可变参数个数的格式化输出 int vfprintf(FILE*stream,char*format,va_list ap);/可变参数个数的格式化输出到文件例:求任意个数浮点数的和(add.cpp)输出任意个数浮点数的值(add1.cpp)网络安全程序设计(9)n实例2:编写基于UDP服务的守护程序程序名称:log.h、dgramisrvr.cpp和dgramcln.cpp功能描述:记录服务日志运行

15、程序:n分别编译dgramisrvr.cpp和dgramcln.cpp为dgramisrvr和dgramclnn#cp dgramisrvr/tmpn创建/etc/xinetd.d/dgramisrvr文件,配置守护进程n重新运行:/etc/rc.d/init.d/xinetd restart网络安全程序设计(10)n客户端运行:$./dgramcln 202.113.29.19 127.0.0.1 Enter format string:%A%B%D Rusult from 202.113.29.19 port 9090:Tuesday June 10/06/03$tail f/tmp/dg

16、ramisrvr.logn 改变/etc/xinetd.d/dgramisrvr文件,设置only_from,/etc/rc.d/init.d/xinetd restart 重新执行./dgramcln 202.113.29.19 127.0.0.1实用例程(1)n实例1:编写一个简单的web服务器程序程序名称:web80.c功能描述:服务器后台运行web80,向请求的客户端发送一个响应,显示的进程标识与web80的进程标识一致用到函数:FILE*fdopen(int fd,char*mode);/打开描述符指定的文件 int dup(int oldfd);/复制文件描述符运行程序:在IE地址

17、栏:http:/202.113.29.19:8000,显示:web80 Worked!From PID 1079 Tue jun 10 09:20:00 2003实用例程(2)nHTTP协议基础nHTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据(参考RFC 2616)nHTTP协议采用了请求/响应模型n客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容。n服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内

18、容。n见下例中的/tmp/cnc.txt内容实用例程(3)n实例2:通过浏览器来控制远程UNIX系统程序名称:cnc.c功能描述:通过浏览器来控制远程UNIX系统。能够执行所有的非交互式命令。比如,ls、more、man等命令用到函数:(1)#include char*strstr(char*str,char*substr);找到子串则返回指向子串起始指针,否则返回NULL (2)#include int system(char*string);执行一个sh命令实用例程(4)运行程序:服务器$./cnc&客户IE中:http:/202.113.29.19:6789/ls http:/202.1

19、13.29.19:6789/cat/etc/passwd 观察:/tmp/cnc.txt和/tmp/result.txtn实例3:远程shell程序名称:r_sh_server.c和r_sh_client.c功能描述:在本地可以运行远程主机上的sh命令并在本地主机显示或写入远程主机上的文件实用例程(5)n实例4:代理服务器程序名称:proxy.c功能描述:使用这个proxy登录其它主机的服务端口.这段代码虽然只是描述了最简单的proxy操作,但它不仅清晰地描述了客户机/服务器系统的概念,而且几乎包括了Linux网络编程的方方面面运行程序:服务器:202.113.29.19上$./proxy 7

20、000 202.113.29.8 23或202.113.29.19上$./proxy 7000 202.113.29.8 telnet客户:windows下运行telnet 202.113.29.19 7000 结果登录到29.8上实用例程(6)n几个copy函数nbcopy(void*src,void*dest,size_t n);nstrcpy(char*dest,char*src);nstrncpy(char*dest,char*src,size_t n);实用例程(7)n实例5:TCP shell后门程序名称:sock_shell.c功能描述:在本地可以运行远程主机上的sh命令并在本地显示运行程序:服务器端:$./sock_shell 客户端:windows下$telnet 202.113.29.19 15210

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁