linux系统的数据库,Linux 系统与数据库保险

1.1. Shell 安全

需求:限制用户权限,仅提供一些linux常用命令,用户监控linux系统于网络运行情况,不允许用户ssh登录后随意运行linux命令

用户不能进入到Shell环境

例如普通用户一旦登录web服务器可以看到web程序中的数据库配置

用户可以了解OS工作状态如内存,cpu,网络等等

例如:ping, tracepath, top, free, netstat

可以查看系统部分日志

例如:access.log, error.log, php-error.log ...

使用mgmt替代bash

#!/bin/bash

TITLE="Client"

#USER=$(whiptail --inputbox "User:" 8 60 --title "$TITLE" 3>&1 1>&2 2>&3)

#PASSWD=$(whiptail --title "$TITLE" --passwordbox "Passsword:" 8 60 3>&1 1>&2 2>&3)

COMMAND=$(whiptail --title "$TITLE" --menu "Administrator Tools" 22 50 10 \

"ping" "ping" \

"tracepath" "tracepath" \

"top" "top" \

"free" "free" \

"ps" "ps" \

"netstat" "netstat" \

"lsof" "lsof" \

"iftop" "iftop" \

"log" "log" \

3>&1 1>&2 2>&3)

function option(){

OPTION=$(whiptail --inputbox "COMMAND-LINE Options: " 8 60 --title "$TITLE" 3>&1 1>&2 2>&3)

}

function weblog(){

LOG=$(whiptail --title "$TITLE" --menu "Logs" 22 50 8 \

"/var/log/messages" "message" \

"/var/log/syslog" "syslog" \

"/var/log/nginx/access.log" "access.log" \

"/var/log/nginx/error.log" "error.log" \

3>&1 1>&2 2>&3)

}

case $COMMAND in

ping)

option

$COMMAND $OPTION

;;

tracepath)

option

$COMMAND $OPTION

;;

free)

$COMMAND -m

read

;;

top|iftop)

$COMMAND

;;

log)

weblog

tail -f $LOG

;;

ps|lsof)

option

$COMMAND $OPTION

read

;;

netstat)

option

$COMMAND $OPTION

read

;;

*)

exit $?

esac

Shell 启动文件,主要用户隐藏 /srv/sbin/mgmt 文件(针对菜鸟)

$ cat shell.c

#include

main()

{

for (;;){

system("/srv/sbin/mgmt");

}

}

编译.c文件

gcc shell.c -o /bin/nsh

添加Shell到/etc/shells

echo /bin/nsh >> /etc/shells

将用户shell更改为我们刚刚创建的nsh

$ vim /etc/passwd

www:x:33:33:www:/var/www:/bin/nsh

现在来作一个测试,如果正确应该现在为下面的TUI界面

ssh www@example.com

┌───────────────────┤ Client ├───────────────────┐

│ Administrator Tools │

│ │

│ ping ping │

│ tracepath tracepath │

│ top top │

│ free free │

│ ps ps │

│ netstat netstat │

│ lsof lsof │

│ iftop iftop │

│ log log │

│ │

│ │

│ │

│ │

└────────────────────────────────────────────────┘

提示

这里采用的方式是给用户提供一个界面的方式,另外还有更好的方案,你可以些一个Shell的外壳,你需要实现

与Shell相同的提示符

提供TAB补齐

上下光标键翻看历史命令,左右光标改变位置,Home/End 键到行首与行尾

Ctrl+R 搜索, Ctrl+D 退出

Ctrl+S,Ctrl+Q 等等

流程

用户输入 -> 关键字过滤 -> 放行

例如用户输入 cd / 经过过滤器后, cd /home/usr/

例如用户输入 cd /aaa 经过过滤器后, cd /home/usr/aaa

rm -rf /usr/local 提示拒绝等等

我已经使用python实现上面的大部分功能(因为python受到很多限制)如果使用C可以100%实现,需要你的想想力了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值