某公司win服务器众多,做加固的话,每台登录上去手工检查或者跑脚本都要花费很长时间。

于是想通过写程序登录主机,跑脚本,抓到不安全的配置,上传到某个服务器同一归档分析。

然后程序循环这个过程,抓取所有主机的不安全配置。

原本架构采用终端登录器管理所有主机,登录器通过某个数据库取得主机ip、帐户和密码。表结构类似如下形式:

ip user pwd
192.168.1.45 administrator sdfsafd123
192.168.1.34:2222 admin 12312xcvcv
192.168.2.46:4444 administrator 112312sdfsdf

 

脚本包含两个文件,install #用于安装环境,check #用于检查

以下是install

 

[root@localhost ~]# cat install

#!/bin/sh

read -n 1 -p "Insert your cdrom…" #安装环境之前应该插入系统安装光盘,我用的是CentOS,各位根据自己系统修改

mkdir -pv /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

for repo_file in /etc/yum.repos.d/*.repo; do

mv ${repo_file} ${repo_file}.bak

done

cat > /etc/yum.repos.d/cdrom.repo << EOF #使用本地cdrom作为yum源

[cdrom]

name=CentOS 5 Local Repository

baseurl=file:///mnt/cdrom

enabled=1

gpgcheck=0

EOF

yum -y install mysql rdesktop nmap

 

以下是check

 

[root@localhost ~]# cat check

 

#!/bin/sh
 
echo ‘Enter DB_HOST:’
read DB_HOST
echo ‘Enter DB_USER:’
read DB_USER
echo ‘Enter DB_PWD:’
read DB_PWD
 
DB_NAME=’test’
DB_TABLE=’host’
 
TMP_FILE="tmp_$$.txt"
 
mysql -u ${DB_USER} -p${DB_PWD} -h ${DB_HOST} -e "select ip_add,username,passwd from ${DB_NAME}.${DB_TABLE}" > $TMP_FILE || exit 1
 
sed -i ’1d’ $TMP_FILE
while read record
do
HOST=$(echo $record | awk -F ‘ ‘ ‘{print $1}’ | awk -F ‘:’ ‘{print $1}’)
USER=$(echo $record | awk -F ‘ ‘ ‘{print $2}’)
PWD=$(echo $record | awk -F ‘ ‘ ‘{print $3}’)
PORT=$(echo $record | awk -F ‘ ‘ ‘{print $1}’ | awk -F ‘:’ ‘{print $2}’)
if [ "$PORT" == "" ]; then
PORT="3389"
fi
nmap -p $PORT $HOST | grep "$PORT/tcp open" > /dev/null 2>&1
if [ "$?" == 0 ]; then
echo "$HOST:$PORT"
rdesktop -u $USER -p $PWD -s ‘echo open xx.xx.xx.xx > t.t & echo user>>t.t & echo pass>>t.t & echo get your_check_bat.bat >> t.t & echo bye >> t.t & ftp -s:t.t & del t.t & your_check_bat.bat‘ $HOST:$PORT
#红色部分写入终端启动时,要执行的命令,这个各位需要按照自身的情况修改,命令功能为:从指定ftp下载加固脚本,并执行;加固脚本内容为安全配置核查,执行最后会把检查结果不安全的部分输出到txt,然后上传到指定ftp
fi
done < $TMP_FILE

程序还有个没有解决的问题,就是win终端登录有连接数限制,一旦超过最大连接数就不能进行检查,想过使用rdp控制台登录,rdesktop使用-0参数,但是控制台登录就不能使用-s来执行启动命令了。不知道有没更好的方法,各位朋友如果有更好的方法望指点。

点我下载:附件

转载请注明来自WebShell'S Blog,本文地址:https://www.webshell.cc/2919.html