1、网络配置文档网络系统设计与管理综合作业报告姓 名 : 宋荣权 学 号 : 084173324 班 级 : 08计算机(2)班 完成日期: 2011-12-26 Ubuntu 上通过mono、nginx部署ASP网站目录1 项目背景 32 项目描述 43 需求分析 44 服务器简介 54.1 Linux Ubuntu服务器版操作系统 54.2 nginx和apache对比 54.3 mono介绍 65 服务器安装配置 65.1 软件安装 65.2 配置文件修改 76.服务器安全管理办法 116.1服务器日志管理 116.2主机访问控制 126.3用户访问控制 136.4开启自动索引功能 136.
2、5 安全配置拓展补充 1415、Nginx SSL配置 237 故障排查 261 项目背景当今社会,计算机和网络对社会的影响已经迅速扩大,开始影响人们生活的许多方面。特别是进入90年代以来,多媒体技术和网络技术的飞速发展正在以惊人的速度变革着我们的学习方式、工作方式、交往方式和生活方式。“科学技术是第一生产力,是最先进的生产力”。今天,信息技术已经成为科学技术的前沿,已经没有人能够否认信息技术的发展将会或者已经引起了人类社会全面和深刻的变革,使人类社会由工业社会迈向信息社会。在信息技术已引起了全面而深刻的社会变革的同时,信息时代的到来也迫切要求我们的教育进行改革,同时也对教育提出了新的要求。据
3、联合国教科文组织的统计:人类近30年来所积累的科学知识,占有史以来积累的科学知识总量的90%,而在此之前的几千年中所积累的科学知识只占10。可见,知识总量在以爆炸式的速度急剧增长,知识更新越来越快。教育如何面对迅速增长的知识?如何面对我们今天的信息时代? 企业Intranet内部网络系统是一个集计算机技术、网络通讯技术、数据库管理技术为一体的大型网络系统。它以管理信息为主体,连接生产、经营、维护、运营子系统,是一个面向企业日常业务、立足生产、面向社会服务,负数练到决策的计算机信息网络系统。 针对企业当前的信息技术应用情况,计算机网络建设的策略应以饮用促发展的网络发展思路,不是马上投入建立一个大
4、规模的全面地信息系统,而是以实际应用带动网络系统的发展,反过来再促进应用的发展,形成良性循环.2 项目描述 中国精英信息科技集团公司,以后简称集团公司,是北京市海淀区高科技重点企业之一,是一个集科研、生产、维修于一体的大型科技企业。集团公司在全国各个省都有一个分公司,进行公司的扩展。集团公司因为业务的需要和信息化建设的需要,需要对集团公司及各个分公司的网络进行改建、扩建。集团公司网络的扩充功能包括:WEB服务器(WEB)要求:linux 并且兼容发布ASP网站3 需求分析 现代大型企业网络应具备更智能的网络管理解决方案,以解决网络规模日益扩大,维护工作更加复杂的需要;当前的网络已经发展成为“以
5、应用为中心”的信息基础平台,网络管理能力的要求已经上升到了业务层次,传统的网络设备的智能已经不能有效支持网络管理的需求的发展。比如,网络调试期间最小号人力和物力的线缆故障定位工作,网络运行期间对不同的用户灵活的服务策略部署、访问权限控制、网络日志审计和病毒控制能力等方面的管理工作,犹豫受网络设备功能本身的限制,都还属于费时,费力,甚至不可能的任务,所以现代的大型企业网络迫切需要网络设备具备支持“以应用为中心”的智能网络运营维护能力,并能有有一套智能化的管理软件,将网络人缘从繁重的工作中解脱出来。综上所述,企业网络系统应是支持办公自动化,供应链管理,ERP以及应用系统运行的基础设施。应具有以下特
6、征: 采用先进通讯技术完成企业网建设,实现各分公司的信息化; 在整个企业集团所有部门实现办公自动化,提高工作效率和管理服务水平; 在整个集团企业内实现资源共享、产品信息共享、实时新闻发布; 在整个企业内部实现财务电算化; 在整个企业集团内实现集中式的供应链管理系统和客户服务管理系统4 服务器简介4.1 Linux Ubuntu服务器版操作系统立在众所周知稳定的 Debian 上, 它的强劲的服务器安装 具有浓厚的传统, 性能可靠和可以预见的变化。集成安全平台 简单管理:从一个系统上管理所有的用户。 安装新软件, 修改配置, 甚至在服务器上升级到一个新的版本, 所有的客户端都可以升级到最新。 并
7、且为所有的客户端只有一个备份。 全自动安装和设置: 安装一个瘦客户机服务器和乱安装一个单一的桌面系统一样,非常容易,而一旦安装完毕, 新的客户端就可以在服务器上添加任何额外的管理。 通过资源共享,低的 CTO: 通用高性能的桌面工作站大部分时间都在空闲而支付了贵的价格。 使用高性能的服务器和低成本的瘦客户端, 你可以得到伟大的业绩和节省资金。 需要更高的业绩? 马上升级服务器,这样所有的客户端都将得到好处。 快速失败恢复: 如果一个客户端系统失败, 简单的交换一个新的就可以继续工作。 不需要配置, 并且所有的用户数据和设置都完好无损。 本地附加装置: 用户可以访问打印机, 相机, iPods,
8、 USB存储设备和其它直接连接到瘦客户端的设备。 支持的架构 Ubuntu 服务器版支持 x86, AMD64 和 UltraSPARC T1 架构。4.2 nginx和apache对比 在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。测试结果显示,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。压力测试结果显示:4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为
9、系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。而同样Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。在3万并
10、发连接下,访问Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为284574.3 mono介绍 Mono是一个由Novell公司(由Ximian发起,并由Miguel de lcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器,一个CLR的运行时,和一组类库,并实现了 ADO NET和ASP NET。能够使得开发人员在Linux用C#开发程序。)主持的项目.该项目的目标是创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.Ne
11、t 工具, 包括C #编译器和共同语言(CL 即 Common Language)执行平台(Platform).与微软的.Net不同, Mono项目不仅可以运行于Windows系统内,还可以运行于Linux, FreeBSD, Unix, Mac OS X和Solaris. 5 服务器安装配置5.1 软件安装如果是第一次安装ubuntsudo password root提示你输入密码确认密码 注销后 以root身份登录 很多操作非root权限无法操作进入你的软件存储目录,建议路径纯英文路径请保持系统一直处于有网络的状态sudo apt-get upgrade 升级更新软件包sudo apt-g
12、et install httpd查询web服务发布软件sudo apt-get install ngnix安装ngnixSudo apt-get install gcc安装编译器wget 下载mono可拓展的ASP底层tar jvxf mono-2.10.tar.bz2解压 mono./configure -prefix=/usr/local如果命令报错 试试./configuremakesudo make install安装sudo apt-get install subversionsvn co http:/mono-soc- fastcgi-mono-servercd fastcgi-m
13、ono-server/./autogen.shmakesudo make install安装过程到此结束5.2 配置文件修改配置 Nginx首先编辑nginx.conf 文件: gedit /etc/nginx/nginx.conf其他的节点不用动 在http 节点里面添加server listen 80; server_name localhost; location / root /home/root/Projects;#项目根目录(可改成自己的目录 具体目录自己填写) #index index.html index.htm; fastcgi_pass 127.0.0.1:8000; #此
14、处端口要与fastcgi映射的端口一致 fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include /etc/nginx/fastcgi_params; 接着编辑sites-available目录下的default文件:gedit /etc/nginx/sites-available/default。将以下内容 location / root /home/root/Projects;#项目根目录 #index index.html index.htm; fastcgi_pass 127.0.0.1:800
15、0; #此处端口要与fastcgi映射的端口一致 fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include /etc/nginx/fastcgi_params; 复制到default文件下的server节点下.这点很重要!/etc/init.d/nginx start注意/etc/nginx/sites-available/default 文件里 屏蔽location /imgaes这一节点然后启动mono-fastCGI服务 sudo fastcgi-mono-server2 /socket=tcp:
16、8000 /address=127.0.0.1/applications=/:/home/root/Projects然后将你的网页加载到项目根目录 就可以访问了有默认首页时无默认首页时6.服务器安全管理办法6.1服务器日志管理1、创建日志目录nginx 的默认日志目录所在硬盘空间可能比较小,所以根据硬盘的空间状况创建日志目录例如:mkdir /backup/nginx_logs2、修改nginx配置文件配置 nginx 的日志目录,指向你刚创建的目录在配置文件中写根据时间情况写在 server 或者 http 或者 location 块 , 本例写在 server 块access_log /b
17、ackup/nginx_logs/access.log combined;上面的combined为 nginx 的默认日志格式,如果不这么写就需要重新定义,本例中直接写了combined,这种格式 awstats 也认。3、使用logrotate管理logrotate 系统自带,并且会自动定时在凌晨 4:02 份启动配置文件如下:/backup/nginx_logs dailymissingokrotate 7nocompressprerotate/usr/local/awstats/wwwwww/cgi-bin/awstats.pl -update -config=endscriptpost
18、rotateif -f /usr/local/nginx/logs/nginx.pid ; thenkill -USR1 cat /usr/local/nginx/logs/nginx.pidfiendscript每次 rotate 之前,会先调用 awstats 产生统计数据, rotate 之后会给 nginx 发信号将日志写人新的空白日志文件logrotate 会用到/etc/logrotate.conf配置文件和/etc/logrotate.d中所有的配置文件,所以无需改动 logrotate 配置,只需往/etc/logrotate.d加入上面的配置文件即可写配置文件必须小心,否则
19、debug 很麻烦 , 比如你把配置文件中的nocompress去掉,以为会默认使用/etc/logrotate.conf中的 compress, 实际上不是这样的,如果/etc/logrotate.d中的配置文件错误, logrotate 不会用/etc/logrotate.conf替代,而且 /var/log/messages 和系统的发的 mail 中毫无出错信息,除非配置文件有明显的错误,才会 /var/log/messages 和系统的发的 mail 反应6.2主机访问控制wwwwww# grep -A 3 -B 3 192.168.50.40 /usr/local/nginx/co
20、nf/nginx.conflocation / www html;index index.html index.htm;allow 192.168.50.40; /支持整个网段,192.168.50.0/24这样的语法deny all;wwwwww # /usr/local/nginx/sbin/nginx -tthe configuration file /usr/local/nginx/conf/nginx.conf syntax is okconfiguration file /usr/local/nginx/conf/nginx.conf test is successfulwwwww
21、w # tail -f /usr/local/nginx/logs/access.log192.168.50.40 - - 21/Jun/2010:15:42:58 +0800 GET / HTTP/1.1 304 0 - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; 360SE)wwwwww # tail -f /usr/local/ng
22、inx/logs/error.log 2010/06/21 15:43:53 error 21164#0: *15 access forbidden by rule, client: 192.168.50.27, server: localhost, request: GET / HTTP/1.1, host: 192.168.50.36.3用户访问控制wwwwww # grep -A 5 -B 5 auth /usr/local/nginx/conf/nginx.conflocation / www html;index index.html index.htm;allow 192.168.
23、50.0/24;deny all;auth_basic test;auth_basic_user_file /usr/local/nginx/conf/.htpasswd;error_page 404 /404.html;wwwwww # /usr/local/apache2.2.15/bin/htpasswd -cd /usr/local/nginx/conf/.htpasswd yangNew password: Re-type new password: Adding password for user yang6.4开启自动索引功能 wwwwww # grep -A 3 -B 3 au
24、toindex /usr/local/nginx/conf/nginx.conflocation / www html;autoindex on;index index.html index.htm;allow 192.168.50.0/24;deny all;6.5 安全配置拓展补充 Nginx Web服务器额外安全配置本资料的主要目是介绍如何提高运行在Linux或UNIX类操作系统上的Nginx Web服务器的安全性提供管理员进行额外拓展。Nginx默认配置文件和默认端口 /usr/local/nginx/conf/ Nginx服务器配置目录,/usr/local/nginx/conf/n
25、ginx.conf 是主配置文件 /usr/local/nginx/html/ 默认文档位置 /usr/local/nginx/logs/ 默认日志文件位置 Nginx HTTP默认端口:TCP 80 Nginx HTTPS默认端口:TCP 443可以使用下面的命令测试Nginx的配置是否正确: # /usr/local/nginx/sbin/nginx t输出示例:the configuration file /usr/local/nginx/conf/nginx.conf syntax is okconfiguration file /usr/local/nginx/conf/nginx.
26、conf test is successful要让修改后的配置生效,执行下面的命令:# /usr/local/nginx/sbin/nginx -s reload如果要停止服务器,运行:# /usr/local/nginx/sbin/nginx -s stop6.5.1开启SELinuxSELinux(安全增强的Linux)是一个Linux内核功能,它提供了一个机制支持访问控制安全策略,提供了巨大的安全保护能力,它可以防止大多数系统www级攻击,请参考“如何在CentOS/Red Hat系统上开启SELinux”(http:/www.cyberciti.biz/faq/rhel-fedora-
27、redhat-selinux-protection/)。运行getsebool a命令查看SELinux设置项:getsebool -a | lessgetsebool -a | grep offgetsebool -a | grep o然后使用setsebool命令开启需要的配置项,注意:开启SELinux后,在RHEL或CentOS上通常会增加2-8%的系统开销。2、通过mount参数提供最低权限为你的/html/php文件创建独立的分区,例如,创建一个/dev/sda5分区挂载在/ngnix上,确定/ngnix使用了noexec,nodev和nosetuid权限挂载。下面是我的一个挂载实
28、例:LABEL=/nginx /nginx ext3 defaults,nosuid,noexec,nodev 1 2注意你需要使用fdisk和mkfs.ext3命令创建一个新分区。3、通过/etc/sysctl.conf加固可以通过/etc/sysctl.conf控制和配置Linux内核及网络设置。另外,请参考:# 避免放大攻击net.ipv4.icmp_echo_ignore_broadcasts = 1# 开启恶意icmp错误消息保护net.ipv4.icmp_ignore_bogus_error_responses = 1# 开启SYN洪水攻击保护net.ipv4.tcp_syncoo
29、kies = 1# 开启并记录欺骗,源路由和重定向包net.ipv4.conf.all.log_martians = 1net.ipv4.conf.default.log_martians = 1# 处理无源路由的包net.ipv4.conf.all.accept_source_route = 0net.ipv4.conf.default.accept_source_route = 0# 开启反向路径过滤net.ipv4.conf.all.rp_filter = 1net.ipv4.conf.default.rp_filter = 1# 确保无人能修改路由表net.ipv4.conf.all.
30、accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0net.ipv4.conf.all.secure_redirects = 0net.ipv4.conf.default.secure_redirects = 0# 不充当路由器net.ipv4.ip_forward = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0# 开启execshildkernel.exec-shield = 1kernel.randomize_va_space = 1# IP
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1