服务器防注入(服务器怎么防ddos攻击)

如何才能有效的防止服务器被黑

服务器安全这问题,很重要,之前服务器被黑,管理员账号也被篡改,远程端口也登陆不了了。,在网上搜索了一些服务器安全设置以及防黑的文章,对着文章,我一个一个的设置起来,费了好几天的时间才设置完,原以为会防止服务器再次被黑,没想到服务器竟然瘫痪了,网站都打不开了,无奈对服务器安全也是一窍不通,损失真的很大,数据库都损坏了,我哪个后悔啊。娘个咪的。最后还是让机房把系统重装了。找了几个做网站服务器方面的朋友,咨询了关于服务器被黑的解决办法,他们建议找国内最有名的服务器安全的安全公司来给做安全维护,找了sinesafe,服务器被黑的问题,才得以解决。

一路的走来,才知道,服务器安全问题可不能小看了。经历了才知道,服务器安全了给自己带来的也是长远的利益。希望我的经历能帮到楼主,帮助别人也是在帮助我自己。

下面是一些关于安全方面的建议!

建站一段时间后总能听得到什么什么网站被挂马,什么网站被黑。好像入侵挂马似乎是件很简单的事情。其实,入侵不简单,简单的是你的网站的必要安全措施并未做好。

一:挂马预防措施:

1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。

2、定期对网站进行安全的检测,具体可以利用网上一些工具,如sinesafe网站挂马检测工具!

序,只要可以上传文件的asp都要进行身份认证!

3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。

4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。

5、要尽量保持程序是最新版本。

6、不要在网页上加注后台管理程序登陆页面的链接。

7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。

8、要时常备份数据库等重要文件。

9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全!

10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。

11、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。这其中包括各种新闻发布、商城及论坛程

二:挂马恢复措施:

1.修改帐号密码

不管是商业或不是,初始密码多半都是admin。因此你接到网站程序第一件事情就是“修改帐号密码”。帐号

密码就不要在使用以前你习惯的,换点特别的。尽量将字母数字及符号一起。此外密码最好超过15位。尚若你使用

SQL的话应该使用特别点的帐号密码,不要在使用什么什么admin之类,否则很容易被入侵。

2.创建一个robots.txt

Robots能够有效的防范利用搜索引擎窃取信息的骇客。

3.修改后台文件

第一步:修改后台里的验证文件的名称。

第二步:修改conn.asp,防止非法下载,也可对数据库加密后在修改conn.asp。

第三步:修改ACESS数据库名称,越复杂越好,可以的话将数据所在目录的换一下。

4.限制登陆后台IP

此方法是最有效的,每位虚拟主机用户应该都有个功能。你的IP不固定的话就麻烦点每次改一下咯,安全第一嘛。

5.自定义404页面及自定义传送ASP错误信息

404能够让骇客批量查找你的后台一些重要文件及检查网页是否存在注入漏洞。

ASP错误嘛,可能会向不明来意者传送对方想要的信息。

6.慎重选择网站程序

注意一下网站程序是否本身存在漏洞,好坏你我心里该有把秤。

7.谨慎上传漏洞

据悉,上传漏洞往往是最简单也是最严重的,能够让黑客或骇客们轻松控制你的网站。

可以禁止上传或着限制上传的文件类型。不懂的话可以找专业做网站安全的sinesafe公司。

8. cookie保护

登陆时尽量不要去访问其他站点,以防止 cookie泄密。切记退出时要点退出在关闭所有浏览器。

9.目录权限

请管理员设置好一些重要的目录权限,防止非正常的访问。如不要给上传目录执行脚本权限及不要给非上传目录给于写入权。

10.自我测试

如今在网上黑客工具一箩筐,不防找一些来测试下你的网站是否OK。

11.例行维护

a.定期备份数据。最好每日备份一次,下载了备份文件后应该及时删除主机上的备份文件。

b.定期更改数据库的名字及管理员帐密。

c.借WEB或FTP管理,查看所有目录体积,最后修改时间以及文件数,检查是文件是否有异常,以及查看是否有异常的账号。

我怎么会去阻止DLL注入

我怎么会去阻止DLL注入

于是有一天,我看到这个:并且它会在三个DLL注入的。我将如何防止这些过程?或在最低限度,我该如何防止优先个?我在想,也许一个Ring 0的驱动程序可能会停止所有三个的唯一途径,但我想看看有什么想。

-------------------------------------------------------------------------------------------------------------------------

1.最佳的技术解决方案将做到这一点的装载代码不能正常运行你的程序初始化之后。这样做的一个办法就是通过采取NT加载程序锁,这将有效地防止任何加载操作的发生。其他选项包括直接修补装载代码拨打电话给LoadLibrary失败的攻击者(如插入INT3断点和自我调试,以处理预期的情况下)..但是,作为一个hacker(一个管理员谁链接到你的网站,其实),你不会永远停止从获得代码的人进入你的过程中,这种或那种方式。调用LoadLibrary恰好是一个方便快捷 CodeGo.net,但也有吨不同的方式来手动加载的代码,你永远也别想完全停止,短的参与ring0代码。即使你做去到ring0,hacker将在那里你身边。此外,还有大量的DLL注入。计划,辅助工具,并扩展操作系统函数的程序都可以DLL注入给附加函数的任何程序。

2.如何对付那些3技术抗辩: CreateRemoteThread的您可以通过挂钩的LoadLibrary防止优先种技术(CreateRemoteThread的其中调用LoadLibrary)。在你的钩子你核对你知道是过程的一部分,可以被加载的DLL列表,也可以核对你不希望加载已知的DLL列表。当你发现一个DLL你不希望加载SetLastError(ERROR_ACCESS_DENIED),则返回NULL。我设置的最后一个错误,让人们编写代码查找错误代码得到一个。这似乎是工作,也许不同的代码可能更合适。这将停止该DLL加载。 SetWindowsHookEx函数我认为技术CreateRemoteThread的阻塞将工作SetWindowsHookEx函数,但只有当你可以在之前调用SetWindowsHookEx技术已经开始加载其代码(通常是在优先个窗口是在一个应用程序中创建得到你的钩子安装-在这么早的代码洞好的技术。之前没见过的。你可以抵御这一点,但你必须勾调用LoadLibrary入口点(不是IAT表)作为代码洞直接调用LoadLibrary。作为文章的作者-有很多方法可以被攻击,你可能会很难击败他们。但往往你只想对某些DLL加载(如特定的第三方DLL,它是软件中的第三方DLL没有被正确写入到一个事实,即另一个钩子也可能存在辩护,让你从装载阻止它)。

3.最好的办法是确保没有进程获得管理员访问权限,或者作为运行的用户帐户为您的应用程序。如果没有这个访问,代码注入到应用程序中是不可能的,而一旦这样的过程得到的访问,它可以各种恶作剧,而无需自身注入到其他进程-注入只是可以更容易隐藏。

4.你为什么要阻止呢?这是一个实际的“生意”需要,或者是你在短短的兴趣了“hacker”,反对“hacker”如果权限允许这一点,它是由设计-操作系统提供的设施,以您的系统管理员指派给下它们运行的帐户。 Raymond Chen的将很快被链接在这里...

5.由于这张海报暗示,他正在投资反hacker,揭示出什么,我认为光。作为一个前任faker。关于反hacker只是一个指针。最好的办法是让服务器运行的核心逻辑。例如在优先人称射击游戏,监控客户端端发送到服务器。不要让他们随意走动。让服务器告诉每个玩家根据自己的逻辑的客户端端。千万不要只是他们可能是如果hackerhacker自己的客户端,谁在乎呢?只是它在其他的人,一切都很好。对于星际争霸maphacks,解决方法很简单。不给出来,应该是未知的领域。它保存了带宽了。我是在delta部队一个大faker(它的一个老的主要诀窍是由直接修改在任何地方翘曲。没有所需的DLL!

6.您是否正在寻找一个解决方案,ring3下呢?如果是这样,你想建立额外的函数到系统中,是不是目前(至少据我所知)提供开箱即装即用,所以它需要的工作位。此外,这是可能从一个驱动,其实大部分的杀毒软件定期进行这种类型的活动。至于停止它变得有点棘手,因为你不能只是自己注册为一个回调来创建进程或DLL加载。你可以,但是,如果你的进程已经他们之前开始,勾CreateRemoteThread的和类似的函数在全局和执行这种类型的检查自己的。所以实际上你想要检查其中的CreateRemoteThread要创建一个线程,如果你不喜欢它返回一个错误。这将否定优先个对于如果您在磁盘上的原程序有效的哈希值,那么你总是可以在装入前检查哈希值。如果你没有哈希,你至少可以只检查简单的地方将增加该类型的代码,寻找你不要指望在那里的DLL(如IAT,或运行字符串)。这不是很简单的,但它似乎给你所要求的函数。

7.我并不十分熟悉Windows的API,但我可以给你更广义的指针:看看你的Windows数据执行保护(DPE)。它可能不适合所有(阅读:最)工作的情况下,在您的链接列出的过程是从OS的角度来看一个有效的过程。纵深防御,虽然确保整个应用程序的assertions安全权限静态分配空间,这样任何新主题催生了进去要么失败或覆盖的空间,你会需要大概一个沉重的大块逻辑检测和纠正这虽然的。因数你的代码到一个设备驱动程序或其他低级别类型的过程,你可以得到在Windows文件保护伞覆盖。刚看到Cthulon的回答(顺便说一句好!)我怕他可能是正确的:任何人谁愿意在你的应用程序执行代码注入将找到一种方法来这样做。上述步骤使其更有点困难。希望这有助于

8.只是简单的想法的:)使用代码洞穴CRC校验注入自己的代码也许会减慢其他其他代码洞穴。 polling进程模块列表未知DLL的加载是可能有助于减缓人们只是注入任何旧事与附加线程钩子。

9.您可以防止优先种技术(CreateRemoteThread这就要求LoadLibrary)通过挂钩LoadLibrary。在你的钩子你核对你知道是过程的一部分,可以被加载的DLL列表,也可以核对你不希望加载已知的DLL列表。ü如何检查可以siurce代码C#来检测或检查....下面的代码库注入器[DllImport("kernel32")]

public static extern IntPtr CreateRemoteThread(

IntPtr hProcess,

IntPtr lpThreadAttributes,

uint dwStackSize,

UIntPtr lpStartAddress,// raw Pointer into remote process

IntPtr lpParameter,

uint dwCreationFlags,

out IntPtr lpThreadId

);

[DllImport("kernel32.dll")]

public static extern IntPtr OpenProcess(

UInt32 dwDesiredAccess,

Int32 bInheritHandle,

Int32 dwProcessId

);

[DllImport("kernel32.dll")]

public static extern Int32 CloseHandle(

IntPtr hObject

);

[DllImport("kernel32.dll", SetLastError= true, ExactSpelling= true)]

static extern bool VirtualFreeEx(

IntPtr hProcess,

IntPtr lpAddress,

UIntPtr dwSize,

uint dwFreeType

);

[DllImport("kernel32.dll", CharSet= CharSet.Ansi, ExactSpelling= true)]

public static extern UIntPtr GetProcAddress(

IntPtr hModule,

string procName

);

[DllImport("kernel32.dll", SetLastError= true, ExactSpelling= true)]

static extern IntPtr VirtualAllocEx(

IntPtr hProcess,

IntPtr lpAddress,

uint dwSize,

uint flAllocationType,

uint flProtect

);

[DllImport("kernel32.dll")]

static extern bool WriteProcessMemory(

IntPtr hProcess,

IntPtr lpBaseAddress,

string lpBuffer,

UIntPtr nSize,

out IntPtr lpNumberOfBytesWritten

);

[DllImport("kernel32.dll", CharSet= CharSet.Auto)]

public static extern IntPtr GetModuleHandle(

string lpModuleName

);

[DllImport("kernel32", SetLastError= true, ExactSpelling= true)]

internal static extern Int32 WaitForSingleObject(

IntPtr handle,

Int32 milliseconds

);

public Int32 GetProcessId(String proc)

{

Process[] ProcList;

ProcList= Process.GetProcessesByName(proc);

return ProcList[0].Id;

}

public void InjectDLL(IntPtr hProcess, String strDLLName, Process proc)

{

IntPtr bytesout= IntPtr.Zero;

IntPtr hThread= IntPtr.Zero;

// Length of string containing the DLL file name+1 byte padding

Int32 LenWrite= strDLLName.Length+ 1;

// Allocate memory within the virtual address space of the target process

IntPtr AllocMem= IntPtr.Zero;

UIntPtr Injector= UIntPtr.Zero;

// Allocate some memory in the process for the loading of our.dll

AllocMem=(IntPtr)VirtualAllocEx(hProcess,(IntPtr)null,(uint)LenWrite, 0x1000, 0x40);//allocation pour WriteProcessMemory

// Write the name of the.dll to our new allocated space.

WriteProcessMemory(hProcess, AllocMem, strDLLName,(UIntPtr)LenWrite, out bytesout);

// Function pointer"Injector"

//Load dll

Injector=(UIntPtr)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");

if(Injector== null)

{

Console.WriteLine(" Injector Error!\n");

// return failed

return;

}

// Create thread in target process, and store handle in hThread

// Load our DLL

hThread=(IntPtr)CreateRemoteThread(hProcess,(IntPtr)null, 0, Injector, AllocMem, 0, out bytesout);

// Make sure thread handle is valid

if(hThread== null)

{

//incorrect thread handle... return failed

Console.WriteLine(" hThread [ 1 ] Error!\n");

return;

}

// Time-out is 10 seconds...

int Result= WaitForSingleObject(hThread, 10* 1000);

// Check whether thread timed out...

if(Result== 0x00000080L|| Result== 0x00000102L|| Result== 0xFFFFFFFF)

{

/* Thread timed out...*/

Console.WriteLine(" hThread [ 2 ] Error!\n");

// Make sure thread handle is valid before closing... prevents crashes.

if(hThread!= null)

{

//Close thread in target process

CloseHandle(hThread);

}

return;

}

// Sleep thread for 1 second

Thread.Sleep(1000);

// Clear up allocated space( Allocmem)

VirtualFreeEx(hProcess, AllocMem,(UIntPtr)0, 0x8000);

// Make sure thread handle is valid before closing... prevents crashes.

if(hThread!= null)

{

//Close thread in target process

CloseHandle(hThread);

}

// return succeeded

return;

}

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

String strDLLName=@"C:\Users\muhammad.qasim\Desktop\qasim\testdllinject\testdllinject\bin\Debug\testdllinject.dll";

String strProcessName="WindowsFormsApplication9";

Int32 ProcID= GetProcessId(strProcessName);

Process proc= Process.GetProcessById(ProcID);

if(ProcID>= 0)

{

IntPtr hProcess=(IntPtr)OpenProcess(0x1F0FFF, 1, ProcID);

if(hProcess== null)

{

MessageBox.Show("OpenProcess() Failed!");

return;

}

else

{

InjectDLL(hProcess, strDLLName, proc);

MessageBox.Show("injected");

}

如何防范服务器被攻击

一,首先服务器一定要把administrator禁用,设置一个陷阱账号:"Administrator"把它权限降至最低,然后给一套非常复杂的密码,重新建立

一个新账号,设置上新密码,权限为administraor

然后删除最不安全的组件:

建立一个BAT文件,写入

regsvr32/u C:\WINDOWS\System32\wshom.ocx

del C:\WINDOWS\System32\wshom.ocx

regsvr32\u C:\WINDOWS\system32\shell32.dll

del C:\WINDOWS\system32\shell32.dll

二,IIS的安全:

1、不使用默认的Web站点,如果使用也要将将IIS目录与系统磁盘分开。

2、删除IIS默认创建的Inetpub目录(在安装系统的盘上)。

3、删除系统盘下的虚拟目录,如:_vti_bin、IISSamples、Scripts、IIShelp、IISAdmin、IIShelp、MSADC。

4、删除不必要的IIS扩展名映射。

右键单击“默认Web站点→属性→主目录→配置”,打开应用程序窗口,去掉不必要的应用程序映射。主要为.shtml,.shtm,.stm

5、更改IIS日志的路径

右键单击“默认Web站点→属性-网站-在启用日志记录下点击属性

6、如果使用的是2000可以使用iislockdown来保护IIS,在2003运行的IE6.0的版本不需要。

八、其它

1、系统升级、打操作系统补丁,尤其是IIS 6.0补丁、SQL SP3a补丁,甚至IE 6.0补丁也要打。同时及时跟踪最新漏洞补丁;

2、停掉Guest帐号、并给guest加一个异常复杂的密码,把Administrator改名或伪装!

3、隐藏重要文件/目录

可以修改注册表实现完全隐藏:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ Current-Version\Explorer\Advanced\Folder\Hi

-dden\SHOWALL”,鼠标右击“CheckedValue”,选择修改,把数值由1改为0

4、启动系统自带的Internet连接防火墙,在设置服务选项中勾选Web服务器。

5、防止SYN洪水攻击

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建DWORD值,名为SynAttackProtect,值为2

EnablePMTUDiscovery值为0

NoNameReleaseOnDemand值为1

EnableDeadGWDetect值为0

KeepAliveTime值为300,000

PerformRouterDiscovery值为0

EnableICMPRedirects值为0

6.禁止响应ICMP路由通告报文

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface

新建DWORD值,名为PerformRouterDiscovery值为0

7.防止ICMP重定向报文的攻击

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

将EnableICMPRedirects值设为0

8.不支持IGMP协议

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建DWORD值,名为IGMPLevel值为0

9、禁用DCOM:

运行中输入 Dcomcnfg.exe。回车,单击“控制台根节点”下的“组件服务”。打开“计算机”子文件夹。

对于本地计算机,请以右键单击“我的电脑”,然后选择“属性”。选择“默认属性”选项卡。

清除“在这台计算机上启用分布式 COM”复选框。

10.禁用服务里的

Workstation这服务开启的话可以利用这个服务,可以获取服务器所有帐号.

11阻止IUSR用户提升权限

三,这一步是比较关键的(禁用CMD运行)

运行-gpedit.msc-管理模板-系统

-阻止访问命令提示符

-设置

-已启用(E)

-也停用命令提示符脚本处理吗?

(是)

四,防止SQL注入

打开SQL Server,在master库用查询分析器执行以下语句:

exec sp_dropextendedproc'xp_cmdshell

使用了以上几个方法后,能有效保障你的服务器不会随便被人黑或清玩家数据,当然我技术有限,有的高手还有更多方法入侵你的服务器,这

需要大家加倍努力去学习防黑技术,也希望高手们对我的评论给予指点,修正出更好的解决方案,对玩家的数据做出更有力的保障~~~

阅读剩余
THE END