当前位置: 首页 > 软件库 > 管理和监控 > 安全相关 >

jail-shell

安全受限 shell
授权协议 GPL
开发语言 C/C++ SHELL
所属分类 管理和监控、 安全相关
软件类型 开源软件
地区 国产
投 递 者 董高畅
操作系统 Linux
开源组织
适用人群 未知
 软件概览

简介

==============
jail-shell安全受限shell是一个Linux环境下的安全工具,主要使用chroot, namespace技术,限制用户执行特定的命令,和访问特定的目录;可将用户通过ssh, scp, sftp,telnet, 终端等方式登录限制到安全的运行环境中。

相比ssh自带的chroo功能,有易于使用,自动生成chroot环境,支持Namespace隔离,支持chroot环境只读,目录文件映射等功能。

可用于:

  1. webhost的ssh,sftp受限访问;

  2. 企业管理员的权限分级管理;

  3. 一体化产品的权限控制;

功能列表

==============
1.易于使用
   通过配置文件,自动生成chroot运行环境,提供jail-shell管理命令方便添加、查看、删除受限用户,以及安装、删除chroot运行环境。
2.chroot技术限制用户访问范围
   采用Linux chroot技术,限制用户的目录访问范围,避免用户访问受限信息,防止用户对系统做破坏。
3.目录只读保护
   对chroot运行环境进行只读保护,避免需要保护的目录被修改、文件被破坏;避免用户创建设备文件,访问系统受限文件,并避免执行外部可执行文件。
4.namespace限制用户可见范围
   采用Linux namespace技术,限制用户pid,mount目录的可见范围,避免信息泄漏。
5.系统命令通道
   提供系统命令代理通道,允许用户在chroot环境中执行真实系统的受限命令,在提供必要功能的情况下,保护系统。
6.自动处理chroot环境命令依赖
  只需要提供命令列表,即可自动将命令依赖的动态库复制到chroot环境,避免手工复制动态库的繁杂工作。
7.capabilities限制
   丢弃关键的capabilities权限,避免系统,chroot运行环境被rootkit破解。
8.多Linux操作系统支持
   支持redhat, sles, debian及其衍生的操作系统。

架构说明

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

安全受限shell包含3部分,pam插件,jail-cmd命令代理,jail-shell命令工具。
pam_jail_shell插件:
主要控制登录的用户,根据配置列表,将登录的用户采用chroot, namespace技术,限制在特定的受限目录中。
jail-cmd命令代理
主要将命令转发到真实的系统中,如用户密码修改,或其他用户相关的业务命令的执行,并对命令做注入检测,防止注入
jail-shell工具
主要提供管理安全受限shell的功能,让用户更加易于使用,包括用户的添加、删除,shell的配置,安装,删除。

说明

1. 用户通过ssh, 终端,telnet等shell管理工具登录到系统后,pam_jail_shell插件根据配置列表,将登录用户的访问范围限制在指定的chroot环境中。2. 管理员通过jail-shell命令,管理受限用户名单列表,以及管理chroot环境的命令列表,并配置目录的访问范围。
3. jail-cmd代理用户执行的系统命令,辅助实现必要的业务功能。

使用步骤

==============
下载源代码,编译安装完成后,可使用jail-shell命令管理安全受限shell,通过jail-shell -h查看命令帮助  
在使用上,步骤如下:  
1. 使用useradd username命令添加用户到系统中。
2. 使用jail-shell jail创建安全受限shell配置,并创建受限运行环境。
3. 使用jail-shell user将用户添加到受限系统中。

  • # Set fail2ban. sudo yum --enablerepo=epel -y install fail2ban sudo touch /etc/fail2ban/filter.d/apache-ddos.conf sudo sh -c "echo '[Definition]' >> /etc/fail2ban/filter.d/apache-ddos.conf" sudo sh -c

  • Jailkit和jailed Shell 受限shell(Jailed Shell)是一类被限制的shell,它看起来非常像真实的Shell,但是它不允许查看和修改真实的文件系统的任何部分。Shell内的文件系统不同于底层的文件系统。这种功能是通过chroot和其他多种程序实现的。举例来说,给用户建立一个linux shell去让他“玩玩”,或者在一个限定的环境里运行一些程序的所有功能等等。 在这

  • #!/bin/bash #fail2ban-0.8.14.tar.gz #python > 2.4V #user:root tar  -zxf fail2ban-0.8.14.tar.gz cd /root/fail2ban-0.8.14/ python setup.py install  cp /root/fail2ban-0.8.14/files/redhat-initd /etc/init

  • 纯套路题。 基本思路是靠自己想的,不过偷看了一眼题解,哎去掉这个坏习惯,相信自己。 题意 支持线段树的修改和查询但是要求的是,不能减低于 0 0 0【只有减操作】 其实很简单,因为低于等于 0 0 0的只会被操作一次,以后低于等于 0 0 0的可以忽略了。 怎么忽略呢?记录当前大于 0 0 0的个数 l e n len len,记录当前最小值 x x x,如果修改值比 x x x小,那么可以直接更

  • 常规 有多种减轻威胁的技巧: [1] 如果可能,使用库调用而不是外部进程来重新创建所需功能。 [2] 策略:沙箱或监狱 在进程和操作系统之间强制实施严格边界的“监狱”或类似沙箱环境中运行代码。这可以有效限制您的软件可访问特定目录中的哪些文件或者可以执行哪些命令。操作系统级别的示例包括 Unix chroot jail、AppArmor 和 SELinux。通常,受管代码可提供一定的保护。例如,Ja

  • 经常会在博客或者论坛看到类似下面的命令 大括号扩展  Brace expansion  {     }  shell   作用 cp /etc/httpd/httpd.{,.bakup} 或者是 mv resume{z,}.doc 那么,在uinx / linux  shell命令中是什么意思?起什么作用呢? {  } 并没有什么实际的含义,但是却可以作为Brace expansion(大括号扩展

  • Java 执行 Shell 脚本 ssh monitor@192.168.1.10 "touch /home/xiang/test.text" String[] queryParams = new String[] { "ssh" ,"monitor@192.168.1.10" ,"touch"

  • package com.utils; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.WinNT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ja

  • 在linux环境下通过sh脚本文件来调用运行java程序。 脚本文件就是批处理文件,我的理解就是把一系列的(linux下是shell脚本)命令写到一个文档中,这样我们在执行时只要调用这个文档就行了,不用在linux的终端输入一行一行的命令,而是直接打开批处理文档即可。 脚本文件在网络中应用比较多,因为一般网络应用大多是不需要多少逻辑性的操作,一般是自上而下的执行,这样子的话,简单的脚本语言就用起来

  • nohup java -Xms256M -Xmx512M -Dibm.stream.nio=true -DIapp.ConfigFile=/application/interf/C_APP/BSE/IappConfig.properties -Dclient.encoding.override=GBK -Dfile.encoding=GBK -Duser.language=zh -Duser.re

  • java调用shell  在写程序时,有时需要在java程序中调用shell脚本,可以通过Runtime的exec方法来调用shell程序,运行脚本。  每个Java 应用程序都有一个Runtime 类实例,使应用程序能够与其运行的环境相连接。通过Runtime对象可以返回运行环境的情况,包括CPU数,虚拟机内存大小等,并能够通过exec方法调用执行命令。可以通过getRuntime 方法获取当前

  • 在写程序时,有时需要在java程序中调用shell脚本,可以通过Runtime的exec方法来调用shell程序,运行脚本。 每个Java 应用程序都有一个Runtime 类实例,使应用程序能够与其运行的环境相连接。通过Runtime对象可以返回运行环境的情况,包括CPU数,虚拟机内存大小等,并能够通过exec方法调用执行命令。可以通过getRuntime 方法获取当前Runtime实例。   p

  • #!/bin/sh ################################### #环境变量及程序执行参数 #需要根据实际环境以及Java程序名称来修改这些参数 ################################### #JDK所在路径 JAVA_HOME=/home/showyang/projects/jdk1.8.0_151 LICENSE_FILE=$JSIFS_3/

  • 我有一个应用程序,该应用程序应该使用一些shell命令将文件从sdcard复制到/ system / media /。它将需要root用户,并且我正在对root用户的设备进行测试。我正在使用运行时来执行Shell命令,但无法正常工作。这是我的运行时所需要的 public void RunAsRoot{String[] commands = {"sysrw", "rm /data/local/boo

  • 二话不说,直接上代码! package cn.sigangjun.util; /** * <p>Title:java call linux shell util </p> * <p>Description: java call linux shell util</p> * @since 2013-8-12 下午3:50:15 * @version 1.0 * @author <a s

  •     <context-param>               <param-name>shell</param-name>                <param-value>/home/b916/tomcat7.0.67/apkpatch/apkpatch.sh  -f /home/b916/tomcat7.0.67/apkpatch/new.apk -t /home/b916/tom

  • 经常需要在Java中调用其它的脚本(shell,cmd), 以前都用: Runtime r = Runtime.getSystemRuntime(); r.exec("whatever you want to run");  但是有时侯其运行结果是不可预期的,带来很多麻烦。从java 5.0以后,引入了ProcessBuilder to create operating system proces

  • 1.Shell执行/调用Java/Jar程序 #!/bin/bash JAVA_HOME="$HOME/jdk" BASE_DIR=`dirname $0` if [ "$BASE_DIR" = '.' ] then BASE_DIR=`pwd` fi PROCESS_HOME=`dirname $BASE_DIR` MY_DIR="$PROCESS_HOME/gasarchiveproc

  • 思路 利用Java的Runtime获取到JVM运行环境,当项目部署到Linux上时,即可通过exec方法执行sh文件了。 具体实现 package com.xiaowuqin; import java.io.IOException; import java.io.InputStream; public class ProcessDemo { private Process proces

  • package com.test.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.text.DateFormat; import java.text.Simpl

  • 简介 最近做公司的WebLogic 迁移工作,其中很多东西需要使用到相关的shell命令操作,需要同一个shell多次执行相关命令,简单使用Java ProcessBuilder 封装了一个shell工具类,可以同时在linux/windows下运行。并且每次运行的命令都有其执行结果返回。 package com.apusic.common.util; import java.io.IOEx

  • 所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。     创建chroot“监牢”     以前,Unix/Linux上的daemon都是以root权限启动的。当时,这似乎是一件理所当然的事情,因为像Apache这样的服务器软件需要绑定到“众所周知”的端口上(小于1024)来

  • ## 调用mysql备份脚本 1. java调用Linux命令 ~~~ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class RunShell { public int runShell(String[] args) throws IOExc

  • #! /bin/bash # 0 define target jar file name targetjarName="test.jar" # 1. find classpath curPath=$(cd "$(dirname "$0")"; pwd) # echo $curPath stormHome='/usr/local/storm' for i in $stormHome/lib/*.ja

  • 使用java的process类 Process这个类是一个抽象类封装了一个进程 Runtime.getRuntime().exec()方法提供了java中调用脚本: 1、Process exec(String command); //在单独的进程中执行指定的字符串命令 2、Process exec(String [] cmdarray) 在单独的进程中执行指定的命令和变量 3、Process ex

  • package com.bigdata.pushdata; import java.io.*; import ch.ethz.ssh2.ChannelCondition; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; import ch.ethz.ssh2.Session; public class SshCli

  • 1.添加依赖 com.jcraft:jsch ch.ethz.ganymed:ganymed-ssh2:262 2.获取连接 conn = new Connection(ip, port); conn.connect(); conn.authenticateWithPassword(username, password); 3.发送命令 session = conn.openSession();

  •     以下是通过java执行shell命令启动hypertable 数据库的 例子。  /** * 启动数据库服务 * @return */ public String startUp() { // 此处的命令是写死的, String commands = "ht start all-servers local"; //String commands

 相关资料
  • 在受限 shell 中禁用的命令 在受限shell中运行的脚本或脚本的个代码断会禁用一些正常shell中可以执行的命令.这是限制脚本用户的权限和最小化运行脚本导致的破坏的安全措施. 使用cd命令更改工作目录. 更改环境变量$PATH, $SHELL, $BASH_ENV,或$ENV的值. 读或更改shell环境选项变量$SHELLOPTS的值. 输出重定向. 调用的命令路径中包括有一个或更多个/字

  • JAIL 是一个可以让你的页面加载更快的图像延迟加载 jQuery 插件。当用户要打开图片的时候图片就开始进行下载。 示例代码: requirejs.config({    baseUrl: 'lib',    paths: {        app: 'src'    },    shim: {        'app/jail': ['jquery']    }});require(["jqu

  • 你可能已经知道,SSH 是一种网络协议,允许你通过网络登录到vm1。让我们详细研究一下。 安全 Shell(SSH)是一种网络协议,用于安全数据通信,远程 Shell 服务或命令执行,以及其它两个联网计算机之间的网络服务,它们通过不安全网络上的安全通道连接:服务器和客户端(运行 SSH 服务器和 SSH 客户端程序)。协议规范区分了两个主要版本,被称为 SSH-1 和 SSH-2。 协议最著名的应

  • 问题报告:http://drops.wooyun.org/papers/3062 问题分析:Redis 安全模型的观念是: “请不要将Redis暴露在公开网络中, 因为让不受信任的客户接触到Redis是非常危险的” 。The Redis security model is: “it’s totally insecure to let untrusted clients access the sys

  • 在创建服务器实例之前,你需要在该实例上添加安全组规则,这样服务器实例的用户才能ping这个主机或者通过SSH连接这个实例。安全组是IP过滤的规则组,它决定了网络的连通性,适用于一个Project内的所有实例。配置安全组有两种方式:要么是在默认的安全组中添加规则,要么新建一个安全组,然后把规则写在新的安全组里。 密钥对是SSH的证书,在实例启动时被注入进系统里。如欲使用密钥对注入,镜像中的系统上必须

  • 环境:我必须用Selenium测试一个Web应用程序。在访问起始页之前,会抛出windows安全警报。由于Alert/Verification-Popup是在os级别上,所以selenium Alert-API无法处理它。 解决方法:为了访问该页面,我编写了一个脚本,其中填充用户名和密码,然后单击enter(脚本代码来自:https://automationtestingsimplified.wo