某公司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