为Openldap配置TLS(SSL)

[不指定 2010/01/04 23:01 | by ipaddr ]
最近在折腾openldap,以下是配置TLS(ssl)的摘要:

1. 首先,需要安装openssl (鱼漂提醒:rpm或deb安装的话,还需要openssl-devel包)
2. 修改/usr/lib/ssl/openssl.cnf设置默认的国家,省份,城市等信息
3. 复制/usr/lib/ssh/misc/CA.sh到工作目录,比如~/work/
4. 修改~/work/CA.sh的证书期限,比如根证书为15年,普通证书为3年
5. 进入工作目录 cd ~/work/
6. ./CA.sh -newca 按照提示输入一些信息,中间要输入三次密码,请记住你的密码,以后签署证书时需要用到。
7. 使用openssl生成证书,需要注意的是Common Name一定要输入ldap服务器的全称,比如ldap.systemadmin.cn, openssl命令如下:
    openssl req -new -nodes -keyout newreq.pem -out newreq.pem
8. 签署证书:
    ./CA.sh -sign
    需要输入刚才的密码。
9. 将生成的证书复制到openldap的目录:
    mkdir /usr/local/etc/openldap/ca
    mv newcert.pem /usr/local/etc/openldap/ca/servercrt.pem
    mv newreq.pem /usr/local/etc/openldap/ca/serverkey.pem
    cp demo/cacert.pem /usr/local/etc/openldap/ca/

10.修改Openldap服务端配置文件slapd.conf,增加证书配置:
    TLSCACertificateFile /usr/local/etc/openldap/ca/cacert.pem
    TLSCertificateFile /usr/local/etc/openldap/ca/servercrt.pem
    TLSCertificateKeyFile /usr/local/etc/openldap/ca/serverkey.pem

11.重启openldap服务器
    #kill -INT `cat /usr/local/var/run/slapd.pid`
    #/usr/local/libexec/slapd -h "ldap:/// ldaps:///"

12.客户端的配置
    首先,需要将根证书复制到每台客户端,并在客户端的ldap.conf文件中如下配置:
    TLS_CACERT /usr/local/etc/openldap/ca/cacert.pem
   
此外,鱼漂(http://www.eit.name), 特别提醒,需要在编译openldap时指定使用openssl:
(在ubuntu 9.10上测试时,只使用--with-tls,而没有指定openssl的话,好象是不成功的。)
#export CPPFLAGS="-I/usr/local/BerkeleyDB/include"
#export LDFLAGS="-L/usr/local/BerkeleyDB/lib"
(如果是编译安装BerkeleyDB,需要设置以上两个环境变量)
#./configure --with-tls=openssl --enable-modules
#make depend
#make
#make install

使用iptables来做tcp代理

[不指定 2010/01/04 16:12 | by ipaddr ]

可以使用iptables来做tcp代理, 原理就是NAT, 以下是一个简单的实现脚本:

===============================================

#!/bin/sh
# TCP Proxy using IPTables
# source: http://www.eit.name/

IPTABLES=/sbin/iptables

echo 1 > /proc/sys/net/ipv4/ip_forward

# Flush nat table
$IPTABLES -t nat -F

# tcpproxy LOCAL_IP LOCAL_PORT REMOTE_IP REMOTE_PORT
function tcpproxy {
$IPTABLES -t nat -A PREROUTING --dst $1 -p tcp --dport $2 -j DNAT --to-destination $3:$4
$IPTABLES -t nat -A POSTROUTING --dst $3 -p tcp --dport $4 -j SNAT --to-source $1
$IPTABLES -t nat -A OUTPUT --dst $1 -p tcp --dport $2 -j DNAT --to-destination $3:$4
}

# Example 1
tcpproxy 192.168.40.244 3200 10.10.10.2 3200

# Example 2
tcpproxy 192.168.40.245 3200 192.168.1.30 3200

===============================================

分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]