openssh记录sftp详细日志,并chroot用户目录

本站原创转载注明出处
by:vitter(vitter_at_safechina.net)
My blog: http://blog.securitycn.net
www.securitycn.net,www.vfocus.net,www.safechina.net

1 安装准备
下载openssh和sftp logging patch for openssh
http://www.openssh.org/
http://sftplogging.sourceforge.net/
以openssh-4.4p1为例

1.1 解压openssh
tar zxvf openssh-4.4p1.tar.gz

1.2 log补丁
patch -p0 < openssh-4.4p1.sftplogging-v1.5.patch

1.3 编译
cd openssh-4.4p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam
注:--with-pam是支持pam,--prefix=/usr --sysconfdir=/etc/ssh是与原来的sshd保持一致
make

1.4 如果1.3通过,停止sshd服务
service sshd stop

1.5 卸载 openssh-server和openssh
rpm -qa|grep openssh
openssh-clients-3.6.1p2-34
openssh-server-3.6.1p2-34
openssh-3.6.1p2-34

rpm -e --nodeps openssh-server-3.6.1p2-34
rpm -e --nodeps openssh-3.6.1p2-34
只卸载openssh-server和openssh,因为我们只关心这两个服务

1.6 安装刚刚编译的openssh
make install

1.7 重建 /etc/rc.d/init.d/sshd
cp contrib/redhat/sshd.init /etc/rc.d/init.d/sshd

1.8 重建 pam.d/sshd
cat /etc/pam.d/sshd
#%PAM-1.0
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth

1.9 openssh支持sftp上传下载日志记录
vi /etc/ssh/sshd_config

LogSftp yes
SftpLogFacility AUTH

vi /etc/syslog.conf
auth,authpriv.* /var/log/sftp.log

service syslog restart

1.10 重启 sshd
service sshd start

2 配置sshd以支持chroot

2.1 构建chroot环境

2.1.1 使用环境变量,方便
export CHROOT_PATH=/home/vitter

2.1.2 创建基本目录
mkdir -p $CHROOT_PATH/{bin,home,usr,lib}
chown -R root.root $CHROOT_PATH
cd $CHROOT_PATH

2.1.3 创建 /bin/bash环境
cp /bin/bash $CHROOT_PATH/bin/bash
for a in $(ldd /bin/bash | awk '{print $3}')
do
[ -e $CHROOT_PATH`dirname $a` ] || mkdir -p $CHROOT_PATH`dirname $a`
cp -f $a $CHROOT_PATH$a;
done

2.1.4 创建 sftp-server 环境
export SFTP_SERVER=`grep Subsystem /etc/ssh/sshd_config | awk '{print $3}'`
echo $SFTP_SERVER
mkdir -p $CHROOT_PATH/`dirname $SFTP_SERVER`
cp $SFTP_SERVER $CHROOT_PATH$SFTP_SERVER
for a in $(ldd $SFTP_SERVER | awk '{print $3}')
do
[ -e $CHROOT_PATH`dirname $a` ] || mkdir -p $CHROOT_PATH`dirname $a`
cp -f --reply=yes $a $CHROOT_PATH$a;
done

chroot环境已经搭建完毕,只有一个bash可供使用
sftp-server,是为了相应用户的sftp登陆的

2.2 配置chroot-openssh

2.2.1 添加或指定享受此待遇的用户,这里以sftptest为例
useradd -d /home/sftptest sftptest
mv /home/sftptest $CHROOT_PATH/home/sftptest
ln -s $CHROOT_PATH/home/sftptest /home/sftptest
passwd sftptest

这里使用了软连接,为了保持chroot环境和实际环境的一致。

2.2.2 修改sshd配置
[vi /etc/ssh/sshd_config]
UsePAM yes

2.2.3 修改sshd.pam配置
[vi /etc/pam.d/sshd]
session required pam_chroot.so

2.2.4 修改chroot配置
echo sftptest $CHROOT_PATH >> /etc/security/chroot.conf

2.2.5 重新启动
service sshd restart

3 可选操作,增加安全性
chattr -R +i $CHROOT_PATH
chattr -R -i $CHROOT_PATH/home

posted @ 2009-06-21 17:17  江湖行者  阅读(2145)  评论(0)    收藏  举报