十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:
创新互联建站长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为吉木乃企业提供专业的做网站、网站建设,吉木乃网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
1. 至少有一个误删除之前的数据库完全备份。
2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。
针对这两个前提条件,会有三种情况:
情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。
a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY
b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE
c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY
情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。
情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”。
我现在面临的是第二种情况,需要找第三方工具。
开始找的是Log Explorer for SQL Server,不支持SQL Server 2008。
后来找的是SQL Log Rescue,也不支持SQL Server 2008。
接着找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要购买,Demo版并没有数据恢复功能。
最终在officerecovery.com上找到Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。
下面分享一下用Recovery for SQL Server进行恢复的操作步骤:
1. 运行Recovery for SQL Server
2. 点击菜单中的 File Recover,选择要恢复的数据库的数据文件(.mdf)
3. Next Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。
4. Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。
5. Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。
6. 点击Start,开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。
7. Next,选择被恢复数据存放的目标数据库。
8. Next, 选择 Import availiable data from both database and log files
9. Next, Next, 然后就完成数据的恢复!
哥们你是什么操作系统啊。如果是windows的安全,一般需要做:
1、更新系统补丁
更新补丁是安全加固最重要的步骤。
2、禁用不需要的服务
以下服务必须禁用:Server、Workstation、Print Spooler、Remote Registry、Routing and Remote Access、TCP/IP NetBIOS Helper、Computer Browser
3、系统权限设置
由于系统权限设置的地方非常多,我们只能公布常用的部分。
部分文件被系统隐藏了,不便于设置,因此我们先将所有文件显示出来。
·更改系统盘所有者为Administrators
·所有盘根目录只保留Administrators和SYSTEM权限。
·系统盘加上Users“读取权限”,仅当前目录
·C:\WINDOWS、C:\WINDOWS\system32、C:\Windows\SysWOW64 只保留Administrators和SYSTEM,以及User读和执行
·C:\Program Files 、C:\Program Files (x86) 只保留Administrators和SYSTEM
·C:\Program Files\Common Files 、C:\Program Files (x86)\Common Files 只保留Administrators和SYSTEM,以及User读和执行
·C:\ProgramData 只保留Administrators和SYSTEM,以及User读和执行
·C:\Users 只保留Administrators和SYSTEM
·C:\inetpub 只保留Administrators和SYSTEM
·C:\inetpub\custerr 只保留Administrators和SYSTEM,以及User读
·C:\inetpub\temp 只保留Administrators和SYSTEM,以及User读写删除和IIS_IUSRS读写删除
·C:\Windows\Temp 只保留Administrators和SYSTEM,以及User读写删除和IIS_IUSRS读写删除
·C:\Windows\tracing 只保留Administrators和SYSTEM,以及User读和network service读
·C:\Windows\Vss 只保留Administrators和SYSTEM,以及User读和network service读写删除
·C:\ProgramData\Microsoft\DeviceSync 只保留Administrators和SYSTEM,以及User读
·C:\WINDOWS\下的部分exe软件只保留Administrators和SYSTEM,如regedit.exe、regedt32.exe、cmd.exe、net.exe、net1.exe、netstat.exe、at.exe、attrib.exe、cacls.exe、format.com、activeds.tlb、shell32.dll、wshom.ocx
注意:如果您安装了SQL Server软件,还需要给系统盘上SQL Server相关目录加上NT SERVICE\MSSQLSERVER的权限。
如果设置后网站无法访问,给网站目录加上Users的读写删除权限试试。
4、卸载危险组件
regsvr32 /u %SystemRoot%\system32\shell32.dll
regsvr32 /u %SystemRoot%\system32\wshom.ocx
5、开启防火墙
建议只开放需要的端口,如:80、3389
注意:开启防火墙前必须先确认当前远程端口已经在放行规则
我当前用的33699端口,因此防火墙需要加上33699端口
6、更改远程端口
有很多暴力破解工具专门针对远程登录,更改远程端口能防范扫描。
更改端口后注意到防火墙添加新端口放行规则,推荐使用我司免费软件更改,会自动添加好规则。
7、软件降权设置
常用的Serv-U、SQL Server、MySQL、Apache、Tomcat等都存在安全隐患。
由于设置方法各不相同,具体请参考我站对应的课程。
8、安装安全辅助软件
没有绝对的安全,只有尽量提升安全,人工+软件搭配,才能最大限度提升安全。
护卫神·入侵防护系统是一套在黑客入侵的每一个环节设置关卡的防御软件,通过远程监控、用户监控、进程监控、文件防篡改等模块,将一切不速之客拒之门外。
先祝贺你选择学习Linux,你可能即将踏上Linux的工作之旅,出发之前,让我带你来看一看关于Linux和Linux运维的一切。来源于——公众号:马哥linux运维
Linux因其高效率、易于裁剪、应用广等优势,成为了当今中高端服务器的主要操作系统,并且处于一个不可替代的地位。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。随着Linux在中国市场迅猛发展,国内Linux人才缺口逐渐凸显。Linux人才招聘也成了当前最热门的招聘之一。
首先linux是一个非常非常大的概念。想全部吃透是不可能的。理想的说,搞懂linux,就可以做所有工作。个人更倾向于说想做什么样工作,需要学linux的哪部分。
按个人经验介绍下常见的linux有哪些领域,并对应到什么工作。
1)linux应用。这部分严格来说不能算是linux,只是跑在linux上的应用,比如web,网络,IT等,职业包括系统研发,后台开发,服务器性能优化,运维等;
2)linux定制。这部分涉及linux版本的用户包较多,内核会有一些涉及,主要各种商业linux的订制,服务等。比如redhat之类,不少是外国公司,国内大多招现场支持等。
3)linux内核开发。这部分主要是linux内核驱动的开发。几乎全部是编程工作。主要是芯片公司,以及使用芯片的产品开发公司。前者如intel,marvell,后者如中兴华为。
4)android衍生品。因为android包括慢慢火爆的tizen都用的linux内核,所以理由同3。所以手机芯片公司和手机开发公司也是linux开发者的雇主之一。比如高通,TI等;
一、Linux运维的主要工作内容
Linux运维作为众多工作中需求人数最多,薪资待遇最高的岗位,本文重点介绍Linux运维的职业,本文内容由专门研究Linux运维学习和职业发展的机构马哥教育和爱好者们联合撰写。
互联网Linux运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够7×24小时为用户提供高质量的服务。运维的职责覆盖了产品从设计到发布、运行维护、变更升级及至下线的生命周期。
产品的整个生命周期里运维的职责重要而广泛,但运维工程师们的职责不仅限于这部分工作,还需要总结工作中遇到的问题,抽取出相关的技术方向、研发相关的工具和平台以支持/优化业务的发展并提高运维的效率,相关技术工作主要包括:
服务监控技术:包括监控平台的研发、应用,服务监控准确性、实时性、全面性的保障
服务故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性
服务容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作
服务性能优化:从各个方向,包括网络优化、操作系统优化、应用优化、客户端优化等,提高服务的性能和响应速度,改善用户体验
服务全局流量调度:接入服务的流量,根据容量和服务状态在各个机房间分配流量
服务任务调度:服务的各种定时/非定时任务的调度触发及状态监控
服务安全保障:包括服务的访问安全、防攻击、权限控制等
数据传输技术:包括p2p等各类传输技术的研发应用,也远距离大数据传输等问题的解决
服务自动发布部署:部署平台/工具的研发,及平台/工具的使用,做到安全、高效的发布服务
服务集群管理:包括服务的服务器管理、大规模集群管理等
服务成本优化:尽可能降低服务运行使用的资源,降低服务运行成本
数据库管理(DBA):通过设计、开发和管理高性能数据库集群,使数据库服务更稳定、更高效、更易于管理。
平台化的开发:类docker等平台的开发管理,及服务接入技术
分布式存储平台的开发优化与接入
等等,凡是关系到服务质量、效率、成本、安全等方面的工作,及涉及到的技术、组件、工具、平台都在运维的技术范畴里。做好每一个技术方向、完成相应的组件、工具、平台研发都能对履行运维职责起到积极的作用,对业务的发展发挥关键影响。
二、Linux运维工作分类
运维的工作方向比较多,随着业务规模的不断发展,越成熟的互联网公司,运维岗位会划分得越细。当前很多大型的互联网公司,在初创时期只有系统运维,随着 模、服务质量的 要求,也逐渐进行了工作细分。一般情况下运维团队的工作分类(见图1-1)和职责如下。
图1-1 运维团队的工作分类
2.1-应用运维(SRE):应用运维负责线上服务的变更、服务状态监控、服务容灾和数据备份等工作,对服务进行例行排查、故障应急处理等工作,工作职责如下:设计评审、服务管理、资源管理、例行检查、预案管理、数据备份。
2.2-系统运维(SYS):负责IDC、网络、CDN和基础服务的建设(LVS、NTP、DNS);负责资产管理,服务器选型、交付和维修,工作职责如下:IDC数据中心建设、网络建设、LVS负载均衡和SNAT建设、CDN规划和建设、服务器选型、交付和维护、内核选型和OS相关维护工作、资产管理、基础服务建设。
2.3-数据库运维(DBA):数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化,对数据库进行变更、监控、备份、高可用设计等工作,详细的工作内容如下:设计评审、容量规划、数据备份与灾备、数据库监控、数据库安全、数据库高可用和性能优化、自动化系统建设、运维研发、运维平台、监控系统、自动化部署系统。
2.4-运维安全(SEC):运维安全负责网络、系统和业务等方面的安全加固工作,进行常规的安全扫描、渗透测试,进行安全工具和系统研发以及安全事件应急处理,工作内容如下:安全制度建立、安全培训、风险评估、安全建设、安全合规、应急响应。
三、Linux运维日常使用软件和技能
运维工程师使用的运维平台和工具包括:
Web服务器:apache、tomcat、nginx、lighttpd
监控:nagios、ganglia、cacti、zabbix
自动部署:ansible、sshpt、salt
配置管理:puppet、cfengine
负载均衡:lvs、haproxy、nginx
传输工具:scribe、flume
备份工具:rsync、wget
数据库:mysql、oracle、sqlserver
分布式平台:hdfs、mapreduce、spark、storm、hive
分布式数据库:hbase、cassandra、redis、MongoDB
容器:lxc、docker
虚拟化:openstack、xen、kvm
安全:kerberos、selinux、acl、iptables
问题追查:netstat、top、tcpdump、last
运维以技术为基础,通过技术保障产品提供更高质量的服务。运维工作的职责及在业务中的位置决定了运维工程师需要具备更加广博的知识和深入的技术能力:
扎实的计算机基础知识,包括计算机系统架构,操作系统,网络技术等;
通用应用方面需要了解操作系统、网络、安全,存储,CDN,DB等,知道其相关原理;
编程能力,小到运维工具的开发大到大型运维系统/平台的开发都需要有良好的编程能力;
数据分析能力:能够整理、分析系统运行的各项数据,从中发现问题及找到解决方向;
丰富的系统知识,包括系统工具、典型系统架构、常见的平台选型等;
综合利用工具和平台的能力;
四、Linux运维工作发展过程
早期的运维团队在人员较少的情况下,主要是进行数据中心建设、基础网络建设、服务器采购和服务器安装交付工作。几乎很少涉及线上服务的变更、监控、管理等工作。这个时候的运维团队更多的属于基础建设的角色,提供一个简单、可用的网络环境和系统环境即可。
随着业务产品的逐渐成熟,对于服务质量方面就有了更高的要求。这个时候的运维团队还会承担一些服务器监控的工作,同时会负责LVS、Nginx等与业务逻辑无关的4/7层运维工作。这个时候服务变更更多的是逐台的手工操作,或者有一些简单批量脚本的出现。监控的焦点更多的在服务器状态和资源使用情况上,对服务应用状态的监控几乎很少,监控更多的使用各种开源系统如Nagios、Cacti等。
由于业务规模和复杂度的持续增加,运维团队会逐渐划分为应用运维和系统运维两大块。应用运维开始接手线上业务,逐步开展服务监控梳理、数据备份以及服务变更的工作。随着对服务的深入,应用运维工程师有能力开始对服务进行一些简单的优化。同时,为了应对每天大量的服务变更,我们也开始编写各类运维工具,针对某些特定的服务能够很方便的批量变更。随着业务规模的增大,基础设施由于容量规划不足或抵御风险能力较弱导致的故障也越来越多,迫使运维人员开始将更多的精力投入到多数据中心容灾、预案管理的方向上。
业务规模达到一定程度后,开源的监控系统在性能和功能方面,已经无法满足业务需求;大量的服务变更、复杂的服务关系,以前靠人工记录、工具变更的方式不管在效率还是准确性方面也都无法满足业务需求;在安全方面也出现了各种大大小小的事件,迫使我们投入更多的精力在安全防御上。逐渐的,运维团队形成之前提到的5个大的工作分类,每个分类都需要有专精的人才。这个时候系统运维更专注于基础设施的建设和运维,提供稳定、高效的网络环境,交付服务器等资源给应用运维工程师。应用运维更专注于服务运行状态和效率。数据库运维属于应用运维工作的细化,更专注于数据库领域的自动化、性能优化和安全防御。运维研发和运维安全提供各类平台、工具,进一步提升运维工程师的工作效率,使业务服务运行得更加稳定、高效和安全。
我们将运维发展过程划分为4个阶段,如图1-2所示。
图1-2 运维发展过程
手工管理阶段:业务流量不大,服务器数量相对较少,系统复杂度不高。对于日常的业务管理操作,大家更多的是逐台登录服务器进行手工操作,属于各自为战,每个人都有自己的操作方式,缺少必要的操作标准、流程机制,比如业务目录环境都是各式各样的。
工具批量操作阶段:随着服务器规模、系统复杂度的增加,全人工的操作方式已经不能满足业务的快速发展需要。因此,运维人员逐渐开始使用批量化的操作工具,针对不同操作类型出现了不同的脚本程序。但各团队都有自己的工具,每次操作需求发生变化时都需要调整工具。这主要是因为对于环境、操作的规范不够,导致可程序化处理能力较弱。此时,虽然效率提升了一部分,但很快又遇到了瓶颈。操作的质量并没有太多的提升,甚至可能因为批量执行而导致更大规模的问题出现。我们开始建立大量的流程规范,比如复查机制,先上线一台服务器观察10分钟后再继续后面的操作,一次升级完成后至少要观察20分钟等。这些主要还是靠人来监督和执行,但在实际过程中执行往往不到位,反而降低了工作效率。
平台管理阶段:在这个阶段,对于运维效率和误操作率有了更高的要求,我们决定开始建设运维平台,通过平台承载标准、流程,进而解放人力和提高质量。这个时候对服务的变更动作进行了抽象,形成了操作方法、服务目录环境、服务运行方式等统一的标准,如程序的启停接口必须包括启动、停止、重载等。通过平台来约束操作流程,如上面提到的上线一台服务器观察10分钟。在平台中强制设定暂停检查点,在第一台服务器操作完成后,需要运维人员填写相应的检查项,然后才可以继续执行后续的部署动作。
系统自调度阶段:更大规模的服务数量、更复杂的服务关联关系、各个运维平台的林立,原有的将批量操作转化成平台操作的方式已经不再适合,需要对服务变更进行更高一层的抽象。将每一台服务器抽象成一个容器,由调度系统根据资源使用情况,将服务调度、部署到合适的服务器上,自动化完成与周边各个运维系统的联动,比如监控系统、日志系统、备份系统等。通过自调度系统,根据服务运行情况动态伸缩容量,能够自动化处理常见的服务故障。运维人员的工作也会前置到产品设计阶段,协助研发人员改造服务使其可以接入到自调度系统中。
在整个运维的发展过程中,希望所有的工作都自动化起来,减少人的重复工作,降低知识传递的成本,使我们的运维交付更高效、更安全,使产品运行更稳定。对于故障的处理,也希望由事后处理变成提前发现,由人工处理变成系统自动容灾。
五、2018年Linux运维必须抓住的前沿技能
这是技术世界正在发生的深刻变革的冰山一角,那么问题来了? 作为传统的运维该如何转型呢?
这里给出一点小的建议: 大致需要学习下这四个部分:
自动化运维(Ansible,Puppet,Saltstack等)
Devops(Docker,K8s,Jenkins,Jira等),
云服务技术(虚拟化、OpenStack、AWS及阿里云各种产品服务架构等)
python
我在网上找到一点资料,可能对你有用,看一下.
=======
windows下权限设置详解
随着动网论坛的广泛应用和动网上传漏洞的被发现以及sql注入式攻击越来越多的被使用,webshell让防火墙形同虚设,一台即使打了所有微软补丁、只让80端口对外开放的web服务器也逃不过被黑的命运。难道我们真的无能为力了吗?其实,只要你弄明白了ntfs系统下的权限设置问题,我们可以对crackers们说:no!
要打造一台安全的web服务器,那么这台服务器就一定要使用ntfs和windows nt/2000/2003。众所周知,windows是一个支持多用户、多任务的操作系统,这是权限设置的基础,一切权限设置都是基于用户和进程而言的,不同的用户在访问这台计算机时,将会有不同的权限。dos是个单任务、单用户的操作系统。但是我们能说dos没有权限吗?不能!当我们打开一台装有dos操作系统的计算机的时候,我们就拥有了这个操作系统的管理员权限,而且,这个权限无处不在。所以,我们只能说dos不支持权限的设置,不能说它没有权限。随着人们安全意识的提高,权限设置随着ntfs的发布诞生了。
windows nt里,用户被分成许多组,组和组之间都有不同的权限,当然,一个组的用户和用户之间也可以有不同的权限。下面我们来谈谈nt中常见的用户组。
administrators,管理员组,默认情况下,administrators中的用户对计算机/域有不受限制的完全访问权。分配给该组的默认权限允许对整个系统进行完全控制。所以,只有受信任的人员才可成为该组的成员。
power users,高级用户组,power users 可以执行除了为 administrators 组保留的任务外的其他任何操作系统任务。分配给 power users 组的默认权限允许 power users 组的成员修改整个计算机的设置。但power users 不具有将自己添加到 administrators 组的权限。在权限设置中,这个组的权限是仅次于administrators的。
users:普通用户组,这个组的用户无法进行有意或无意的改动。因此,用户可以运行经过验证的应用程序,但不可以运行大多数旧版应用程序。users 组是最安全的组,因为分配给该组的默认权限不允许成员修改操作系统的设置或用户资料。users 组提供了一个最安全的程序运行环境。在经过 ntfs 格式化的卷上,默认安全设置旨在禁止该组的成员危及操作系统和已安装程序的完整性。用户不能修改系统注册表设置、操作系统文件或程序文件。users 可以关闭工作站,但不能关闭服务器。users 可以创建本地组,但只能修改自己创建的本地组。
guests:来宾组,按默认值,来宾跟普通users的成员有同等访问权,但来宾帐户的限制更多。
everyone:顾名思义,所有的用户,这个计算机上的所有用户都属于这个组。
其实还有一个组也很常见,它拥有和administrators一样、甚至比其还高的权限,但是这个组不允许任何用户的加入,在察看用户组的时候,它也不会被显示出来,它就是system组。系统和系统级的服务正常运行所需要的权限都是靠它赋予的。由于该组只有这一个用户system,也许把该组归为用户的行列更为贴切。
权限是有高低之分的,有高权限的用户可以对低权限的用户进行操作,但除了administrators之外,其他组的用户不能访问 ntfs 卷上的其他用户资料,除非他们获得了这些用户的授权。而低权限的用户无法对高权限的用户进行任何操作。
我们平常使用计算机的过程当中不会感觉到有权限在阻挠你去做某件事情,这是因为我们在使用计算机的时候都用的是administrators中的用户登陆的。这样有利也有弊,利当然是你能去做你想做的任何一件事情而不会遇到权限的限制。弊就是以 administrators 组成员的身份运行计算机将使系统容易受到特洛伊木马、病毒及其他安全风险的威胁。访问 internet 站点或打开电子邮件附件的简单行动都可能破坏系统。不熟悉的 internet 站点或电子邮件附件可能有特洛伊木马代码,这些代码可以下载到系统并被执行。如果以本地计算机的管理员身份登录,特洛伊木马可能使用管理访问权重新格式化您的硬盘,造成不可估量的损失,所以在没有必要的情况下,最好不用administrators中的用户登陆。administrators中有一个在系统安装时就创建的默认用户----administrator,administrator 帐户具有对服务器的完全控制权限,并可以根据需要向用户指派用户权利和访问控制权限。因此强烈建议将此帐户设置为使用强密码。永远也不可以从 administrators 组删除 administrator 帐户,但可以重命名或禁用该帐户。由于大家都知道“管理员”存在于许多版本的 windows 上,所以重命名或禁用此帐户将使恶意用户尝试并访问该帐户变得更为困难。对于一个好的服务器管理员来说,他们通常都会重命名或禁用此帐户。guests用户组下,也有一个默认用户----guest,但是在默认情况下,它是被禁用的。如果没有特别必要,无须启用此账户。我们可以通过“控制面板”--“管理工具”--“计算机管理”--“用户和用户组”来查看用户组及该组下的用户。
我们用鼠标右键单击一个ntfs卷或ntfs卷下的一个目录,选择“属性”--“安全”就可以对一个卷,或者一个卷下面的目录进行权限设置,此时我们会看到以下七种权限:完全控制、修改、读取和运行、列出文件夹目录、读取、写入、和特别的权限。“完全控制”就是对此卷或目录拥有不受限制的完全访问。地位就像administrators在所有组中的地位一样。选中了“完全控制”,下面的五项属性将被自动被选中。“修改”则像power users,选中了“修改”,下面的四项属性将被自动被选中。下面的任何一项没有被选中时,“修改”条件将不再成立。“读取和运行”就是允许读取和运行在这个卷或目录下的任何文件,“列出文件夹目录”和“读取”是“读取和运行”的必要条件。“列出文件夹目录”是指只能浏览该卷或目录下的子目录,不能读取,也不能运行。“读取”是能够读取该卷或目录下的数据。“写入”就是能往该卷或目录下写入数据。而“特别”则是对以上的六种权限进行了细分。读者可以自行对“特别”进行更深的研究,鄙人在此就不过多赘述了。
下面我们对一台刚刚安装好操作系统和服务软件的web服务器系统和其权限进行全面的刨析。服务器采用windows 2000 server版,安装好了sp4及各种补丁。web服务软件则是用了windows 2000自带的iis 5.0,删除了一切不必要的映射。整个硬盘分为四个ntfs卷,c盘为系统卷,只安装了系统和驱动程序;d盘为软件卷,该服务器上所有安装的软件都在d盘中;e盘是web程序卷,网站程序都在该卷下的www目录中;f盘是网站数据卷,网站系统调用的所有数据都存放在该卷的wwwdatabase目录下。这样的分类还算是比较符合一台安全服务器的标准了。希望各个新手管理员能合理给你的服务器数据进行分类,这样不光是查找起来方便,更重要的是这样大大的增强了服务器的安全性,因为我们可以根据需要给每个卷或者每个目录都设置不同的权限,一旦发生了网络安全事故,也可以把损失降到最低。当然,也可以把网站的数据分布在不同的服务器上,使之成为一个服务器群,每个服务器都拥有不同的用户名和密码并提供不同的服务,这样做的安全性更高。不过愿意这样做的人都有一个特点----有钱:)。好了,言归正传,该服务器的数据库为ms-sql,ms-sql的服务软件sql2000安装在d:\ms-sqlserver2k目录下,给sa账户设置好了足够强度的密码,安装好了sp3补丁。为了方便网页制作员对网页进行管理,该网站还开通了ftp服务,ftp服务软件使用的是serv-u 5.1.0.0,安装在d:\ftpservice\serv-u目录下。杀毒软件和防火墙用的分别是norton antivirus和blackice,路径分别为d:\nortonav和d:\firewall\blackice,病毒库已经升级到最新,防火墙规则库定义只有80端口和21端口对外开放。网站的内容是采用动网7.0的论坛,网站程序在e:\www\bbs下。细心的读者可能已经注意到了,安装这些服务软件的路径我都没有采用默认的路径或者是仅仅更改盘符的默认路径,这也是安全上的需要,因为一个黑客如果通过某些途径进入了你的服务器,但并没有获得管理员权限,他首先做的事情将是查看你开放了哪些服务以及安装了哪些软件,因为他需要通过这些来提升他的权限。一个难以猜解的路径加上好的权限设置将把他阻挡在外。相信经过这样配置的web服务器已经足够抵挡大部分学艺不精的黑客了。读者可能又会问了:“这根本没用到权限设置嘛!我把其他都安全工作都做好了,权限设置还有必要吗?”当然有!智者千虑还必有一失呢,就算你现在已经把系统安全做的完美无缺,你也要知道新的安全漏洞总是在被不断的发现。权限将是你的最后一道防线!那我们现在就来对这台没有经过任何权限设置,全部采用windows默认权限的服务器进行一次模拟攻击,看看其是否真的固若金汤。
假设服务器外网域名为[imga][/imga],用扫描软件对其进行扫描后发现开放www和ftp服务,并发现其服务软件使用的是iis 5.0和serv-u 5.1,用一些针对他们的溢出工具后发现无效,遂放弃直接远程溢出的想法。打开网站页面,发现使用的是动网的论坛系统,于是在其域名后面加个/upfile.asp,发现有文件上传漏洞,便抓包,把修改过的asp木马用nc提交,提示上传成功,成功得到webshell,打开刚刚上传的asp木马,发现有ms-sql、norton antivirus和blackice在运行,判断是防火墙上做了限制,把sql服务端口屏蔽了。通过asp木马查看到了norton antivirus和blackice的pid,又通过asp木马上传了一个能杀掉进程的文件,运行后杀掉了norton antivirus和blackice。再扫描,发现1433端口开放了,到此,便有很多种途径获得管理员权限了,可以查看网站目录下的conn.asp得到sql的用户名密码,再登陆进sql执行添加用户,提管理员权限。也可以抓serv-u下的servudaemon.ini修改后上传,得到系统管理员权限。还可以传本地溢出serv-u的工具直接添加用户到administrators等等。大家可以看到,一旦黑客找到了切入点,在没有权限限制的情况下,黑客将一帆风顺的取得管理员权限。
那我们现在就来看看windows 2000的默认权限设置到底是怎样的。对于各个卷的根目录,默认给了everyone组完全控制权。这意味着任何进入电脑的用户将不受限制的在这些根目录中为所欲为。系统卷下有三个目录比较特殊,系统默认给了他们有限制的权限,这三个目录是documents and settings、program files和winnt。对于documents and settings,默认的权限是这样分配的:administrators拥有完全控制权;everyone拥有读运,列和读权限;power users拥有读运,列和读权限;system同administrators;users拥有读运,列和读权限。对于program files,administrators拥有完全控制权;creator owner拥有特殊权限;power users有完全控制权;system同administrators;terminal server users拥有完全控制权,users有读运,列和读权限。对于winnt,administrators拥有完全控制权;creator owner拥有特殊权限;power users有完全控制权;system同administrators;users有读运,列和读权限。而非系统卷下的所有目录都将继承其父目录的权限,也就是everyone组完全控制权!
现在大家知道为什么我们刚刚在测试的时候能一帆风顺的取得管理员权限了吧?权限设置的太低了!一个人在访问网站的时候,将被自动赋予iusr用户,它是隶属于guest组的。本来权限不高,但是系统默认给的everyone组完全控制权却让它“身价倍增”,到最后能得到administrators了。那么,怎样设置权限给这台web服务器才算是安全的呢?大家要牢记一句话:“最少的服务+最小的权限=最大的安全”对于服务,不必要的话一定不要装,要知道服务的运行是system级的哦,对于权限,本着够用就好的原则分配就是了。对于web服务器,就拿刚刚那台服务器来说,我是这样设置权限的,大家可以参考一下:各个卷的根目录、documents and settings以及program files,只给administrator完全控制权,或者干脆直接把program files给删除掉;给系统卷的根目录多加一个everyone的读、写权;给e:\www目录,也就是网站目录读、写权。最后,还要把cmd.exe这个文件给挖出来,只给administrator完全控制权。经过这样的设置后,再想通过我刚刚的方法入侵这台服务器就是不可能完成的任务了。可能这时候又有读者会问:“为什么要给系统卷的根目录一个everyone的读、写权?网站中的asp文件运行不需要运行权限吗?”问的好,有深度。是这样的,系统卷如果不给everyone的读、写权的话,启动计算机的时候,计算机会报错,而且会提示虚拟内存不足。当然这也有个前提----虚拟内存是分配在系统盘的,如果把虚拟内存分配在其他卷上,那你就要给那个卷everyone的读、写权。asp文件的运行方式是在服务器上执行,只把执行的结果传回最终用户的浏览器,这没错,但asp文件不是系统意义上的可执行文件,它是由web服务的提供者----iis来解释执行的,所以它的执行并不需要运行的权限。
经过上面的讲解以后,你一定对权限有了一个初步了了解了吧?想更深入的了解权限,那么权限的一些特性你就不能不知道了,权限是具有继承性、累加性 、优先性、交叉性的。
继承性是说下级的目录在没有经过重新设置之前,是拥有上一级目录权限设置的。这里还有一种情况要说明一下,在分区内复制目录或文件的时候,复制过去的目录和文件将拥有它现在所处位置的上一级目录权限设置。但在分区内移动目录或文件的时候,移动过去的目录和文件将拥有它原先的权限设置。
累加是说如一个组group1中有两个用户user1、user2,他们同时对某文件或目录的访问权限分别为“读取”和“写入”,那么组group1对该文件或目录的访问权限就为user1和user2的访问权限之和,实际上是取其最大的那个,即“读取”+“写入”=“写入”。 又如一个用户user1同属于组group1和group2,而group1对某一文件或目录的访问权限为“只读”型的,而group2对这一文件或文件夹的访问权限为“完全控制”型的,则用户user1对该文件或文件夹的访问权限为两个组权限累加所得,即:“只读”+“完全控制”=“完全控制”。
优先性,权限的这一特性又包含两种子特性,其一是文件的访问权限优先目录的权限,也就是说文件权限可以越过目录的权限,不顾上一级文件夹的设置。另一特性就是“拒绝”权限优先其它权限,也就是说“拒绝”权限可以越过其它所有其它权限,一旦选择了“拒绝”权限,则其它权限也就不能取任何作用,相当于没有设置。
交叉性是指当同一文件夹在为某一用户设置了共享权限的同时又为用户设置了该文件夹的访问权限,且所设权限不一致时,它的取舍原则是取两个权限的交集,也即最严格、最小的那种权限。如目录a为用户user1设置的共享权限为“只读”,同时目录a为用户user1设置的访问权限为“完全控制”,那用户user1的最终访问权限为“只读”。
权限设置的问题我就说到这了,在最后我还想给各位读者提醒一下,权限的设置必须在ntfs分区中才能实现的,fat32是不支持权限设置的。同时还想给各位管理员们一些建议:
1.养成良好的习惯,给服务器硬盘分区的时候分类明确些,在不使用服务器的时候将服务器锁定,经常更新各种补丁和升级杀毒软件。
2.设置足够强度的密码,这是老生常谈了,但总有管理员设置弱密码甚至空密码。
3.尽量不要把各种软件安装在默认的路径下
4.在英文水平不是问题的情况下,尽量安装英文版操作系统。
5.切忌在服务器上乱装软件或不必要的服务。
6.牢记:没有永远安全的系统,经常更新你的知识。
一. 权限的由来
远方的某个山脚下,有一片被森林包围的草原,草原边上居住着一群以牧羊为生的牧民。草原边缘的森林里,生存着各种动物,包括野狼。
由于羊群是牧民们的主要生活来源,它们的价值便显得特别珍贵,为了防止羊的跑失和野兽的袭击,每户牧民都用栅栏把自己的羊群圈了起来,只留下一道小门,以便每天傍晚供羊群外出到一定范围的草原上活动,实现了一定规模的保护和管理效果。
最初,野狼只知道在森林里逮兔子等野生动物生存,没有发现远处草原边上的羊群,因此,在一段时间里实现了彼此和平相处,直到有一天,一只为了追逐兔子而凑巧跑到了森林边缘的狼,用它那灵敏的鼻子嗅到了远处那隐隐约约的烤羊肉香味。
当晚,突然出现的狼群袭击了草原上大部分牧民饲养的羊,它们完全无视牧民们修筑的仅仅能拦住羊群的矮小栅栏,轻轻一跃便突破了这道防线……虽然闻讯而来的牧民们合作击退了狼群,但是羊群已经遭到了一定的损失。
事后,牧民们明白了栅栏不是仅仅用来防止羊群逃脱的城墙,各户牧民都在忙着加高加固了栅栏……
如今使用Windows 2000/XP等操作系统的用户,或多或少都会听说过“权限”(Privilege)这个概念,但是真正理解它的家庭用户,也许并不会太多,那么,什么是“权限”呢?对于一般的用户而言,我们可以把它理解为系统对用户能够执行的功能操作所设立的额外限制,用于进一步约束计算机用户能操作的系统功能和内容访问范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权力。
掌握了“Ring级别”概念的读者也许会问,在如今盛行的80386保护模式中,处理器不是已经为指令执行做了一个“运行级别”的限制了吗?而且我们也知道,面对用户操作的Ring 3级别相对于系统内核运行的Ring 0级别来说,能直接处理的事务已经被大幅度缩减了,为什么还要对运行在“权限少得可怜”的Ring 3层次上的操作系统人机交互界面上另外建立起一套用于进一步限制用户操作的“权限”概念呢?这是因为,前者针对的是机器能执行的指令代码权限,而后者要针对的对象,是坐在计算机面前的用户。
对计算机来说,系统执行的代码可能会对它造成危害,因此处理器产生了Ring的概念,把“裸露在外”的一部分用于人机交互的操作界面限制起来,避免它一时头脑发热发出有害指令;而对于操作界面部分而言,用户的每一步操作仍然有可能伤害到它自己和底层系统——尽管它自身已经被禁止执行许多有害代码,但是一些不能禁止的功能却依然在对这层安全体系作出威胁,例如格式化操作、删除修改文件等,这些操作在计算机看来,只是“不严重”的磁盘文件处理功能,然而它忽略了一点,操作系统自身就是驻留在磁盘介质上的文件!因此,为了保护自己,操作系统需要在Ring 3笼子限制的操作界面基础上,再产生一个专门用来限制用户的栅栏,这就是现在我们要讨论的权限,它是为限制用户而存在的,而且限制对每个用户并不是一样的,在这个思想的引导下,有些用户能操作的范围相对大些,有些只能操作属于自己的文件,有些甚至什么也不能做……
正因为如此,计算机用户才有了分类:管理员、普通用户、受限用户、来宾等……
还记得古老的Windows 9x和MS-DOS吗?它们仅仅拥有基本的Ring权限保护(实模式的DOS甚至连Ring分级都没有),在这个系统架构里,所有用户的权力都是一样的,任何人都是管理员,系统没有为环境安全提供一点保障——它连实际有用的登录界面都没有提供,仅仅有个随便按ESC都能正常进入系统并进行任何操作的“伪登录”限制而已。对这样的系统而言,不熟悉电脑的用户经常一不小心就把系统毁掉了,而且病毒木马自然也不会放过如此“松软”的一块蛋糕,在如今这个提倡信息安全的时代里,Windows 9x成了名副其实的鸡肋系统,最终淡出人们的视线,取而代之的是由Windows NT家族发展而来的Windows 2000和Windows XP,此外还有近年来致力向桌面用户发展的Linux系统等,它们才是能够满足这个安全危机时代里个人隐私和数据安全等要求的系统。
Win2000/XP系统是微软Windows NT技术的产物,是基于服务器安全环境思想来构建的纯32位系统。NT技术没有辜负微软的开发,它稳定,安全,提供了比较完善的多用户环境,最重要的是,它实现了系统权限的指派,从而杜绝了由Win9x时代带来的不安全操作习惯可能引发的大部分严重后果。
二. 权限的指派
1.普通权限
虽然Win2000/XP等系统提供了“权限”的功能,但是这样就又带来一个新问题:权限如何分配才是合理的?如果所有人拥有的权限都一样,那么就等于所有人都没有权限的限制,那和使用Win9x有什么区别?幸好,系统默认就为我们设置好了“权限组”(Group),只需把用户加进相应的组即可拥有由这个组赋予的操作权限,这种做法就称为权限的指派。
默认情况下,系统为用户分了6个组,并给每个组赋予不同的操作权限,依次为:管理员组(Administrators)、高权限用户组(Power Users)、普通用户组(Users)、备份操作组(Backup Operators)、文件复制组(Replicator)、来宾用户组(Guests),其中备份操作组和文件复制组为维护系统而设置,平时不会被使用。
系统默认的分组是依照一定的管理凭据指派权限的,而不是胡乱产生,管理员组拥有大部分的计算机操作权限(并不是全部),能够随意修改删除所有文件和修改系统设置。再往下就是高权限用户组,这一部分用户也能做大部分事情,但是不能修改系统设置,不能运行一些涉及系统管理的程序。普通用户组则被系统拴在了自己的地盘里,不能处理其他用户的文件和运行涉及管理的程序等。来宾用户组的文件操作权限和普通用户组一样,但是无法执行更多的程序。
这是系统给各个组指派的权限说明,细心的用户也许会发现,为什么里面描述的“不能处理其他用户的文件”这一条规则并不成立呢,我可以访问所有文件啊,只是不能对系统设置作出修改而已,难道是权限设定自身存在问题?实际上,NT技术的一部分功能必须依赖于特有的“NTFS”(NT文件系统)分区才能实现,文件操作的权限指派就是最敏感的一部分,而大部分家庭用户的分区为FAT32格式,它并不支持NT技术的安全功能,因此在这样的文件系统分区上,连来宾用户都能随意浏览修改系统管理员建立的文件(限制写入操作的共享访问除外),但这并不代表系统权限不起作用,我们只要把分区改为NTFS即可。
2.特殊权限
除了上面提到的6个默认权限分组,系统还存在一些特殊权限成员,这些成员是为了特殊用途而设置,分别是:SYSTEM(系统)、Everyone(所有人)、CREATOR OWNER(创建者)等,这些特殊成员不被任何内置用户组吸纳,属于完全独立出来的账户。(图.特殊权限成员)
前面我提到管理员分组的权限时并没有用“全部”来形容,秘密就在此,不要相信系统描述的“有不受限制的完全访问权”,它不会傻到把自己完全交给人类,管理员分组同样受到一定的限制,只是没那么明显罢了,真正拥有“完全访问权”的只有一个成员:SYSTEM。这个成员是系统产生的,真正拥有整台计算机管理权限的账户,一般的操作是无法获取与它等价的权限的。
“所有人”权限与普通用户组权限差不多,它的存在是为了让用户能访问被标记为“公有”的文件,这也是一些程序正常运行需要的访问权限——任何人都能正常访问被赋予“Everyone”权限的文件,包括来宾组成员。
被标记为“创建者”权限的文件只有建立文件的那个用户才能访问,做到了一定程度的隐私保护。
但是,所有的文件访问权限均可以被管理员组用户和SYSTEM成员忽略,除非用户使用了NTFS加密。
无论是普通权限还是特殊权限,它们都可以“叠加”使用,“叠加”就是指多个权限共同使用,例如一个账户原本属于Users组,而后我们把他加入Administrators组,那么现在这个账户便同时拥有两个权限身份,而不是用管理员权限去覆盖原来身份。权限叠加并不是没有意义的,在一些需要特定身份访问的场合,用户只有为自己设置了指定的身份才能访问,这个时候“叠加”的使用就能减轻一部分劳动量了。
3.NTFS与权限
在前面我提到了NTFS文件系统,自己安装过Win2000/XP的用户应该会注意到安装过程中出现的“转换分区格式为NTFS”的选择,那么什么是NTFS?
NTFS是一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,只有使用NT技术的系统对它直接提供支持,也就是说,如果系统崩溃了,用户将无法使用外面流行的普通光盘启动工具修复系统,因此,是使用传统的FAT32还是NTFS,一直是个倍受争议的话题,但如果用户要使用完全的系统权限功能,或者要安装作为服务器使用,建议最好还是使用NTFS分区格式。
与FAT32分区相比,NTFS分区多了一个“安全”特性,在里面,用户可以进一步设置相关的文件访问权限,而且前面提到的相关用户组指派的文件权限也只有在NTFS格式分区上才能体现出来。例如,来宾组的用户再也不能随便访问到NTFS格式分区的任意一个文件了,这样可以减少系统遭受一般由网站服务器带来的入侵损失,因为IIS账户对系统的访问权限仅仅是来宾级别而已,如果入侵者不能提升权限,那么他这次的入侵可以算是白忙了。
使用NTFS分区的时候,用户才会察觉到系统给管理员组用户设定的限制:一些文件即使是管理员也无法访问,因为它是SYSTEM成员建立的,并且设定了权限。
网上有人说在初始化文件中改监听端口,还有repair数据库的监听组件。本人愚笨,试了都没有成功。如果谁通过修改端口成功的可以告知下如何做到的。
唯一成功的一种的方案如下:完全卸载,完全重装数据库(仍使用默认服务器端口),再次进入防黑加固--立即检测--会发现提示是否开启防火墙针对SQL服务器端口的保护,把鼠标移动到该行最后"忽略"添加该项到忽略项目单中即可。试了一下午,纯手打,求采纳。
另外360的某些优化好像会导致Apache服务异常(原因不明),我repair了一次没修复后重装了一次Apache。
尽量在cmd窗口下用net start Apache2.2(我安装的是2.2.25版)启动服务,别用开始菜单启动,SQL服务也是,尽量用net start MySQL56(我装的是5.6.XX版本)。
楼主应该和我一样只是本地连接自己的数据库,所以为保证安全最好每次退出都把数据库服务stop掉。另外这个防黑加固对Oracle的监听没有影响,可能现在的SQL注入bug只有SQL Server和MySQL有吧。