阿辉的博客

系统 网络 集群 数据库 分布式云计算等 研究

OpenVPN使用User/Pass验证登录

OpenVPN使用User/Pass验证登录

在之前的OpenVPN+CA中已经介绍了使用CA验证登录的方式,详见:
http://bbs.chinaunix.net/forum/viewtopic.php?t=503434&show_type=new

本文主要介绍使用Username/Password方式验证登录VPN的方法,虽然使用的是User/Pass
方式登录,但是在Server端仍然需要证书,这样的VPN和web的HTTPs方式有点类似(不能等同),
只需Server端有证书,Client可以不提供自己的证书,Client只需验证Server的合法性即可,
所以Client端只需ca.crt(根证书)即可。当然,由于Client不是使用证书验证的,所以安全
性方面必然有所下降,但是省去了烦琐的CA管理,我们可以通过用户名和密码来登录VPN,
这样使得VPN可以很容易和论坛、邮件系统或者其他统一验证系统结合,使用现成的管理界面。

关于VPN的一些初步认识,可以从下面这个URL获得:(E文的)
http://blog.chinaunix.net/resserver.php?blogId=2389&resource=OpenVPN%20and%20the%20SSL%20VPN%20Revolution.pdf
原文出自:
http://www.giac.org/certified_professionals/practicals/gsec/3985.php
文中觉得很有意义的语句是: A VPN is a site-to-site tunnel. Let me say that one more time, a VPN is a site-to-site tunnel.
这篇文章介绍了OpenVPN1.x,也简单介绍了OpenVPN 2.x的一些新特性,同时也简单的介绍了
其他VPN以及不同方式实现的VPN产品、软件,有时间看看是很有必要的。

关于VPN比较通俗的理解,在OpenVPN的FAQ中找到的:
Imagine you had a direct physical wire (i.e. a long cable) connecting two computers (A and B) at different locations. On each computer there would be a /dev/longcable which would be a network device. You could route IP traffic over it, and do everything you could normally do with a network device.

下面开始介绍VPN的安装和配置:

环境:
OS: FC2 (在公司网络出口处,作路由或者是NAT设备使用)
eth0: 61.1.1.2 (外网地址,直接与Internet相连)
eth1: 192.168.0.1 (内网地址,连接公司内部,假设公司内部使用192.168.0.0/22这4个C地址)

Client端硬件及网络环境配置:
OS: Windown 2000 XP 为主,部分Linux (配置文件通用)
单网卡,IP地址不固定

需要达到的目的:
VPN Client可以随处通过User/Pass登录VPN,访问内网资源。

Server端配置

首先检查pam-devel包是否安装,否则从系统盘安装改软件包
[root@vpn ~]# rpm -qa | grep pam
pam_smb-1.1.7-3.1
pam-0.77-40
pam_krb5-2.0.10-1
pam-devel-0.77-40
[root@vpn ~]#

检查Mysql是否安装,确认mysql-devel包已经安装,否则从系统盘安装改软件包
[root@vpn ~]# rpm -qa | grep mysql
mysql-3.23.58-9
mysql-server-3.23.58-9
mysql-devel-3.23.58-9
[root@vpn ~]#

检查lzo包是否有安装,如果没有,可以到http://rpmfind.net去找
[root@vpn ~]# rpm -qa | grep lzo
[root@vpn ~]# wget
[root@vpn ~]# rpm -ivh lzo-1.08-3.1.fc2.dag.i386.rpm
[root@vpn ~]# wget
[root@vpn ~]# rpm -ivh lzo-devel-1.08-3.1.fc2.dag.i386.rpm
[root@vpn ~]# rpm -qa | grep lzo
lzo-devel-1.08-3.1.fc2.dag
lzo-1.08-3.1.fc2.dag
[root@vpn ~]#

下面开始编译安装OpenVPN
[root@vpn ~]# wgethttp://mesh.dl.sourceforge.net/sourceforge/openvpn/openvpn-2.0_rc16.tar.gz
[root@vpn ~]# rpmbuild -tb openvpn-2.0_rc16.tar.gz
[root@vpn ~]# cd /usr/src/redhat/RPMS/i386/
[root@vpn /usr/src/redhat/RPMS/i386]# rpm -ivh openvpn-2.0_rc6-1.i386.rpm

为了能使用OpenVPN的PAM验证插件,我们安装pam_mysql使用MySQL数据库存储用户数据,其它数据库可以找相应的PAM验证模块
[root@vpn ~]# wgethttp://internap.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz
[root@vpn ~]# tar -zxvf pam_mysql-0.5.tar.gz
[root@vpn ~]# cd pam_mysql
[root@vpn ~]# make
[root@vpn ~]# cp pam_mysql.so /lib/security/

配置数据库
以管理员身份登录数据库:
mysql> create database vpn;
mysql> GRANT ALL ON vpn.* TO vpn@localhost IDENTIFIED BY ‘vpn123’;
mysql> flush privileges;
mysql> use vpn;
mysql> CREATE TABLE vpnuser (
   ->   name char(20) NOT NULL,
   ->   password char(128) default NULL,
   ->   active int(10) NOT NULL DEFAULT 1,
   ->   PRIMARY KEY (name)
   -> );
mysql> insert into vpnuer (name,password) values(‘elm’,password(‘elm’));

#创建vpn用户,对vpn这个database有所有操作权限,密码为vpn123
#active不为1,无权使用VPN
#增加用户 用户名:elm 密码:elm

配置pam_mysql模块
创建/etc/pam.d/openvpn文件,文件内容如下:
===================CUT Here================
auth    sufficient      pam_mysql.so                    user=vpn passwd=vpn123 host=localhost db=vpn
       table=vpnuser usercolumn=name passwdcolumn=password
       where=active=1 sqllog=0 crypt=2
account required        pam_mysql.so                    user=vpn passwd=vpn123 host=localhost db=vpn
       table=vpnuser usercolumn=name passwdcolumn=password
       where=active=1 sqllog=0 crypt=2
==================Cut Here=================
crypt(0) — Used to decide to use MySQL’s PASSWORD() function or crypt()
           0 = No encryption. Passwords in database in plaintext. NOT recommended!
           1 = Use crypt
           2 = Use MySQL PASSWORD() function

下面可以测试pam_mysql是否工作正常,先检查saslauthd是否安装:
[root@vpn ~]# rpm -qa | grep sasl
cyrus-sasl-plain-2.1.18-2
cyrus-sasl-md5-2.1.18-2
cyrus-sasl-devel-2.1.18-2
cyrus-sasl-2.1.18-2
[root@vpn ~]#

有cyrus-sasl-2.1.18-2应该就可以了,如果没有请安装相应的软件包,不安装也行,可以通过其它方法测试

[root@vpn ~]# saslauthd -a pam
[root@vpn ~]# testsaslauthd -u elm -p elm -s openvpn
0: OK "Success."
[root@vpn ~]#

恭喜,pam_mysql工作正常了,下面可以开始配置OpenVPN服务器了。

配置VPN Server:
[root@vpn /usr/src/redhat/RPMS/i386]# cd
[root@vpn ~]# cp -r /usr/share/openvpn/easy-rsa/ /etc/openvpn/
[root@vpn ~]# cd /etc/openvpn/easy-rsa/
[root@vpn /etc/openvpn/easy-rsa]# vi vars
修改vars 文件
—————————————–
# 定义你所在的国家,2个字符
export KEY_COUNTRY=CN
# 你所在的省份
export KEY_PROVINCE=Liaoning
# 你所在的城市
export KEY_CITY=Shenyang
# 你所在的组织
export KEY_ORG="ELM OpenVPN ORG"
# 你的邮件地址
export KEY_EMAIL="elm@elm.freetcp.com"
—————————————–

#使修改的环境变量生效

[root@vpn /etc/openvpn/easy-rsa]# . vars
NOTE: when you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

#初始化keys目录

[root@vpn /etc/openvpn/easy-rsa]# ./clean-all

#生成Root CA证书,用于签发Server和Client证书,请保护好keys/ca.key文件。

[root@vpn /etc/openvpn/easy-rsa]# ./build-ca
Generating a 1024 bit RSA private key
……………………++++++
………….++++++
writing new private key to ‘ca.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [CN]: #如果无需修改,直接回车
State or Province Name (full name) [Liaoning]:
Locality Name (eg, city) [Shenyang]:
Organization Name (eg, company) [ELM OpenVPN ORG]:
Organizational Unit Name (eg, section) []: OpenVPN Service
Common Name (eg, your name or your server’s hostname) []:OpenVPN Root CA
Email Address [elm@elm.freetcp.com]:

#查看生成的keys

[root@vpn /etc/openvpn/easy-rsa]# ls keys
ca.crt ca.key index.txt serial

#我们可以看到ca.crt ca.key文件已经生成了。
#面我们为服务器生成 Diffie-Hellman 文件
#TLS server 需要使用的一个文件

[root@vpn /etc/openvpn/easy-rsa]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..+……………………………………………………..+……………..
……………………………………………+….+……..+………+…….
………………………………………+.+……………………………..
………………………………………………………………………..
……………………………………..+………………………………..
.+……………………………+………….+……………………………
…………………………………………+…………………………….
…………………+………………………..++*++*++*

#创建并签发VPN Server使用的CA
# `server’ 为创建后的文件名,分别为server.crt server.key

[root@vpn /etc/openvpn/easy-rsa]# ./build-key-server server
Generating a 1024 bit RSA private key
………………….++++++
……………++++++
writing new private key to ‘server.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Liaoning]:
Locality Name (eg, city) [Shenyang]:
Organization Name (eg, company) [ELM OpenVPN ORG]:
Organizational Unit Name (eg, section) []:OpenVPN Service
Common Name (eg, your name or your server’s hostname) []:Server No.1
Email Address [elm@elm.freetcp.com]:

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’CN’
stateOrProvinceName :PRINTABLE:’Liaoning’
localityName :PRINTABLE:’Shenyang’
organizationName :PRINTABLE:’ELM OpenVPN ORG’
organizationalUnitName:PRINTABLE:’OpenVPN Service’
commonName :PRINTABLE:’Server No.1′
emailAddress :IA5STRING:’elm@elm.freetcp.com’
Certificate is to be certified until Feb 26 14:43:44 2015 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

#为防止恶意攻击(如DOS、UDP port flooding),我们生成一个"HMAC firewall"

[root@vpn /etc/openvpn/easy-rsa]# openvpn –genkey –secret keys/ta.key

#Server使用的配置文件server.conf
—————-CUT Here————-
port 1194
;proto tcp
proto udp
;dev tap
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.0.0
ifconfig-pool-persist ipp.txt
;client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0
plugin ./openvpn-auth-pam.so openvpn
client-cert-not-required
username-as-common-name
comp-lzo
;max-clients 100
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
;log         /var/log/openvpn.log
;log-append  openvpn.log
verb 4
;mute 20
————–Cut Here—————–

;client-to-client #如果让Client之间可以相互看见,去掉本行的注释掉,否则Client之间无法相互访问
;duplicate-cn  #是否允许一个User同时登录多次,去掉本行注释后可以使用同一个用户名登录多次
plugin ./openvpn-auth-pam.so openvpn #说明使用的插件,openvpn为插件的参数,使用pam的servicesname
client-cert-not-required #不请求客户的CA证书,使用User/Pass验证
username-as-common-name #使用客户提供的UserName作为Common Name

把server.conf文件保存到/etc/opennvpn目录中,并把使用easy-rsa下的脚本什成的key都复制到/etc/openvpn目录下,命令如下:  
[root@vpn /etc/openvpn/easy-rsa]# cp keys/ca.crt ../
[root@vpn /etc/openvpn/easy-rsa]# cp keys/server.crt ../
[root@vpn /etc/openvpn/easy-rsa]# cp keys/server.key ../
[root@vpn /etc/openvpn/easy-rsa]# cp keys/dh1024.pem ../
[root@vpn /etc/openvpn/easy-rsa]# cp keys/ta.key ../
[root@vpn /etc/openvpn/easy-rsa]# cp /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so ../

#立即启动openenvpn
[root@vpn /etc/openvpn/easy-rsa]# /etc/init.d/openvpn start

#接下来配置客户端的配置文件client.conf:
#Linux或Unix下使用扩展名为.conf Windows下使用的是.ovpn,并把需要使用的文件复制到配置文件所在目录ca.crt ta.key
————-Cut Here———————
client
;dev tap
dev tun
;proto tcp
proto udp
remote 61.1.1.2 1194
;remote my-server-2 1194
remote-random
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
auth-user-pass
ns-cert-type server
tls-auth ta.key 1
route 192.168.0.0 255.255.252.0
comp-lzo
verb 4
;mute 20
————Cut Here———————–

auth-user-pass #询问用户名和密码

Linux下Client的OpenVPN的安装方法一样,只是配置文件和keys上的不同,只要把client.conf ca.crt ta.key复制到/etc/openvpn目录即可启动VPN。
Win下OpenVPN的安装,WIN下有图形界面的OpenVPN-GUI程序,下载地址http://openvpn.se

这里使用的是TUN设备,主要考虑到Client客户多,VPN的效率和广播的问题,选用TUN设备,因为客户端可能是
Windows系统,Win系统TUN设备获得的IP地址将会是/30的地址,所以有3*Client个地址浪费,所以地址池设置得比较大。

这样你每次使用VPN登录的时候,程序会自动询问你得用户名和密码,输入正确后就可以连接上VPN了,
连接VPN后所有访问内网(192.168.0.0/22)的数据都从VPN经过。
如果Win的Client比较多,可以试着把ca.crt ta.key client.ovpn打包到安装包程序里,具体操作方法参见:

http://openvpn.se/files/howto/openvpn-howto_roll_your_own_installation_package-Rev1.1.html

然后发布改软件包即可,最好小心保管ta.key文件(防止Dos攻击)。

#首先要把系统的Forward打开
[root@vpn /etc]# vi sysctl.conf
修改
# Controls IP packet forwarding
net.ipv4.ip_forward = 1

#IPTABLES的配置文件
[root@vpn /etc/sysconfig]# cat iptables
# Generated by iptables-save v1.2.1a on Tue Nov  6 19:50:51 2001
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/255.255.252.0 -o eth0 -j SNAT –to-source 61.1.1.2
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:BLOCK – [0:0]
:ANTIVIRUS – [0:0]
# block internal ip address
-A INPUT -i lo -j ACCEPT
-A INPUT -j BLOCK
-A INPUT -j ANTIVIRUS

-A BLOCK -s 192.168.0.0/16 -d 0/0 -j RETURN
-A BLOCK -s 172.16.0.0/12 -d 0/0 -j REJECT
-A BLOCK -s 10.0.0.0/8 -d 0/0 -j RETURN
-A BLOCK -s 127.0.0.0/8 -d 0/0 -j REJECT
-A BLOCK -s 0.0.0.0/8 -d 0/0 -j REJECT
-A BLOCK -s 169.254.0.0/16 -d 0/0 -j REJECT
-A BLOCK -s 192.0.2.0/24 -d 0/0 -j REJECT
-A BLOCK -s 204.152.64.0/23 -d 0/0 -j REJECT
-A BLOCK -s 224.0.0.0/3 -d 0/0 -j REJECT

-A INPUT -p icmp -j ACCEPT

# OSPFD
-A INPUT -d 224.0.0.0/24 -j ACCEPT

# sync time
-A INPUT -p udp -m udp –sport 123 -j ACCEPT

# accept dns
-A INPUT -p udp -m udp –sport 53 -j ACCEPT

# accept ssh from any
-A INPUT -p tcp -m tcp –dport 22 –syn -j ACCEPT

# accept dhcp request
-A INPUT -p udp -m udp –dport 67 -j ACCEPT

# OpenVPN 1194_UDP
-A INPUT -p udp -m udp –dport 1194 -j ACCEPT

# www
-A INPUT -p tcp -m tcp –dport 80 –syn -j ACCEPT

# keep stats
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state –state INVALID -j DROP

# Reject all packet to me
-A INPUT -p tcp -m tcp –syn -j REJECT –reject-with tcp-reset
-A INPUT -p udp -m udp -j REJECT

-A FORWARD -j ANTIVIRUS

-A ANTIVIRUS -p tcp -m tcp –dport 135:139 -j DROP
-A ANTIVIRUS -p tcp -m tcp –dport 445 -j DROP
-A ANTIVIRUS -p udp -m udp –dport 69 -j DROP
-A ANTIVIRUS -p udp -m udp –dport 135:139 -j DROP
-A ANTIVIRUS -p udp -m udp –dport 1434 -j DROP

COMMIT
[root@vpn /etc/sysconfig]#

本文是本人在实验+一字一句的敲上去,如果转载,麻烦注明出处,谢谢

zend解密方法

zend解密方法

解密ZEND加密后的PHP
先下载http://pecl.php.net/get/vld-0.8.0.tgz

执行
#tar -xzf vld-0.8.0.tgz //解压
#mv vld-0.8.0 vld //重命名
#cd -R vld ../php-4.3.8/ext //拷贝vld目录到php的解压目录下的ext中
#cd php-4.3.8
#rm configure //删除configure,因为下面的buildconf会重新生成新的configure
#./buildconf //如果出现错误,就按提示加上相应的参数.
#./configure –with-mysql –with-apxs2=/usr/www/bin/apxs –enable-vld 重新检查php
#make 编译
#make install 安装

服务器必须先安装ZendOptimizer
运行Zend后的文件,查看源代码就可以看到了

Nagios的布署方案

1、Nagios是一个具有很大可伸缩性的集中式系统管理工具.
3、Naigos的安装
1、 所需软件
nagios-2.0rc2.tar
nagios-plugins-1.4.tar
imagepak-base.tar.gz
2、 安装
2.1、nagios安装
tar –xvzf nagios-2.0rc2.tar
mkdir /usr/local/nagios
pw useradd nagios –d /usr/local/nagios

pw addgroup root
chmod 755 /usr/local/nagios
cd nagios-2.0rc2
./configure –prefix=/usr/local/nagios –with-gd-lib=/usr/local/lib –with-gd-inc=/usr/local/include
make all
make install       
make install-init     ##This installs the init script in /usr/local/etc/rc.d
make install-commandmode 
make install-config    ##将初始的配置文件安装到/usr/local/nagios/etc
注:在makeinstall-init这一步的时候可能会进行不下去,这时只要加个root组即可。
pw addgroup root
2.2、nagios-plugins的安装
tar –xvzf nagios-plugins-1.4.tar
mkdir /usr/local/nagios-plugins
cd nagios-plugins-1.4
./configure –prefix=/usr/local/nagios-plugins
make all
make install
安装完成以后在/usr/local/nagios-plugins会产生一个libexec的目录,将该目录全部移动到/usr/local/nagios目录下
mv /usr/local/nagios-plugins/libexec /usr/local/nagios
2.3、imagepak-base的安装
tar –xvzf imagepak-base.tar.gz
解压以后是base目录
cp –R base /usr/local/nagios/share/images/logos
2.4、安装过程全部结束
4、Nagios的设定:
1、配置apache
在apache的配置文件httpd.conf中追加
ScriptAlias /nagios/cgi-bin/ /usr/local/nagios/sbin/
<Directory "/usr/local/nagios/sbin/">
AllowOverride AuthConfig
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
Alias /nagios/ /usr/local/nagios/share/
<Directory "/usr/local/nagios/share">
Options None
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

2、设置访问权限
2.1、在/usr/local/nagios/share目录下
vi .htaccess
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/.htpasswd
require valid-user
2.2、在/usr/local/nagios/sbin目录下
vi .htpasswd
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/.htpasswd
require valid-user
2.3、/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/.htpasswd nagios
这个apache目录根据安装目录的不同而不同,主要所以用.htpasswd这个命令生成用户名和密码

3、配置nagios
3.1、在/usr/local/nagios/etc下是nagios的配置模板文件.cfg-sample,把.cfg-sample文件全部拷贝成.cfg
例如:cp nagios.cfg-sample nagios.cfg
全部拷贝完成即可.
3.2、vi dependencies.cfg (在2.0没有生成这个文件,自己创建)
然后保存即可.(在1.2用一个空的文件代替原来的dependencies.cfg文件,否则会出错)
3.3、修改minimal.cfg,把里面所有定义command的全部注释掉
vi /etc/minimal.cfg
修改cgi.cfg
修改use_authentication=1为use_authentication=0,即不用验证.不然有一些页面不会显示。
3.4、然后检查配置文件是否出错
/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg
出现Total Warnings: 0
Total Errors:  0
为正常
出错的话,就是.cfg文件有问题
3.5、启动后台进程 
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
/usr/local/etc/rc.d/nagios start
3.6、http://10.4.8.81/nagios/index.html
(如果有些页面看不到的话.可以在cgi.cfg文件中
把带有authorized的选项前的#号去掉即可)

这些配置完以后,基本的nagios配置完成。
5、NRPE的安装.及监按指令的布署
nrpe 安装与使用
1、远程主机的配置(FreeBSD)
1.1、安装openssl
#./config –prefix=/usr/local/nagios/openssl
#make
#make install
1.2、安装nrpe与配置
#./configure –enable-ssl –with-ssl-lib=/usr/local/nagios/openssl/lib–with-kerberos-inc=/usr/local/nagios/openssl/include –enable-command-args
#make all
#mkdir /usr/local/nagios/etc
#mkdir /usr/local/nagios/bin
#mkdir /usr/local/nagios/libexec
#chown -R nagios:nagios /usr/local/nagios
#cp nrpe.cfg /usr/local/nagios/etc
#cp src/nrpe /usr/local/nagios/bin
#vi /usr/local/nagios/etc/nrpe.cfg
改成你允许的IP
allowed_hosts=127.0.0.1,10.0.153.57(57是nagios服务器)
改成你准备监视的服务
command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
检查磁盘,当 / 剩余$ARG1$%报警(浅黄色),剩余$ARG2$%“出错”(红色)-p 后为指定分区

1.3、启动nrpe,端口为5666
/usr/local/nagios/bin/nrpe -c /etc/nrpe.cfg -d
1.4、安装监测的模块
nagios-plugins的安装
tar –xvzf nagios-plugins-1.4.tar
mkdir /usr/local/nagios-plugins
cd nagios-plugins-1.4
./configure –prefix=/usr/local/nagios-plugins
make all
make install
安装完成以后在/usr/local/nagios-plugins会产生一个libexec的目录,将该目录全部移动到/usr/local/nagios目录下
mv /usr/local/nagios-plugins/libexec /usr/local/nagios
2、服务器上的配置
2.1、安装openssl
#./config –prefix=/usr/local/nagios/openssl
#make
#make install
2.2、安装nrpe(主要是使用check_nrpe模块)
#./configure –enable-ssl –with-ssl-lib=/usr/local/nagios/openssl/lib –with-kerberos-inc=/usr/local/nagios/openssl/include –enable-command-args
#make all
#cp src/check_nrpe /usr/local/nagios/libexec
2.3、nagios文件的配置
vi checkcommands.cfg
定义check_nrpe命令
# ‘check_nrep’ command definition
define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
定义检查远程主机服务
vi lgweb.cfg
define service{
use               lgweb-service     ; Name of service template to use
host_name            120
service_description       disk
is_volatile           0
check_period          24×7
max_check_attempts       3 #最大重试次数
normal_check_interval      2 #正常检测时间为2分钟
retry_check_interval      1 #重试时间1分重
notification_options      w,u,c,r
notification_interval      10
notification_period       24×7
check_command         check_nrpe!check_disk!20%!10%
}

2.4、重启nagios服务
/etc/rc.d/init.d/nagios restart (linux)
/usr/local/etc/rc.d/nagios restart (freebad)
以监控一台主机(120)为例:〔注:红色为需要注意的地方〕
1.在 Nagios主机上:
root@db4 etc]#vi /usr/local/nagios//etc/lgweb.cfg
加入以代码:
#定义监测时间
define timeperiod{
timeperiod_name lgweb24x7 #名称
alias      lgweb,7 Days A Week
sunday     00:00-24:00
monday     00:00-24:00
tuesday     00:00-24:00
wednesday    00:00-24:00
thursday    00:00-24:00
friday     00:00-24:00
saturday    00:00-24:00
}
#定义联系小组及小组内成员
define contactgroup{
contactgroup_name    LDF-SYS
alias          LDF-SYS Administrators
members         lgweb ;
}
#定义联系成员
define contact{
contact_name          lgweb
alias              lg
service_notification_period   24×7
host_notification_period    24×7
service_notification_options  w,u,c,r
host_notification_options    d,u,r
service_notification_commands  notify-by-email
host_notification_commands   host-notify-by-email
email              lg@china-lg.com
}
#定义主机组及组内的主机
define hostgroup{
hostgroup_name lgwebgrou
alias      lgweb Servers
members     120 ;
}
#定义主机类型
define host{
name              lgweb-host  
notifications_enabled      1   
#可以发通告(邮件),0为关闭
active_checks_enabled      1  #主动模式打开,0为关闭 
event_handler_enabled      1   
flap_detection_enabled     1   
failure_prediction_enabled   1   
process_perf_data        1  
retain_status_information    1   
retain_nonstatus_information  1  
register            0
}
#定义服务组及组内服务名.
define servicegroup{
servicegroup_name    services
alias    Mysql Http services
members    120,LD_PING #主机名,服务
}
#定义服务类型   
define service{
name              lgweb-service
passive_checks_enabled     0   #打开被动检查模式,0为关闭
active_checks_enabled      1   #打开主动检查模式,0为关闭
parallelize_check        1  
obsess_over_service       1   
check_freshness         1   
notifications_enabled      1   #允许通告(邮件),0为关闭
event_handler_enabled      1   
flap_detection_enabled     1   
failure_prediction_enabled   1   
process_perf_data        1   
retain_status_information    1   
retain_nonstatus_information  1   
register            0   
}
以120为例
#############################################
#10.1.1.120

define host{
use           lgweb-host   #前面所定义的主机名   
host_name        120    #前面主机组内所定义的主机名
alias          DB
address         10.1.1.120
check_command      check-host-alive #
max_check_attempts   10
notification_interval  1 ;120
notification_period   24×7
notification_options  d,u,r
contact_groups     LDF-SYS #前面定义过的联系小组
}

define service{
use               lgweb-service   #前面所定义的服务名  
host_name            120
service_description       LD_PING #前面服务组内所定义的服务名
is_volatile           0
check_period          24×7
max_check_attempts       1
normal_check_interval      2
retry_check_interval      1
notification_options      w,u,c,r #通知类型
notification_interval      10;960 #通知(发送邮件)间隔的时间10分钟
notification_period       24×7 #
check_command          LD_check_ping#LD_checkcommad.cfg中定以的指令名
}
root@d etc]#vi /usr/local/nagios//etc/LD_checkcommad.cfg
加入以代码:
define command{
command_name  LD_check_ping
command_line  /usr/local/nagios/libexec/LD/LD_check.sh -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}
root@db4 etc]#cfg=” cfg_file=/usr/local/nagios//etc/lgweb.cfg”
root@db4 etc]#cfg_amd=” cfg_file=/usr/local/nagios//etc/LD_checkcommad.cfg”
root@db4 etc]# echo “$cfg” >> /usr/local/nagios/etc/nagios.cfg
root@db4 etc]# echo “$cfg_amd” >> /usr/local/nagios/etc/nagios.cfg
root@db4 etc]#/etc/init.d/nagios start

编写js脚本定时删除IIS日志

服务器每天都得产生好几个G的日志文件,一般一周就要清理一次,否则磁盘很容易满。

今天在网上找了一个js脚本可以清理IIS Log,可写在一个文件内用计划任务定时执行。

function dellogfile(beforedays,dirname) {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var dir = fso.GetFolder(dirname); //改成你的 IIS 日志目录
    var fc = new Enumerator(dir.SubFolders);
    for (;!fc.atEnd(); fc.moveNext()) {
        if (fc.item().name.substr(0,5) == "W3SVC") {
            var logfiles = new Enumerator(fc.item().Files);
            for (;!logfiles.atEnd(); logfiles.moveNext()) {
                var fileName = logfiles.item().name;
                var year = "20" + fileName.substr(2, 2);
                var mouth = fileName.substr(4, 2);
                var day = fileName.substr(6, 2);
                var days = Math.round(((new Date()).getTime() – Date.UTC(year, mouth – 1,day)) / 1000 / 60 / 60 / 24);
                if (days >= beforedays) logfiles.item().Delete();
            }
        }
    }
}

dellogfile(7,"d:iislogs");

在控制台执行时的命令为:

c:>cscript  scriptname.js

pptpd+radius+mysql 安装攻略(part3 mysql部分)

pptpd+radius+mysql  安装攻略(part3 mysql部分)

2006.02.10 by i_amok  

1.需要软件,什么都不需要。

你只要给各mysql的库就好了,库结构在

freeradius源码目录下的/src/modules/rlm_sql/drivers/rlm_sql_mysql/db_mysql.sql

你建立一个数据库就好了,我在我自己的机器上建立了一个名字为radius的数据库

并且导入了这个数据库的结构。

2。配置sql.conf

先回到刚才的freeradius的配置文件目录

CODE:[Copy to clipboard]cd /usr/local/freeradius-1.1.0/etc/raddbvi sql.conf

修改连接信息

CODE:[Copy to clipboard]        # Connect info
        server = "192.168.8.53"
        login = "radius"
        password = "radius"

        # Database table configuration
        radius_db = "radius"去掉下面的simul。。。。前面的#
打开sql的用户同时连接数测试的语句

CODE:[Copy to clipboard]        # Uncomment simul_count_query to enable simultaneous use checking
         simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName=’%{SQL-User-Name}’ AND AcctStopTime = 0"3.配置radiusd.conf

注释掉 authorize {
的files
去掉sql前的注释

注释掉 preacct {
的files

注释掉 accounting {
的radutmp
去掉sql前面的#

注释掉 session{
的radutmp
去掉sql前面的#

去掉 post-auth {
sql前的#

总之就是去掉files模块,开启sql模块

4。在数据库中添加用户

在usergroup中添加一个test用户,组名为vpn

在radgroupcheck中添加一个vpn组,
attribute为Simultaneous-Use
op为:=
value为1
的纪录

在radcheck中添加
username为test
attribute为 User-Password
op为==
value为test

这样就添加了一个用户为test,组为vpn,密码为test
并且所有的组用户的都只能1个用户名登陆一次

5.测试
用debug模式启动radiusd

会看到

CODE:[Copy to clipboard][root@kdfng raddb]# ../../sbin/radiusd -x
Starting – reading configuration files …
Using deprecated naslist file.  Support for this will go away soon.
Module: Loaded exec
rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Module: Instantiated exec (exec)
Module: Loaded expr
Module: Instantiated expr (expr)
Module: Loaded PAP
Module: Instantiated pap (pap)
Module: Loaded CHAP
Module: Instantiated chap (chap)
Module: Loaded MS-CHAP
Module: Instantiated mschap (mschap)
Module: Loaded eap
rlm_eap: Loaded and initialized type md5
rlm_eap: Loaded and initialized type leap
rlm_eap: Loaded and initialized type gtc
rlm_eap: Loaded and initialized type mschapv2
Module: Instantiated eap (eap)
Module: Loaded preprocess
Module: Instantiated preprocess (preprocess)
Module: Loaded SQL
rlm_sql (sql): Driver rlm_sql_mysql (module rlm_sql_mysql) loaded and linked
rlm_sql (sql): Attempting to connect to radius@192.168.8.53:/radius
rlm_sql (sql): starting 0
rlm_sql (sql): Attempting to connect rlm_sql_mysql #0
rlm_sql_mysql: Starting connect to MySQL server for #0
rlm_sql (sql): Connected new DB handle, #0
rlm_sql (sql): starting 1
rlm_sql (sql): Attempting to connect rlm_sql_mysql #1
rlm_sql_mysql: Starting connect to MySQL server for #1
rlm_sql (sql): Connected new DB handle, #1
rlm_sql (sql): starting 2
rlm_sql (sql): Attempting to connect rlm_sql_mysql #2
rlm_sql_mysql: Starting connect to MySQL server for #2
rlm_sql (sql): Connected new DB handle, #2
rlm_sql (sql): starting 3
rlm_sql (sql): Attempting to connect rlm_sql_mysql #3
rlm_sql_mysql: Starting connect to MySQL server for #3
rlm_sql (sql): Connected new DB handle, #3
rlm_sql (sql): starting 4
rlm_sql (sql): Attempting to connect rlm_sql_mysql #4
rlm_sql_mysql: Starting connect to MySQL server for #4
rlm_sql (sql): Connected new DB handle, #4
Module: Instantiated sql (sql)
Module: Loaded Acct-Unique-Session-Id
Module: Instantiated acct_unique (acct_unique)
Module: Loaded realm
Module: Instantiated realm (suffix)
Module: Loaded detail
Module: Instantiated detail (detail)
Initializing the thread pool…
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.用test用户登陆一下.

会看到

CODE:[Copy to clipboard]rad_recv: Access-Request packet from host 127.0.0.1:32768, id=222, length=146
        Service-Type = Framed-User
        Framed-Protocol = PPP
        User-Name = "test"
        MS-CHAP-Challenge = 0xb6a9e94b94c3c386875043efd5144e17
        MS-CHAP2-Response = 0x38006d78036bb5e40ddeca0ce96b944619e000000000000000007b887b8762be38eb111a94a4b581925b85e07453a38a070f
        Calling-Station-Id = "192.168.8.53"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
rlm_sql (sql): Reserving sql socket id: 4
rlm_sql (sql): Released sql socket id: 4
rlm_sql (sql): Reserving sql socket id: 3
rlm_sql (sql): Released sql socket id: 3
rlm_sql (sql): Processing sql_postauth
rlm_sql (sql): Reserving sql socket id: 2
rlm_sql (sql): Released sql socket id: 2
Sending Access-Accept of id 222 to 127.0.0.1 port 32768
        MS-CHAP2-Success = 0x38533d33453434464142394232444230413143464539453832444536453534373331383833454238414536
        MS-MPPE-Recv-Key = 0x53a3812a0fd5b6f7b1cf4f6f6796f26b
        MS-MPPE-Send-Key = 0xb8be60559cbc46fd4da277516d6584f3
        MS-MPPE-Encryption-Policy = 0x00000002
        MS-MPPE-Encryption-Types = 0x00000004
rad_recv: Accounting-Request packet from host 127.0.0.1:32768, id=223, length=110
        Acct-Session-Id = "43EC0822056A00"
        User-Name = "test"
        Acct-Status-Type = Start
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Calling-Station-Id = "192.168.8.53"
        Acct-Authentic = RADIUS
        NAS-Port-Type = Async
        Framed-IP-Address = 10.10.110.1
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Acct-Delay-Time = 0
rlm_sql (sql): Reserving sql socket id: 1
rlm_sql (sql): Released sql socket id: 1
Sending Accounting-Response of id 223 to 127.0.0.1 port 32768如果你把Simultaneous-Use改成0

会看到

CODE:[Copy to clipboard]rad_recv: Access-Request packet from host 127.0.0.1:32768, id=225, length=146
        Service-Type = Framed-User
        Framed-Protocol = PPP
        User-Name = "test"
        MS-CHAP-Challenge = 0x2295d4d65913cbc0a7836e986fe4a998
        MS-CHAP2-Response = 0x34001739a3331c1a1a938eed99cda89b691f0000000000000000a8a9e9ae2eadaa6b1acb93e368113dc4ed47dac0a20b1ed8
        Calling-Station-Id = "192.168.8.53"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
rlm_sql (sql): Reserving sql socket id: 4
rlm_sql (sql): Released sql socket id: 4
rlm_sql (sql): Reserving sql socket id: 3
rlm_sql (sql): Released sql socket id: 3
rad_recv: Access-Request packet from host 127.0.0.1:32768, id=225, length=146
Sending Access-Reject of id 225 to 127.0.0.1 port 32768
        Reply-Message := "rnYou are already logged in – access deniedrnn"提示已经登陆过了,可见那个选项时生效的.

另,我找一个会俄语的,帮我看看

FreeNIBS

FreeNIBS is a loadable plugin for the FreeRADIUSradius server. FreeNIBS provides authorization,authentication, and accounting for dial-in(PPP/PPPOE/PPTP) users. It can be used forreal-time prepaid and postpaid billing. FreeNIBScan bill users based on service accuration, time,traffic, and both time and traffic. FreeNIBS hasvery flexible settings for groups, users, andprices. All data is stored in SQL databases suchas MySQl, PgSQL, and Oracle.

这个东西只有俄文的手册,死活看不来.连配置文件都是俄文的……

如果加上这个就能实现时间和流量的限制.

pptpd+radius+mysql 安装攻略(part2 radius部分)

pptpd+radius+mysql  安装攻略(part2 radius部分)

2006.02.10 by i_amok  

1。需要软件

freeradius

原先pppd源码目录中的一些关于radius外挂模块的配置文件。

2。安装freeradius的前期准备

安装mysql-devel.i386

yum install mysql-devel.i386

3。安装freeradius

http://www.freeradius.org

下载源码,我测试的时候是用 freeradius-1.1.0

用指定安装目录的方法安装

CODE:[Copy to clipboard]./configure –prefix=/usr/local/freeradius-1.1.0
make
make install4。配置pppd支持radius

4.1拷贝文件

从pppd的源码目录把下面这个目录复制到/etc/radiusclient/

CODE:[Copy to clipboard]cp -R ppp-2.4.4b1/pppd/plugins/radius/etc  /etc/radiusclient/4.2修改options.pptpd中的配置

在/etc/ppp/options.pptpd

中加入

CODE:[Copy to clipboard]
plugin /usr/local/lib/pppd/2.4.4b1/radius.so4.3 配置 /etc/radiusclient中的servers和radiusclient.conf

在servers中,你需要增加一个radiusd的地址和密码

CODE:[Copy to clipboard][root@kdfng radiusclient]# cat servers
#Server Name or Client/Server pair              Key
#—————-                               —————
#portmaster.elemental.net                       hardlyasecret
#portmaster2.elemental.net                      donttellanyone
localhost       netdragon这里localhost表示你的radiusd就在本机,并且访问的密码是netdragon

radiusclient.conf中

CODE:[Copy to clipboard]# service. if this fails also a compiled in default is used.
authserver      localhost:1812

# RADIUS server to use for accouting requests. All that I
# said for authserver applies, too.
#
acctserver      localhost:1813确认上面也是本地的,默认就是本地,所以一般不需要修改。
同时确保这个文件中radiusclient相关的路径所有的路径都是 /etc/radiusclient 开头的。

5。配置freeradius

cd /usr/local/freeradius-1.1.0/etc/raddb

raddb这个目录就是所有的freeradius配置文件所在了

5.1 修改clients.conf

这里说明一下,所有的nas都是radiusd的client,nas就是那个pptpd,所以这个文件就是配置pptpd的登陆权限的。

CODE:[Copy to clipboard]client 127.0.0.1      {
                        secret = netdragon
                        shortname = iamok
                        nastype     = other
                        }修改127.0.0.1部分为上面的样子。secret就是我们刚才在/etc/radiusclient中servers里设置的那个。这两个要一致

5.2 在users文件的最上面加入一个用户

CODE:[Copy to clipboard]ww Auth-Type:= MS-CHAP, User-Password=="ww", Simultaneous-Use:=1
          Service-Type = Framed-User,
          Framed-Protocol = PPP,
          Framed-IP-Address = 255.255.255.254,
          Framed-IP-Netmask = 255.255.255.0说明一下 ww是用户名
auth-type是验证的类型
第二个ww是密码
Simultaneous-Use是允许这个用户名同时登陆的个数

所有这些都是check属性,要写在第一行
然后第二行开始用tab开头,是服务器返回给radius客户端的(也就是返回给pptpd)时reply属性。
其中ip地址设置为255.255.255.254表示ip地址的分配是由radius客户端决定的,也就是由pptpd决定。
最后一个是子网掩码。

5.3用debug模式运行radiusd

CODE:[Copy to clipboard]../../sbin/radiusd -x你会看到

CODE:[Copy to clipboard]Starting – reading configuration files …
Using deprecated naslist file.  Support for this will go away soon.
Module: Loaded exec
rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Module: Instantiated exec (exec)
Module: Loaded expr
Module: Instantiated expr (expr)
Module: Loaded PAP
Module: Instantiated pap (pap)
Module: Loaded CHAP
Module: Instantiated chap (chap)
Module: Loaded MS-CHAP
Module: Instantiated mschap (mschap)
Module: Loaded eap
rlm_eap: Loaded and initialized type md5
rlm_eap: Loaded and initialized type leap
rlm_eap: Loaded and initialized type gtc
rlm_eap: Loaded and initialized type mschapv2
Module: Instantiated eap (eap)
Module: Loaded preprocess
Module: Instantiated preprocess (preprocess)
Module: Loaded files
Module: Instantiated files (files)
Module: Loaded Acct-Unique-Session-Id
Module: Instantiated acct_unique (acct_unique)
Module: Loaded realm
Module: Instantiated realm (suffix)
Module: Loaded detail
Module: Instantiated detail (detail)
Module: Loaded radutmp
Module: Instantiated radutmp (radutmp)
Initializing the thread pool…
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.6。测试

建立一个新的vpn连接

用户名ww密码ww

然后拨号

成功的话,会看到。

CODE:[Copy to clipboard]rad_recv: Access-Request packet from host 127.0.0.1:32768, id=214, length=144
        Service-Type = Framed-User
        Framed-Protocol = PPP
        User-Name = "ww"
        MS-CHAP-Challenge = 0x729e2492953298b498a766e778defe74
        MS-CHAP2-Response = 0xfc00475dd294431a52ee1187d13127c3bf49000000000000000043aad8bb5cd6f5ece16ddae9d20c63d857836053b2197144
        Calling-Station-Id = "192.168.8.53"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
Sending Access-Accept of id 214 to 127.0.0.1 port 32768
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Framed-IP-Address = 255.255.255.254
        Framed-IP-Netmask = 255.255.255.0
        MS-CHAP2-Success = 0xfc533d31303637323037453037384244433138333441303536434337433044373046363942414446343039
        MS-MPPE-Recv-Key = 0x0211fcb6f599479e8ee0a7d8a16a3252
        MS-MPPE-Send-Key = 0x91242cedc84a2dc69355c56951119065
        MS-MPPE-Encryption-Policy = 0x00000002
        MS-MPPE-Encryption-Types = 0x00000004
rad_recv: Accounting-Request packet from host 127.0.0.1:32768, id=215, length=108
        Acct-Session-Id = "43EBFF39048300"
        User-Name = "ww"
        Acct-Status-Type = Start
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Calling-Station-Id = "192.168.8.53"
        Acct-Authentic = RADIUS
        NAS-Port-Type = Async
        Framed-IP-Address = 10.10.110.1
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Acct-Delay-Time = 0
Sending Accounting-Response of id 215 to 127.0.0.1 port 32768这样pptp+radius的部分就完成了,下面一部分是对radiusd增加mysql的支持

用ctrl+c退出radius

pptpd+radius+mysql 安装攻略(part1 pptpd部分)

1.你所需要的软件 
内核最好能升级到2.6
如果你是centos的用户,可以通过yum update来升级到最新的centos4.2
升级内核是为了待会安装一个内核模块增加对mppe的支持。这样才能支持pptp拨号。

pppd    ppp拨号服务器
pptpd   在pppd拨号的基础上增加pptpd的支持
freeradius   作拨号用户验证的。
mysql        增加freeradius的数据库支持

2。确定你的内核是否支持mppe

modprobe ppp-compress-18 && echo ok

如果显示ok,那么恭喜,你的内核已经具备了mppe支持。请到第4部分

3。升级内核支持mppe

http://sourceforge.net/project/showfiles.php?group_id=44827

到上面这个网址。下载2个rpm包。

dkms-2.0.6-1.noarch.rpm 
kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm 

dkms是一个新的软件,能让你在不编译内核的基础上,外挂一些内核的模块。
kernel_ppp_mppe就是mppe支持的内核模块了。

ok后重起你的系统。

4。安装pppd

http://www.samba.org/ppp

在上面的网址下载最新的ppp软件包,我测试的时候是 ppp-2.4.4b1
用最常规的方法,configure,make,make install
由于新版的没有复制范例配置文件,需要用 make install-etcppp 来安装范例配置文件

5。安装pptpd

http://poptop.sourceforge.net/

在上面的网址下载最新的pptpd包,我测试的时候是pptpd-1.2.3

也是最常规的方法 configure,make,make install

6。配置你的pppd和pptpd

pppd的默认配置文件在 /etc/ppp

pptpd的配置文件在 /etc/pptpd.conf

pptpd和pppd的关系好比 pptpd是pppd的外挂一样。

6.1 
/etc/pptpd.conf中需要配置的地方只有几个

你首先要确定下面这个

ppp  /usr/local/sbin/pppd

他给pptpd指名了pppd的所在

option /etc/ppp/options.pptpd

这个说明了pptpd在ppp下的配置文件

localip 192.168.8.22
remoteip 10.10.110.1-100

localip是pptpd的对外服务的ip,也就是客户端需要拨号的ip
remoteip是拨号服务器分配给拨号用户的ip ,可以用-表示ip范围

6.2
 配置/etc/ppp/options.pptpd

为了测试,请打开debug和dump

# Logging

# Enable connection debugging facilities.
# (see your syslog configuration for where pppd sends to)
debug

# Print out all the option values which have been set.
# (often requested by mailing list to verify options)
dump

默认的信息会写在/var/log/messages

6.3
编辑 /etc/ppp/chap-secrets

添加一个测试用户

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
"iamok" pptpd   "iamok" *

第一个iamok是用户,第二个iamok是密码 ,*表示任意ip
pptpd表示和/etc/ppp/options.pptpd中的name 部分的pptpd要匹配,一般不用修改,我们只是
测试以下pptpd是否正常。

7。测试你的pptpd

如果是默认安装,你在任意路径打pptpd就可以了。

如果成功,你就会在 
/var/log/messages里面看到

Feb 10 09:51:46 kdfng pptpd[926]: MGR: Manager process started
Feb 10 09:51:46 kdfng pptpd[926]: MGR: Maximum of 100 connections available

然后你可以在任意一个win2k系统上建立一个vpn连接,用pptp方式的,用户名用上面设置的,这样你就能拨号了
而且ip就是你在上面所设置的ip

现在复查以下log文件

Feb 10 09:54:53 kdfng pptpd[937]: MGR: Manager process started
Feb 10 09:54:53 kdfng pptpd[937]: MGR: Maximum of 100 connections available
Feb 10 09:55:06 kdfng pptpd[939]: CTRL: Client 192.168.8.53 control connection started
Feb 10 09:55:06 kdfng pptpd[939]: CTRL: Starting call (launching pppd, opening GRE)
Feb 10 09:55:06 kdfng pppd[940]: pppd options in effect:
Feb 10 09:55:06 kdfng pppd[940]: debug          # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: nologfd                # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: dump           # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: require-mschap-v2              # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: refuse-pap             # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: refuse-chap            # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: refuse-mschap          # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: name pptpd             # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: 115200         # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: lock           # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: local          # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: ipparam 192.168.8.53           # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: 192.168.8.22:10.10.110.1               # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: nobsdcomp              # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: require-mppe-128               # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: pppd 2.4.4b1 started by root, uid 0
Feb 10 09:55:06 kdfng pppd[940]: Using interface ppp0
Feb 10 09:55:06 kdfng pppd[940]: Connect: ppp0 <–> /dev/pts/1
Feb 10 09:55:06 kdfng pptpd[939]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
Feb 10 09:55:06 kdfng pppd[940]: MPPE 128-bit stateless compression enabled
Feb 10 09:55:08 kdfng pppd[940]: local  IP address 192.168.8.22
Feb 10 09:55:08 kdfng pppd[940]: remote IP address 10.10.110.1
Feb 10 09:55:17 kdfng pppd[940]: LCP terminated by peer (^Z^HEO^@<M-Mt^@^@^@^@)
Feb 10 09:55:17 kdfng pppd[940]: Connect time 0.2 minutes.
Feb 10 09:55:17 kdfng pppd[940]: Sent 0 bytes, received 3492 bytes.
Feb 10 09:55:17 kdfng pppd[940]: Modem hangup
Feb 10 09:55:17 kdfng pppd[940]: Connection terminated.
Feb 10 09:55:17 kdfng pppd[940]: Exit.
Feb 10 09:55:17 kdfng pptpd[939]: CTRL: Client 192.168.8.53 control connection finished

这样你的pptpd就配置完成了。

flv文件转制和截图

flv文件的转制和截图相信有很多人已经研究的很多了,我在去年的时候也查找了不少这方面的信息,现在拿出来共享.

flv的转制目前比较好的就是ffmpeg和mencoder了,但ffmpeg支持的格式相对较少,而且有些转制出来有问题.因此主要的转制人物就

落在mencoder身上了,但mencoder转制出来的flv也不尽如人意,花屏的现象也算是比较严重了,可是也没有更好的转制方案,mencoder

也一直没有更新,对视频清晰度要求不是太高的可以考虑使用.

mencoder转制:

mencoder NOW.wmv -ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:vbitrate=240:abitrate=56 -srate 22050 -oac mp3lame -ofps 18 -o NOW.flv

NOW.wmv : 转制的源文件及地址

-ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 :转制格式编码以及声音编码

-srate 22050: 声音采样率,22050hz

-o NOW.flv 输出文件及地址

下面是大概的转制速度:
rm 速度:300k/s
rmvb 速度:1000k/s
wmv 速度:1000k/s
avi 速度:1000k/s
mov 速度:300k/s
mp4 速度:700k/s

如果转rm格式的,需要安装w32codec-all-20050412-0.pm.0.i386.rpm

ffmpeg转制:

asf: ffmpeg -i a.asf -ab 56 -ar 22050 -b 500 -r 15 -s 320×240 asf.flv 速度:600k/s

wmv: 支持wmv8以下版本

抓图:

使用ffmpeg可以很方便的抓图:
jpg: ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352×240 -ss a.jpg //注意-ss就是要提取视频文件中指定时间的图像
jpg: ffmpeg -i asf.flv -y -f image2 -t 1 asf.jpg
gif: ffmpeg -i test.asf -vframes 30 -y -f gif a.gif

http://www.roading.net/blog/article.asp?id=114

资产负债表:什么是股本?

资产负债表:什么是股本?
财务部 赵徽生 2003-12-16 07:44

上市公司与其他公司比较,最显著的特点就是将上市公司的全部资本划分为等额股份,并通过发行股票的方式来筹集资本。股东以其所认购股份对公司承担 有限责任。股份是很重要的指标。股票的面值与股份总数的乘积为股本,股本应等于公司的注册资本,所以,股本也是很重要的指标。为了直观地反映这一指标,在 会计核算上股份公司应设置"股本"科目。

公司的股本应在核定的股本总额范围内,发行股票取得。但值得注意的是,公司发行股票取得的收入与股本总额往往不一致,公司发行股票取得的收入大于 股本总额的,称为溢价发行;小于股本总额的,称为折价发行;等于股本总额的,为面值发行。我国不允许公司折价发行股票。在采用溢价发行股票的情况下,公司 应将相当于股票面值的部分记入"股本"科目,其余部分在扣除发行手续费、佣金等发行费用后记入"资本公积"科目。

什么是股东权益?

股东权益又称净资产,是指公司总资产中扣除负债所余下的部分。

例如.“上海汽车”1997年年底的资产负债表上,总资产为40.56亿元,负债是7.42亿元,股东权益就为两者之差。即33.14亿元,这也是“上海汽车”的净资产。

股东权益是一个很重要的财务指标,它反映了公司的自有资本。当总资产小于负债金额,公司就陷入了资不抵债的境地,这时,公司的股东权益便消失殆尽。如果实施破产清算,股东将一无所得。相反,股东权益金额越大,这家公司的实力就越雄厚。

股东权益包括以下五部分:一是股本,即按照面值计算的股本金。二是资本公积。包括股票发行溢价、法定财产重估增值、接受捐赠资产价值。三是盈余公 积,又分为法定盈余公积和任意盈余公积。法定盈余公积按公司税后利润的10%强制提取。目的是为了应付经营风险。当法定盈余公积累计额已达注册资本的 50%时可不再提取。四是法定公益金,按税后利润的5%一10%提取。用于公司福利设施支出。五是未分配利润,指公司留待以后年度分配的利润或待分配利 润。
参考资料:昆仑证券