实际方法有很多,比如chroot 或用bash禁止某些命令
方法1、
ln -s /bin/bash /bin/rbash
在passwd里把shell改成rbash就可以了。
方法2、 关闭一些命令
建立一个公共文件夹,root所有,其他用户只读。
删除用户目录下的配置文件,重新在这个文件夹下建立用户的配置文件。并做链接。(用户只读)
配置需要关闭的命令或目录。
例如:~username/.bashrc ~username/.bash_profile
settype -r PATH='/bin'
enable -n pwd
enable -n enable
方法3、脚本
#!/bin/bash
typeset -r PATH=$PATH:/sbin:/usr/sbin
typeset -r _CMD=("exit" "ls" "cd" "clear" "pwd")
echo $READLINE
while :
do
read -p "[${USER}@${HOSTNAME} ${PWD}]# " -r -a CMD
if [ -z ${CMD[0]} ];then
:
elif $(echo ${_CMD[@]}|grep -wq "\<${CMD[0]}\>");then
${CMD[@]}
else
echo "-bash: $CMD: command not found"
fi
done
把这个脚本改成用户登录的bash即可。
方法4、chroot
1、建立chroot目录
mkdir /home/testchroot
把下面这些文件拷贝到新建立的目录里面:
/dev
/dev/random
/dev/null
/usr
/home
/home/testchroot
/home/testchroot/.bash_profile
/home/testchroot/.bash_logout
/home/testchroot/.bashrc
/lib
/lib/libsepol.so.1
/lib/ld-linux.so.2
/lib/libpthread.so.0
/lib/tls
/lib/libselinux.so.1
/lib/libtermcap.so.2
/lib/libattr.so.1
/lib/libacl.so.1
/lib/libc.so.6
/lib/librt.so.1
/lib/libdl.so.2
/bin
/bin/rmdir
/bin/rm
/bin/bash
/bin/mkdir
/bin/pwd
/bin/ls
/bin/bash
/etc/group
/etc/passwd
/etc/shadow
# 以下文件要注意,新版本linux chroot是需要的
/dev/ptmx
/etc
/etc/environment
/etc/fstab
/etc/security
/etc/security/*
还要mount两个目录。
mkdir -p /home/testchroot/{proc,dev/pts}
mount proc /home/testchroot/proc -t proc
mount devpts /home/testchroot/dev/pts -t devpts
fstab 里面的内容要有下面这句
devpts /dev/pts devpts gid=5,mode=620 0 0
其中 /dev/ptmx 创建方法为:
mknod /dev/ptmx c 5 2
chmod 666 /dev/ptmx
这些完成以后设置相应的权限;
设置 /etc/pam.d/sshd
session required pam_chroot.so
设置 cat /etc/security/chroot.conf
username chroot_dir
设置 sshd_config
UsePrivilegeSeparation no
设置其他相关的安全配置。
然后重启你的sshd 服务。
测试一下应该一个 ssh user 的 chroot 环境已经做好了。
补充说明:
我们除了使用 ldd /bin/command 来检查动态链接库意外,还可以使用其他的方法检测。
比如有些程序在使用 ldd 检测的时候会发现 动态链接库检测不全的情况,()
这时候我们可使用 strace , string , gdb , gprof 等工具跟踪检测。
阅读(1282) | 评论(0) | 转发(0) |