碎小无章的记录。

1、vim替换小技巧

This is the first line
 This is the second line

 www.linuxpk.com
 hello
 good moring

 www.linuxpk.com
 hi
 good afternoon

 www.linuxpk.com
 foo
 good evening

 This is the last line

 要求:删除所有含有"www.linuxpk.com"的行,以及该行下面的两行。使得结果要成为:

 This is the first line
 This is the second line

 This is the last line

www\.linuxpk\.com
1. 如何删除所有带有www.linuxpk.com的行,及其下面的3行
:g/www\.linuxpk\.com/ norm 4dd
1. 如何删除所有带有www.linuxpk.com的行,及其下面的3行
:g/www\.linuxpk\.com/ norm dap

2、nfs挂载 客户端需要开放portmap这个服务 centos下开启nfs服务也需要这个服务

3、关于分区

一个潜在的黑客如果要攻击你的Linux服务器,他首先就会尝试缓冲区溢出。在过去的几年中,以缓冲区溢出为类型的安全漏洞是最为常见的一种形式了。 更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以轻易使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制 权!

为了防止此类攻击,我们从安装系统时就应该注意。如果用root分区纪录数据,如 log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免 root分区被溢出。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区 了,从而就避免了部分针对Linux分区溢出的恶意攻击。

4\查看连接 IP的连接数

netstat -an | awk ‘/^tcp/{ A[$NF]++} END{ for (a in A) print a, A[a]}’
netstat -an |awk ‘/LISTEN/{next};/^tcp/{s=split($5, N,”:”); \
A[N[s-1]]++} END{ for (a in A) print a, A[a]}’

5 FastCGI进程不够使用
通过执行 netstat -anpo | grep “php-cgi” | wc -l 判断,是否接近你启动的FastCGI进程,接近你的设置,表示进程不够
6、nginx 400错误解决
nginx400错误比较难查找原因,因为此错误并不是每次都会出现的,另外,出现错误的时候,通常在浏览器和日志里看不到任何有关提示。
(W)FD`$SP?QlBSD爱好者乐园4F|R1d]
经长时间观察和大量试验查明,此乃request header过大所引起,request过大,通常是由于cookie中写入了较大的值所引起。
e&j]].N9Tk[
7J�I wk?,OSd所幸在nginx中是有办法解决这个问题:BSD爱好者乐园RH x s Zf2wA4S

%m? `/hw HI在nginx.conf中,将client_header_buffer_size和large_client_header_buffers都调大,可缓解此问题。
~m�mb bH-@+W~6JBSD爱好者乐园%L/?k,a D
其中主要配置是client_header_buffer_size这一项,默认是1k,所以header小于1k的话是不会出现问题的。
#u,iGplr&C5QI`DBSD爱好者乐园:W1wW2Qs
按我现在配置是:BSD爱好者乐园�`T1_$u+rAVy%J

A2E(\p PQ&Haclient_header_buffer_size 16k;
Z|_/d{0Flarge_client_header_buffers 4 400k;BSD爱好者乐园#n|;B(O2eRG7I1\ [

*A7axf/F%l_u这个配置可接收16k以下的header,在浏览器中cookie的字节数上限会非常大,所以实在是不好去使用那最大值。‘

查看head头部有多大
7、Linux下查SCSI卡、RAID卡信息的命令shell#cat /proc/scsi/scsi

shell#/sbin/lspci

shell#/usr/sbin/dmidecode

8、添加suhosin补丁

假设php源代码和一下要用到的文件都保持在/usr/local/src下,php源代码版本为:php-5.2.6

先下载跟你的php版本对应的Suhosin补丁:http://www.hardened-php.net/suhosin/download.html

解压缩:

1
gzip -d ./suhosin-patch-5.2.6-0.9.6.2.patch.gz

进入php源代码目录:

1
2
cd php-5.2.6
patch -p 1 -i ../suhosin-patch-5.2.6-0.9.6.2.patch

重建php的configure脚本

1
./buildconf --force

然后重新编译php:

1
2
3
./configure --enable-suhosin --with-what-you-want
make
make install

9、 SELinux问题  cannot restore segment prot after reloc: Permission denied

/usr/bin/setenforce 修改SELinux的实时运行模式

setenforce 1 设置SELinux 成为enforcing模式 不能继续执行

setenforce 0 设置SELinux 成为permissive模式 可以继续 只记录 日志

在命令后加个 -Z 或者加 –context

[root@python azureus]# ls -Z

-rwxr-xr-x fu fu user_u:object_r:user_home_t azureus

-rw-r–r– fu fu user_u:object_r:user_home_t Azureus2.jar

-rw-r–r– fu fu user_u:object_r:user_home_t Azureus.png

2)chcon

更改文件的标签

[root@python tmp]# ls –context test.txt

-rw-r–r– root root root:object_r:staff_tmp_t test.txt

[root@python tmp]# chcon -t etc_t test.txt

[root@python tmp]# ls -lZ test.txt

-rw-r–r– root root root:object_r:etc_t test.txt

10、wget断点续传是自动的,只需要加上-c参数即可,例如:

wget -c http://www.abc.com/abc.zip

另外注意,使用wget断点续传要求服务器支持断点续传。
11、在 VIM,如何给注释多行 或者取消注释
加注释
:m,ns/^/#/
其中 m 和 n 是行号
去掉注释
:m,ns/^#//
其中 m 和 n 是行号
12、dig查看解析情况
# 查找一个域的授权 dns 服务器
dig sohu.com +nssearch# 从根服务器开始追踪一个域名的解析过程
dig sohu.com + trace

13.Linux rar解压打包

安装好Linux的rar后

解压rar x test.rar

打包rar a test.rar *.jpg

14、PHP发送邮件乱码

Warning: mb_send_mail():
Unsupported charset "utf-X" - will be regarded as ascii in ...

這下我明白了,凶手就是 mb_send_mail()。原來 mail() 實際上已經被 mb_send_mail() 覆寫了,而 mb_send_mail() 會判讀 header 內容對信件內容編碼。這正是造成亂碼的原因。

我直覺想到這與 mbstring extension 有關。只要不載入 mbstring extension 或是在 php.ini 中設定 mbstring.func_overload = 6(not overload mail()),那麼問題便可迎刃而解。我測試後確實可解,取消 mbstring.func_overloadmail() 之覆寫動作後, mail() 的行為跟以前一樣,不會對信件內容亂編碼。

检查PHPINFO 发现我的是mbstring.func_overload 是7  7的话把mail重载了 所以改成0 或者6都没有问题了

15、查看连接的IP并且排序
第一种用awk
netstat -an |awk ‘/LISTEN/{next};/^tcp/{s=split($5, N,”:”); \
A[N[s-1]]++} END{ for (a in A) print a, A[a]}’ | awk ‘{print $2″::”$1}’ | sort -nt:
第二种 简单的
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n

查看状态
netstat -nat | awk ‘{print $6}’ | sort | uniq -c | sort -rn

16、I refuse to run as root emesene默认不允许root用户运行 但我的习惯一般一直用root 所以只好查查怎么解决了。
参考:http://www.songzi.org/blog/article.asp?id=666
I undestand the problem. You have to edit the Controller.py file (is in the emesene root folder).
Find and comment or delete the next lines:

if os.name == ‘posix’ and os.getuid() == 0:
print “I refuse to run as root”
return

Save the file.

其实也不用删除,把这三行前面加上注释就好了:

# if os.name == ‘posix’ and os.getuid() == 0:
# print “I refuse to run as root”
# return

再执行 “./emesene “,ok。

17、查出网站的爬虫

/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | egrep -i 'bot|crawler|slurp|spider'

18、用Shell查看网络连接数 命令解説
Shell写起来很简单,效果却很神奇,你可以先尝试执行一下这条命令:

netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key,”\t”,state[key]}’

会得到类似下面的结果,具体数字会有所不同:

LAST_ACK 1
SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 28
FIN_WAIT2 3
CLOSING 5
TIME_WAIT 1669

也就是说,这条命令可以把当前系统的网络连接状态分类汇总。

下面解释一下为啥要这样写:

一个简单的管道符连接了netstat和awk命令。

——————————————————————

先来看看netstat:

netstat -n

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 123.123.123.123:80 234.234.234.234:12345 TIME_WAIT

你实际执行这条命令的时候,可能会得到成千上万条类似上面的记录,不过我们就拿其中的一条就足够了。

——————————————————————

再来看看awk:

/^tcp/
滤出tcp开头的记录,屏蔽udp, socket等无关记录。

state[]
相当于定义了一个名叫state的数组

NF
表示记录的字段数,如上所示的记录,NF等于6

$NF
表示某个字段的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是TIME_WAIT

state[$NF]
表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数

++state[$NF]
表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一

END
表示在最后阶段要执行的命令

for(key in state)
遍历数组

print key,”\t”,state[key]
打印数组的键和值,中间用\t制表符分割,美化一下。

19、判断受到何种DDOS攻击

如果出现了以下情况就是遭到了DDOS攻击:

1. SYN数量大于100则是遭到了SYNFlood式的DDOS攻击。

2. ACK数量大于500则遭受了ACKFlood式的DDOS攻击(下载站正常情况下也可能会达到1000个以上)。

3. ICMP数量大于50则可能遭到了ICMPFlood式的DDOS攻击。

4. UDP数量很少而带宽占用很大,则可能遭到了UDPFlood攻击。

5. CPU占用率大于80%,并且主要被MSSQLServer或MySQL数据库进程占用了则可能遭到了CC类的DDOS攻击。

20、grep 的时候记得过虑他自己 下面两种方法都可以
ps aux | grep httpd | grep -v grep | wc -l
pgrep httpd | wc -l

21、Linux下使用pmap命令能查看一个具体进程所用内存的分布情况。

22、清空 ARP表

#arp -d -a(适用于bsd)
for HOST in `arp | sed ‘/Address/d’ | awk ‘{ print $1}’` ; do arp -d $HOST; done


1 条评论.




留下评论