公网远程网络唤醒的几个关键点

  1. 端口映射,使得路由器或防火墙的某个端口映射到内网机器的某个IP地址
  2. IP/MAC绑定,由于机器还未开机,所以动态MAC地址表中没有机器的MAC地址,路由器或网关设备不知道该发送给谁,因此加入静态的IP/MAC绑定,就可以知道对应该端口的包该发给哪台内网的主机
  3. 开机数据包Magic 可以用在线网页https://www.depicus.com/wake-on-lan/woli 也可以用该网站提供的exe程序,或网上提供的Python脚本.
  4. 最重要的一步是要在进行网络唤醒的机器上开启网络唤醒支持,一般是在BIOS的高级电源管理中,英文名字叫做APM,(Advaced Power Manage),然后根据网卡是PCI还是PCIE来选择是否允许PCI或PCIE进行系统启动.
  5. 之后就可以了
  6. 注意: 在公网启动的时候掩码一般要写255.255.255.255 内网的话(唤醒与被唤醒的机器同一个网段)一般写255.255.255.0,开不了的话就两个都试试,如果还是开不了,就直连试试,如果还是不行,那么就是BIOS配置有问题,如果能开那么就是映射有问题或者掩码有问题.

 

WordPress 结合Memcache进行缓存加速

WordPress博客是一个非常耗费性能的博客系统,若将原版Wordpress博客系统直接用作博客站点或者门户站点,等到访问量变大之后,就会发现系统性能根本吃不消,mysql查询数量惊人的大,而且CPU资源非常高,wordpress打开过慢等.

实际上,我们可以想办法对wordpress进行优化,使得系统性能耗费没有那么高.
首先最主要的一个操作就是减少数据库查询数量.
一般情况下,博客文章发表后就不会再做修改,因此我们可以将这些页面进行缓存,从而减少数据库查询.
大多数的wordpress官方插件都是进行文件形式的缓存,而且要执行许多步操作,非常麻烦,实际上缓存效果是有一点,但是没有明显的降低系统的资源消耗.

这里提供一种方法,可以减少wordpress系统资源的消耗,由于wordpress是单一入口的程序,因此我们在index.php中所添加的所有代码,在前台访问时均会被执行.
因此在index.php中添加页面缓存代码.如下:

 

function is_cached($uri=''){
//echo "saemc://html_cache/".sha1($uri);

@$c=file_get_contents("saemc://html_cache/".sha1($uri));
if($c!=''&&sha1($uri)!='42099b4af021e53fd8fd4e056c2568d7c2e3ffa8'){
echo $c;
die();
}else{
ob_start(cache_html);
}
}
function cache_html($c){
$c=str_replace('/<div id="wpadminbar" class="">(.|\r|\n)*登出</a>(\r|\n)*\s*</div>/','',$c);
file_put_contents("saemc://html_cache/".sha1($_SERVER['REQUEST_URI']),$c);
return $c;
}
is_cached($_SERVER['REQUEST_URI']);
ob_start(myzip);

以SAE环境为例:在index.php文件前加入该代码即可.

当然如果为自建memache/redis,加上连接账号密码,key设置为sha1值即可.

Raspberry Pi调优及开机IP上报功能配置

前一阵到wy上兑换了一个树莓派,拿到手了很开心,于是购买了一个sony C10的SD卡。

然后就是一顿搞。。

装上系统之后发现系统很卡,于是对其进行了一些系统参数配置。

tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=30m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
tmpfs /var/run tmpfs defaults,noatime,nosuid,mode=0755,size=2m 0 0
tmpfs /var/spool/mqueue tmpfs defaults,noatime,nosuid,mode=0700,gid=12,size=30m 0 0

对一些读写较多的地方做了改进,使其不直接读写SD卡;

上面是配置方法,只要将内容加入到/etc/fstab重启即可。

安装chkconfig

sudo apt-get install chkconfig

开机IP上报功能

#!/bin/bash

# check network availability
while true
do
 TIMEOUT=5
 SITE_TO_CHECK="www.sinaapp.com"
 RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1`
 if [ "x$RET_CODE" = "x200" ]; then
 echo "Network OK, will POST ip..."
 break
 else
 echo "Network not ready, wait..."
 sleep 1s
 fi
done

# get the IP address of eth0, e.g. "192.168.16.5"
ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'`

# send the Email
#echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" xxx@gmail.com

# POST ip

while true
do
TIMEOUT=5
SITE_TO_POST="xxxx.sinaapp.com/ip.php"
RET_CODE=`curl -s --connect-timeout $TIMEOUT "$SITE_TO_POST" -w %{http_code} -d "ip=$ETH0_IP_ADDR"| tail -n1`
echo "-------------------------------------------";
echo $ETH0_IP_ADDR
echo $RET_CODE
date
echo "-------------------------------------------";
 if [ "$RET_CODE" = "200" ]; then
 echo "POST OK"
 break
 else
 echo "SOMETHING WRONG"
 sleep 1s
 fi
done

服务端

<?php

echo "";

if(!empty($_POST['ip'])&&empty($_GET['get'])){
	$ip=serialize($_POST['ip']);
    $mmc=memcache_init();
    if($mmc==false)
        echo "mc init failed\n";
    else
    {
        memcache_set($mmc,"Rasp_ip",$ip);
        
    }
}else if(!empty($_GET['get'])){
    $mmc=memcache_init();
    if($mmc==false)
        echo "mc init failed\n";
    else{
		$ip= memcache_get($mmc,"Rasp_ip");
        //var_dump($ip);
        echo unserialize($ip);
    }
}

svn代码回滚命令

取消对代码的修改分为两种情况:

第一种情况:改动没有被提交(commit)。
这种情况下,使用svn revert就能取消之前的修改。
svn revert用法如下:
# svn revert [-R] something
其中something可以是(目录或文件的)相对路径也可以是绝对路径。
当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的改动。
在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。
注意:svn revert本身有固有的危险,因为它的目的是放弃未提交的修改。一旦你选择了恢复,Subversion没有方法找回未提交的修改。

第二种情况:改动已经被提交(commit)。
这种情况下,用svn merge命令来进行回滚。
回滚的操作过程如下:
1、保证我们拿到的是最新代码:
svn update
假设最新版本号是28。
2、然后找出要回滚的确切版本号:
svn log [something]
假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目
如果想要更详细的了解情况,可以使用svn diff -r 28:25 [something]
3、回滚到版本号25:
svn merge -r 28:25 something
为了保险起见,再次确认回滚的结果:
svn diff [something]
发现正确无误,提交。
4、提交回滚:
svn commit -m “Revert revision from r28 to r25,because of …”
提交后版本变成了29。
将以上操作总结为三条如下:
1. svn update,svn log,找到最新版本(latest revision)
2. 找到自己想要回滚的版本号(rollbak revision)
3. 用svn merge来回滚: svn merge -r : something

SNMP服务存在可写口令处理方法

很多操作系统或者网络设备的SNMP代理服务都存在默认口令。如果您没有修改这些默认口令或者口令为弱口令,远程攻击者就可以通过SNMP代理获取系统的很多细节信息。如果攻击者得到了可写口令,它甚至可以修改系统文件或者执行系统命令。
* 修改SNMP缺省口令或者禁止SNMP服务:

在Solaris系统下,修改/etc/snmp/conf/snmpd.conf
中缺省的口令,然后执行下列命令使之生效:
#/etc/init.d/init.snmpdx stop
#/etc/init.d/init.snmpdx start

在Solaris系统下,执行下列命令可以禁止SNMP服务:
# /etc/init.d/init.snmpdx stop
# mv /etc/rc3.d/S76snmpdx /etc/rc3.d/s76snmpdx

对于Windows系统,您可以参考以下方法关闭SNMP服务(以Windows 2000为例):
打开控制面板,双击“添加或删除程序”,选择“添加/删除Windows组件”,选中“管理和监视工具”,双击打开,取消“简单网络管理协议”复选框,按确定,然后按照提示完成操作。

在Cisco路由器上您可以使用如下方式来修改、删除SNMP口令:

1. telnet或者通过串口登录进入您的Cisco路由器

2. 进入enable口令:

Router>enable
Password:
Router#

3. 显示路由器上当前的snmp配置情况:

Router#show running-config
Building configuration…


snmp-server community public RO
snmp-server community private RW
….
….

4. 进入配置模式:

Router#configure terminal
Enter configuration commands, one per line.? End with CNTL/Z.
Router(config)#

您可以选用下面三种方法中的一种或者结合使用:

(1) 如果您不需要通过SNMP进行管理,可以禁止SNMP Agent服务:

将所有的只读、读写口令删除后,SNMP Agent服务就禁止

a. 删除只读(RO)口令:

Router(config)#no snmp-server community public RO
……

b. 删除读写(RW)口令

Router(config)#no snmp-server community private RW
……
(2) 如果您仍需要使用SNMP,修改SNMP口令,使其不易被猜测:

a. 删除原先的只读或者读写口令:

Router(config)#no snmp-server community public RO
Router(config)#no snmp-server community private RW

b. 设置新的只读和读写口令,口令强度应该足够,不易被猜测。

Router(config)#no snmp-server community XXXXXXX RO
Router(config)#no snmp-server community YYYYYYY RW

(3) 只允许信任主机通过SNMP口令访问(以对只读口令’public’为例)

a. 创建一个访问控制列表(假设名为66):

router(config)#access-list 66 deny any

b. 禁止任何人访问public口令:

router(config)#snmp-server community public ro 66

c. 设置允许使用public口令进行访问的可信主机(1.2.3.4):

router(config)#snmp-server host 1.2.3.4 public

对于读写口令的访问限制同上。

在对SNMP口令进行修改、删除等操作之后,需要执行write memory命令保存设置:

router(config)#exit (退出configure模式)
router#write memory (保存所作设置)

* 在防火墙上过滤掉对内部网络UDP 161端口的访问。
copy:nsfocus’s ids