存档

‘Open Source’ 分类的存档

用cacti抓panabit的数据

2014年12月11日 没有评论

panabit是基于FreeBSD开发的,直接就带有bsnmpd软件包的,于是登录上系统,执行:

echo 'bsnmpd_enable="YES"' >> /etc/rc.conf;
/etc/rc.d/bsnmpd start;

这时可能起不来,是因为/etc/snmpd.config中引用的一个文件/usr/lib/snmp_mibII.so不存在导致的。所以,到处找这个文件呗。我们所用的panabit是FreeBSD9.2的。所以上ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/9.2-RELEASE/把base.txz抓了回来,解开,找到/usr/lib/snmp_mibII.so.6,拷贝到panabit的相应目录下,并在同目录下做一个软链snmp_mibII.so指向snmp_mibII.so.6,再重启bsnmpd

/etc/rc.d/bsnmpd stop;
/etc/rc.d/bsnmpd start;

OK了!
需要注意的是
这里我们并没有修改缺省的community,所以为安全计,还是修改下/etc/snmpd.config的相关部分,再启动bsnmpd为妙。

分类: Open Source 标签: , ,

测一下到底有哪些icp支持edns-client-subnet

2014年1月12日 没有评论

搞这个
首先得编一个支持edns-client-subnet的resolver
网上貌似大家都是用的bind的dig
好嘞,就他了!

cd /opt;
wget ftp://ftp.isc.org/isc/bind9/9.9.3/bind-9.9.3.tar.gz;
tar xzvf bind-9.9.3.tar.gz;
cd bind-9.9.3;
wget http://wilmer.gaa.st/edns-client-subnet/bind-9.9.3-dig-edns-client-subnet-iana.diff;
patch -p0<bind-9.9.3-dig-edns-client-subnet-iana.diff;
./configure --prefix=/opt/bind;
make -j8;
make install;

好,环境准备完毕!(不会只编dig,只好连bind一起都编了:)
据测试:
淘宝是支持edns-client-subnet的;
腾讯也是支持的;
百度也是支持的;
网易的首页是扔给网速的cdn的,网速支持;

分类: Open Source 标签:

用openbts来搭建办公电话系统

2014年1月11日 没有评论

这几天在考察openbts,一种开源的GSM系统
感觉这玩意儿特别适用于自有办公大楼的公司
楼顶上可以架天线
员工不用再没人分一座机
直接用gsm电话就可以了
这样就不会发生打座机对方不在座位时接不到的情况了
而且gsm还可以发短信
其实,据说像某些外企
办公电话都是无线的
到办公室后去哪儿都是随身携带的
而今一些大公司都有很多的固定电话号码资源
完全可以把这些号码赋给这些gsm手机
然后用“固定电话”号码来联系沟通这些办公用“手机”

如果您不知道openbts的话,就去问下google吧

分类: Misc, Open Source 标签:

sysbench测试percona xtradb cluster中每一台的性能

2012年4月8日 没有评论

在centos6.x上

yum install sysbench

的时候因为sysbench会依赖于mysql,而不管是系统自带的原生的mysql-server,还是mysql分支percona-server,都会跟我们装的percona-xtradb-cluster冲突,所以,幸好我找了第四台机器来安装sysbench,具体测试步骤如下:
首先,登录percona xtradb cluster的其中一台机器,这里登node1(10.0.0.1),执行mysql登入

mysql

系统,并创建测试用数据库sbtest并赋予权限给用户sbtest(密码是sbtest)

create database sbtest;
grant privileges on sbtest.* to 'sbtest'@'%' identified by 'sbtest';
flush privileges;

然后,登录第四台机器(ip是10.0.0.4),安装sysbench并跑测试程序。

yum -y install sysbench
sysbench --test=oltp --mysql-host=10.0.0.1,10.0.0.2,10.0.0.3 --mysql-user=sbtest --mysql-password=sbtest --db-driver=mysql prepare
sysbench --test=oltp --mysql-host=10.0.0.1,10.0.0.2,10.0.0.3 --mysql-user=sbtest --mysql-password=sbtest --db-driver=mysql run

这是最后输出的结果:

sysbench 0.4.12:  multi-threaded system evaluation benchmark
 
Running the test with following options:
Number of threads: 1
 
Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
Using "BEGIN" for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 10000
Threads started!
 
Done.
 
OLTP test statistics:
    queries performed:
        read:                            140000
        write:                           50000
        other:                           20000
        total:                           210000
    transactions:                        10000  (21.26 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 190000 (403.93 per sec.)
    other operations:                    20000  (42.52 per sec.)
 
Test execution summary:
    total time:                          470.3826s
    total number of events:              10000
    total time taken by event execution: 470.2785
    per-request statistics:
         min:                                 27.22ms
         avg:                                 47.03ms
         max:                                458.16ms
         approx.  95 percentile:              99.91ms
 
Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   470.2785/0.00

最后,清除测试数据:

sysbench --test=oltp --mysql-host=10.0.0.1,10.0.0.2,10.0.0.3 --mysql-user=sbtest --mysql-password=sbtest --db-driver=mysql cleanup

mysql分支percona的XtraDB Cluster的安装流水账

2012年4月6日 没有评论

3台机器,环境都是Centos6.2 for x86_64,先分别装软件:

rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
yum install sendmail
rpm -e mysql-libs postfix
yum install Percona-XtraDB-Cluster-server Percona-XtraDB-Cluster-client xtrabackup

这里为嘛要装sendmail呢,那是因为mysql-libs被postfix依赖,然后一堆东西都依赖于/usr/bin/sendmail,而如果直接干掉postfix的话,/usr/bin/sendmail也就跟着没了,所以要先装一个sendmail,再干掉postfix,这样的话/usr/bin/sendmail还有,至于为什么要干掉mysql-libs,那是因为跟要装的percona的某个包冲突,其实建议干掉所有的跟mysql相关的包。
接下来,要定制mysql配置文件my.cnf:

cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
vim /etc/my.cnf

在/etc/my.cnf的[mysqld]的段里添加:

# for percona xtradb cluster
wsrep_provider=/usr/lib64/libgalera_smm.so
#wsrep_cluster_address=gcomm://10.0.0.1
wsrep_slave_threads=8
wsrep_sst_method=rsync
#wsrep_sst_method=xtrabackup
wsrep_cluster_name=percona_test_cluster
#wsrep_node_name=node3
binlog_format=ROW
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1

第一台机器(node1,ip地址是10.0.0.1)的不同部分:

wsrep_cluster_address=gcomm://
wsrep_node_name=node1

第二台机器(node2)的不同部分:

wsrep_cluster_address=gcomm://10.0.0.1
wsrep_node_name=node2

第三台机器(node3)的不同部分:

wsrep_cluster_address=gcomm://10.0.0.1
wsrep_node_name=node3

最后分别在三台机器上启动mysql(percona with xtradb)

/etc/rc.d/init.d/mysql start

最后做下简单的测试,分别登上三台机器,执行命令:

mysql

,再用mysql命令:

show databases;

,再在node1上执行mysql命令:

create database testsync;

创建数据库testsync,然后再在其他两台机器上用mysql命令

show databases;

看,会发现多了一个数据库testsync;然后再在第二台机器(node2)上用mysql命令

drop database testsync;

删掉数据库testsync,这下再在第一、三台机器上用mysql命令

show databases;

看,会发现testsync这个库已经被删掉了。

分类: Open Source 标签: , , ,

cacti+spine+其他常用plugins的整合安装

2011年8月20日 没有评论
adduser cacti
cd /tmp
wget http://www.cacti.net/downloads/cacti-0.8.7g.tar.gz
wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7g.tar.gz
wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7g-PA-v2.8.tar.gz
wget http://www.cacti.net/downloads/spine/patches/0.8.7g/unified_issues.patch
cd /opt
tar xzvf /tmp/cacti-0.8.7g.tar.gz
ln -s cacti-0.8.7g cacti
cd cacti
chown -R cacti rra/ log/
mysql

进入mysql交互式模式

CREATE DATABASE cacti;
GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipasswd';
FLUSH privileges;
exit;
mysql cacti<cacti.sql
echo "*/5 * * * * cacti php /opt/cacti/poller.php > /dev/null 2>&1" >> /etc/crontab
echo "Alias \"/cacti\" \"/opt/cacti\"" > /etc/httpd/conf.d/cacti.conf
vim include/config.php

修改文件include/config.php的下面几行如下所示:

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipasswd";
service httpd restart

好啦,cacti设置完了,打开浏览器,输入http://xx.xx.xx.xx/cacti(“xx.xx.xx.xx”是服务器ip)
再一步步走安装,仅需2步吧,就完成安装了,再用admin/admin登录进去,修改密码,就可以用了。
下面再装spine:

分类: Open Source 标签:

用ldapsearch来dump出openldap库里的记录

2011年6月11日 没有评论

  需求来源于我用phpldapadmin来管理openldap库,经常需要添加新的记录(比如有人入职),以前添加记录的脚本(模板)忘了,只能看着以前的记录来添加,其中有个属性叫uidNumber,根据我的理解,这个是uid的id号,这个跟uid一样也是不能重的,所以需要知道已有的最大的uidNumber!于是就像用脚本把所有记录导出来再分析。
  导出记录的命令如下:

ldapsearch -h 192.168.0.1 -p 389 -x -D "cn=root,dc=xxx,dc=com" -w 1111 -b "dc=xxx,dc=cn"

  其中,”192.168.0.1″是openldap server的ip,由于未启用tls加密,所以还要加参数”-x”,”cn=root,dc=xxx,dc=com”是rootdn;1111是密码

Linux主机安全

2011年5月12日 没有评论

Linux主机安全

如果服务器都在防火墙的保护下,主机这个层面的安全可以做的不那么苛刻。但是本着一切靠自己的原则,在主机这个层面把安全方面的工作先做充分了,反正这也是有百利而无一害的。

基本原则

  1. 及时更新服务软件包,以防止最新威胁
  2. 尽可能使用安全的协议
  3. 严格监控所有的服务器以便及时发现问题
  4. 关注最新安全信息

帐号安全

  • 每个需要登录的用户一个独立的普通帐号;每个服务使用单独的帐号(没有设置密码、没有合法的shell,不能登录)
  • 如果实在需要ftp服务,ftp的用户使用虚拟帐号
  • 禁止除了root、系统维护人员帐号之外其他所有系统帐号使用shell的权限
  • 锁定临时不用的帐号
  • 系统管理员离职要及时修改超级密码
  • 普通用户离职要及时删除其帐号

口令安全

因为我们都是public_key认证,所以这块儿基本上就是超级用户的口令安全。

  1. 定时重新生成超级用户口令(用密码生成器生成,综合数字、大小写字母以及特殊字符的组合,10字符以上)
  2. 定时重新生成普通用户密钥对

系统参数、属性安全设置

1,TMOUT:设置这个环境变量以防用户忘记退出登录,例如:

export TMOUT=3600

当需要保持session的时候,请用命令screen新建一个screen来实现。

2,更改shell的历史的格式
修改文件/etc/profile,设置HISTTIMEFORMAT为'<%F %T>’

远程登录安全

禁止root直接登录

修改文件/etc/ssh/sshd_config,设置:PermitRootLogin: no

sshd绑定私网网卡

修改文件/etc/ssh/sshd_config,设置:ListenAddress为私网网卡地址

public_key认证用户

不用任何修改,缺省就是支持的。

启动服务安全

在缺省启动里去除不需要的服务

Linux(不管是哪个发行版)启动都会缺省起好些服务,其中有很大一部分都不是 必须要起的,这样既浪费资源,又影响安全(尤其是开tcp端口的服务),于是不管怎样,都要把不需要的服务从缺省启动里干掉。方法主要是:使用 ntsysv命令,把不是必须要起的服务都取消勾选,然后再重启机器(如果允许的话,否则用命令service xxx stop一个一个的停服务)

启动服务最小化

  • 尽量禁止ftp服务,取而代之的是sftp或winscp,或者rz和sz这样利用xmodem的程序
  • mysql如果仅本机用,推荐skip-networking,用unix socks来连(这样性能还更好),否则,也只能听在私网网卡上,绝对不要开在公网上
  • 使用开源的代码的web服务,尽量不要在公网上提供服务(比如phpmyadmin,比如本站用的dokiwiki)
  • 只有对最终用户服务的应用,才能开服务端口于公网上。最理想的情况是在公网网卡上最多只开一个tcp80端口(管理口、数据口都是开在私网上的)

web应用安全

mod_security

基于国外基本上所有的虚拟主机提供商都会启用一种第三方的apache模块儿:mod_security,而且国内业界对其也很推崇,有人说,国内大 多的web防火墙都是基于这个(mod_security)改的。既然评价这么高,我曾想过在公司的web server上推这个东东的,但是结果是:缺省的策略非常不好用,很多开源的应用基本上都跑不了,所以……,还需要好好研究下mod_security, 定制一套适合我们的策略之后,才能在我们的web server上推广使用。

php的安全模式

相对mod_security的缺省设置的不好用,php的安全模式应该还是温和很多的,在忠波同学的强力推荐下,我觉得这个东西还是值得一推的。关 键是要在开发阶段就在开发服务器上把这个(php的安全模式)打开,最后才能在上线的时候在线上服务器上打开(php的安全模式)

日志安全

本地保留日志,同时日志还同步汇总到日志服务器。

kernel及tcp/ip安全

net.ipv4.ip_forward = 0    /* 可忽略,因为缺省就是0 */
net.ipv4.tcp_syncookies = 1    /* 防syn flood攻击 */
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.vs.timeout_timewait = 60

这部分内容可以直接写入/etc/sysctl.conf文件中。

系统自我检测

  • 每台机器安装tripwire来保持系统完整性
  • 每台机器定时使用tiger之类的本地检测工具自检

iptable策略

  • 接受从lo界面上进来的数据包
  • 接受从私网网卡(一般是eth1)上进来且源地址是私网地址的数据包(这里可以配置的更严厉一些)
  • 接受从公网网卡(一般是eth0)上进来且源地址不是私网地址且目标端口是22、80等端口的数据包
  • 接受状态是关联的或已建立连接的数据包
  • 其他包都drop掉

网络安全

刨除系统层面的安全,网络安全也是非常重要的。

内外网分离

只有内外网彻底分离了,才能保证内网上流动的敏感信息的安全。

入侵监测系统(ids)的搭建

机房网络上会部署入侵检测系统(ids),用来检测网络安全问题。

分类: Open Source 标签: ,

用preseed做了一个debian的usb安装盘

2010年12月11日 没有评论

  第一步,usb盘分区
  在Linux下用fdisk将usb盘一个Fat16的分区(假设是/dev/sdb1)并将其设为可启动
  第二步,格式化分区

mkdosfs /dev/sdb1

如果没有mkdosfs命令的话请先apt-get install dosfstools安装
  第三步,安装syslinux到usb硬盘

syslnux /dev/sdb1

如果没有syslinux命令的话,请先 apt-get install mtools 安装
  第四步,下载所需要的vmlinux、initrd.gz和相应的iso文件到usb盘

mount /dev/sdb1 /mnt;cd /mnt;wget ftp://ftp.debian.org/debian/dists/lenny/main/installer-amd64/current/images/hd-media/vmlinuz;wget ftp://ftp.debian.org/debian/dists/lenny/main/installer-amd64/current/images/hd-media/initrd.gz;wget http://cdimage.debian.org/debian-cd/5.0.7/amd64/iso-cd/debian-507-amd64-CD-1.iso

  第五步,创建需要的syslinux配置文件syslinux.cfg
cd /mnt;vim syslinux.cfg
使得其中有如下几句:

default vmlinuz
append initrd=initrd.gz preseed/file=/hd-media/preseed.cfg

即可
  第六步,安装mbr到usb盘

umount /mnt;install-mbr /dev/sdb

如果没有命令install-mbr的话请先apt-get install mbr
我的preseed.cfg的例子

hiphop for php from facebook

2010年2月11日 没有评论

hiphop for php是facebook开发的一款的php转换软件
他能将php代码转换成高度优化的c++代码
然后再用g++编译成二进制文件
用这样得到的二进制文件跑在服务器上取代php代码以提高性能
据说能将系统的cpu占有率降低50%

BTW:
据说hiphop for php将在2010年早期由facebook放出
我们拭目以待