网络配置文档.docx
《网络配置文档.docx》由会员分享,可在线阅读,更多相关《网络配置文档.docx(26页珍藏版)》请在冰豆网上搜索。
网络配置文档
网络系统设计与管理综合作业报告
姓名:
宋荣权
学号:
084173324
班级:
08计算机
(2)班
完成日期:
2011-12-26
Ubuntu上通过mono、
nginx部署ASP网站
目录
1项目背景3
2项目描述4
3需求分析4
4服务器简介5
4.1LinuxUbuntu服务器版操作系统5
4.2nginx和apache对比5
4.3mono介绍6
5服务器安装配置6
5.1软件安装6
5.2配置文件修改7
6.服务器安全管理办法11
6.1服务器日志管理11
6.2主机访问控制12
6.3用户访问控制13
6.4开启自动索引功能13
6.5安全配置拓展补充14
15、NginxSSL配置23
7故障排查26
1项目背景
当今社会,计算机和网络对社会的影响已经迅速扩大,开始影响人们生活的许多方面。
特别是进入90年代以来,多媒体技术和网络技术的飞速发展正在以惊人的速度变革着我们的学习方式、工作方式、交往方式和生活方式。
“科学技术是第一生产力,是最先进的生产力”。
今天,信息技术已经成为科学技术的前沿,已经没有人能够否认信息技术的发展将会或者已经引起了人类社会全面和深刻的变革,使人类社会由工业社会迈向信息社会。
在信息技术已引起了全面而深刻的社会变革的同时,信息时代的到来也迫切要求我们的教育进行改革,同时也对教育提出了新的要求。
据联合国教科文组织的统计:
人类近30年来所积累的科学知识,占有史以来积累的科学知识总量的90%,而在此之前的几千年中所积累的科学知识只占10%。
可见,知识总量在以爆炸式的速度急剧增长,知识更新越来越快。
教育如何面对迅速增长的知识?
如何面对我们今天的信息时代?
企业Intranet内部网络系统是一个集计算机技术、网络通讯技术、数据库管理技术为一体的大型网络系统。
它以管理信息为主体,连接生产、经营、维护、运营子系统,是一个面向企业日常业务、立足生产、面向社会服务,负数练到决策的计算机信息网络系统。
针对企业当前的信息技术应用情况,计算机网络建设的策略应以饮用促发展的网络发展思路,不是马上投入建立一个大规模的全面地信息系统,而是以实际应用带动网络系统的发展,反过来再促进应用的发展,形成良性循环.
2项目描述
中国精英信息科技集团公司,以后简称集团公司,是北京市海淀区高科技重点企业之一,是一个集科研、生产、维修于一体的大型科技企业。
集团公司在全国各个省都有一个分公司,进行公司的扩展。
集团公司因为业务的需要和信息化建设的需要,需要对集团公司及各个分公司的网络进行改建、扩建。
集团公司网络的扩充功能包括:
WEB服务器(WEB)
要求:
linux并且兼容发布ASP网站
3需求分析
现代大型企业网络应具备更智能的网络管理解决方案,以解决网络规模日益扩大,维护工作更加复杂的需要;当前的网络已经发展成为“以应用为中心”的信息基础平台,网络管理能力的要求已经上升到了业务层次,传统的网络设备的智能已经不能有效支持网络管理的需求的发展。
比如,网络调试期间最小号人力和物力的线缆故障定位工作,网络运行期间对不同的用户灵活的服务策略部署、访问权限控制、网络日志审计和病毒控制能力等方面的管理工作,犹豫受网络设备功能本身的限制,都还属于费时,费力,甚至不可能的任务,所以现代的大型企业网络迫切需要网络设备具备支持“以应用为中心”的智能网络运营维护能力,并能有有一套智能化的管理软件,将网络人缘从繁重的工作中解脱出来。
综上所述,企业网络系统应是支持办公自动化,供应链管理,ERP以及应用系统运行的基础设施。
应具有以下特征:
◆采用先进通讯技术完成企业网建设,实现各分公司的信息化;
◆在整个企业集团所有部门实现办公自动化,提高工作效率和管理服务水平;
◆在整个集团企业内实现资源共享、产品信息共享、实时新闻发布;
◆在整个企业内部实现财务电算化;
◆在整个企业集团内实现集中式的供应链管理系统和客户服务管理系统
4服务器简介
4.1LinuxUbuntu服务器版操作系统
立在众所周知稳定的Debian上,它的强劲的服务器安装—具有浓厚的传统,性能可靠和可以预见的变化。
集成安全平台
简单管理:
从一个系统上管理所有的用户。
安装新软件,修改配置,甚至在服务器上升级到一个新的版本,所有的客户端都可以升级到最新。
并且为所有的客户端只有一个备份。
全自动安装和设置:
安装一个瘦客户机服务器和乱安装一个单一的桌面系统一样,非常容易,而一旦安装完毕,新的客户端就可以在服务器上添加任何额外的管理。
通过资源共享,低的CTO:
通用高性能的桌面工作站大部分时间都在空闲而支付了贵的价格。
使用高性能的服务器和低成本的瘦客户端,你可以得到伟大的业绩和节省资金。
需要更高的业绩?
马上升级服务器,这样所有的客户端都将得到好处。
快速失败恢复:
如果一个客户端系统失败,简单的交换一个新的就可以继续工作。
不需要配置,并且所有的用户数据和设置都完好无损。
本地附加装置:
用户可以访问打印机,相机,iPods,USB存储设备和其它直接连接到瘦客户端的设备。
支持的架构
Ubuntu服务器版支持x86,AMD64和UltraSPARCT1架构。
4.2nginx和apache对比
在高并发连接的情况下,Nginx是Apache服务器不错的替代品。
Nginx同时也可以作为7层负载均衡服务器来使用。
测试结果显示,Nginx0.8.46+PHP5.2.14(FastCGI)可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
压力测试结果显示:
4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。
我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。
而同样Nginx0.8.46+PHP5.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万并发连接下,访问Nginx0.8.46+PHP5.2.14(FastCGI)服务器的PHP程序,仍然速度飞快。
下图为Nginx的状态监控页面,显示的活动连接数为28457
4.3mono介绍
Mono是一个由Novell公司(由Ximian发起,并由Migueldelcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。
它包含了一个C#语言的编译器,一个CLR的运行时,和一组类库,并实现了ADONET和ASPNET。
能够使得开发人员在Linux用C#开发程序。
)主持的项目.该项目的目标是创建一系列符合标准ECMA(Ecma-334和Ecma-335)的.Net工具,包括C#编译器和共同语言(CL即CommonLanguage)执行平台(Platform).与微软的.Net不同,Mono项目不仅可以运行于Windows系统内,还可以运行于Linux,FreeBSD,Unix,MacOSX和Solaris.
5服务器安装配置
5.1软件安装
如果是第一次安装ubunt
sudopasswordroot
提示你输入密码
确认密码注销后以root身份登录很多操作非root权限无法操作
进入你的软件存储目录,建议路径纯英文路径
请保持系统一直处于有网络的状态
sudoapt-getupgrade
升级更新软件包
sudoapt-getinstallhttpd
查询web服务发布软件
sudoapt-getinstallngnix
安装ngnix
Sudoapt-getinstallgcc
安装C++编译器
wget
下载mono可拓展的ASP底层
tarjvxfmono-2.10.tar.bz2
解压mono
./configure--prefix=/usr/local
如果命令报错 试试./configure
make
sudomakeinstall
安装
sudoapt-getinstallsubversion
svncohttp:
//mono-soc-fastcgi-mono-server
cdfastcgi-mono-server/
./autogen.sh
make
sudomakeinstall
安装过程到此结束
5.2配置文件修改
配置Nginx
首先编辑nginx.conf文件:
gedit/etc/nginx/nginx.conf
其他的节点不用动在http节点里面添加
server{
listen 80;
server_name localhost;
location/{
root /home/root/Projects;#项目根目录(可改成自己的目录具体目录自己填写)
#index index.htmlindex.htm;
fastcgi_pass 127.0.0.1:
8000;#此处端口要与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.htmlindex.htm;
fastcgi_pass 127.0.0.1:
8000;#此处端口要与fastcgi映射的端口一致
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include/etc/nginx/fastcgi_params;
}
复制到default文件下的server节点下.这点很重要!
/etc/init.d/nginxstart
注意/etc/nginx/sites-available/default文件里屏蔽location/imgaes这一节点
然后启动mono-fastCGI服务sudofastcgi-mono-server2/socket=tcp:
8000/address=127.0.0.1
/applications=/:
/home/root/Projects
然后将你的网页加载到项目根目录就可以访问了
有默认首页时
无默认首页时
6.服务器安全管理办法
6.1服务器日志管理
1、创建日志目录
nginx的默认日志目录所在硬盘空间可能比较小,所以根据硬盘的空间状况创建日志目录
例如:
mkdir/backup/nginx_logs
2、修改nginx配置文件
配置nginx的日志目录,指向你刚创建的目录
在配置文件中写
根据时间情况写在server或者http或者location块,本例写在server块
access_log/backup/nginx_logs/access.logcombined;
上面的combined为nginx的默认日志格式,如果不这么写就需要重新定义,
本例中直接写了combined,这种格式awstats也认。
3、使用logrotate管理
logrotate系统自带,并且会自动定时在凌晨4:
02份启动
配置文件如下:
/backup/nginx_logs{
daily
missingok
rotate7
nocompress
prerotate
/usr/local/awstats/wwwwww/cgi-bin/awstats.pl-update-config=
endscript
postrotate
if[-f/usr/local/nginx/logs/nginx.pid];then
kill-USR1`cat/usr/local/nginx/logs/nginx.pid`
fi
endscript
}
每次rotate之前,会先调用awstats产生统计数据,rotate之后会给nginx发信号将日志写人新的空白日志文件
logrotate会用到/etc/logrotate.conf配置文件和/etc/logrotate.d中所有的配置文件,所以无需改动logrotate配置,只需往/etc/logrotate.d加入上面的配置文件即可
写配置文件必须小心,否则debug很麻烦,比如你把配置文件中的nocompress去掉,以为会默认使用/etc/logrotate.conf中的compress,实际上不是这样的,如果/etc/logrotate.d中的配置文件错误,logrotate不会用/etc/logrotate.conf替代,而且/var/log/messages和系统的发的mail中毫无出错信息,除非配置文件有明显的错误,才会/var/log/messages和系统的发的mail反应
6.2主机访问控制
[www@www~]#grep-A3-B3'192.168.50.40'/usr/local/nginx/conf/nginx.conf
location/{
wwwhtml;
indexindex.htmlindex.htm;
allow192.168.50.40;//支持整个网段,192.168.50.0/24这样的语法
denyall;
}
[www@www~]#/usr/local/nginx/sbin/nginx-t
theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok
configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful
[www@www~]#tail-f/usr/local/nginx/logs/access.log
192.168.50.40--[21/Jun/2010:
15:
42:
58+0800]"GET/HTTP/1.1"3040"-""Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1;Trident/4.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;360SE)"
[www@www~]#tail-f/usr/local/nginx/logs/error.log
2010/06/2115:
43:
53[error]21164#0:
*15accessforbiddenbyrule,client:
192.168.50.27,server:
localhost,request:
"GET/HTTP/1.1",host:
"192.168.50.3"
6.3用户访问控制
[www@www~]#grep-A5-B5'auth'/usr/local/nginx/conf/nginx.conf
location/{
wwwhtml;
indexindex.htmlindex.htm;
allow192.168.50.0/24;
denyall;
auth_basic"test";
auth_basic_user_file/usr/local/nginx/conf/.htpasswd;
}
error_page404/404.html;
[www@www~]#/usr/local/apache2.2.15/bin/htpasswd-cd/usr/local/nginx/conf/.htpasswdyang
Newpassword:
Re-typenewpassword:
Addingpasswordforuseryang
6.4开启自动索引功能
[www@www~]#grep-A3-B3'autoindex'/usr/local/nginx/conf/nginx.conf
location/{
wwwhtml;
autoindexon;
indexindex.htmlindex.htm;
allow192.168.50.0/24;
denyall;
6.5安全配置拓展补充
NginxWeb服务器额外安全配置
本资料的主要目是介绍如何提高运行在Linux或UNIX类操作系统上的NginxWeb服务器的安全性提供管理员进行额外拓展。
Nginx默认配置文件和默认端口
◆/usr/local/nginx/conf/–Nginx服务器配置目录,/usr/local/nginx/conf/nginx.conf是主配置文件
◆/usr/local/nginx/html/–默认文档位置
◆/usr/local/nginx/logs/–默认日志文件位置
◆NginxHTTP默认端口:
TCP80
◆NginxHTTPS默认端口:
TCP443
可以使用下面的命令测试Nginx的配置是否正确:
#/usr/local/nginx/sbin/nginx–t
输出示例:
theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok
configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful
要让修改后的配置生效,执行下面的命令:
#/usr/local/nginx/sbin/nginx-sreload
如果要停止服务器,运行:
#/usr/local/nginx/sbin/nginx-sstop
6.5.1开启SELinux
SELinux(安全增强的Linux)是一个Linux内核功能,它提供了一个机制支持访问控制安全策略,提供了巨大的安全保护能力,它可以防止大多数系统www级攻击,请参考“如何在CentOS/RedHat系统上开启SELinux”(http:
//www.cyberciti.biz/faq/rhel-fedora-redhat-selinux-protection/)。
运行getsebool–a命令查看SELinux设置项:
getsebool-a|less
getsebool-a|grepoff
getsebool-a|grepo
然后使用setsebool命令开启需要的配置项,注意:
开启SELinux后,在RHEL或CentOS上通常会增加2-8%的系统开销。
2、通过mount参数提供最低权限
为你的/html/php文件创建独立的分区,例如,创建一个/dev/sda5分区挂载在/ngnix上,确定/ngnix使用了noexec,nodev和nosetuid权限挂载。
下面是我的一个挂载实例:
LABEL=/nginx
/nginx
ext3
defaults,nosuid,noexec,nodev12
注意你需要使用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_syncookies=1
#开启并记录欺骗,源路由和重定向包
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.default.log_martians=1
#处理无源路由的包
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
#开启反向路径过滤
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
#确保无人能修改路由表
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
#不充当路由器
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
#开启execshild
kernel.exec-shield=1
kernel.randomize_va_space=1
#IP