[toc]
安全加固
安全加固脚本V1
- 用来做iptables ssh地址白名单限制
- openssh-server ssh用户白名单限制
- 更改登录欢迎信息为警告信息
- 应用根目录权限最小化
- zabbix agent安装配置
#!/bin/bash
#定义一个函数,程序由前往后执行,次顺序非常重要,一不小心会将自己拒在外面,遇到这种情况让规则失效的处理方式是重启服器,或者从阿里云接接口接入清空规则,可选后者;
#注zabbix(xxx.xx.xxx.xx)\xx.xx.xx.xxx主机不加入iptables规则
IP_TABLES () {
/sbin/iptables -A INPUT -p tcp --dport 22 -s xxx.xxx.xx.xx -j ACCEPT #首先放行 xxx.xxx.xxx.xxx 我们内网路由地址
/sbin/iptables -A INPUT -p tcp --dport 22 -s xxx.xxx.xx.xx -j ACCEPT #放行备用地址 xxx.xxx.xx.xxx 同时也是我们的zabbix地址
/sbin/iptables -A INPUT -p tcp --dport 22 -s xxx.xxx.xx.xx -j ACCEPT #此服务器为我们闲置的一台服务器
/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP #丢弃所有对22号端口的请求
iptables -vnL #查看防火墙设置
}
#添加唯一可以登录服务器的用户
SSH_INIT () {
useradd xxxxxxxx #添加用户
cp -a /etc/skel /home/xxxxxxxx
chown -R xxxxxxxx.xxxxxxxx /home/TransferEasyd0--01
usermod -s /bin/bash xxxxxxxx
PASS='xxxxxxxxxx'
echo "xxxxxxxx:$PASS" | chpasswd #给用户设置密码
echo "AllowUsers xxxxxxxx" >> /etc/ssh/sshd_config #添加白名单到sshd_config中
service ssh restart #重启服务器
}
#Web根目录权限最小化
PY_INIT () {
chmod 700 /home/admin/
}
WEB_INIT () {
chown www-data.www-data /var/www/html && chmod 700 /var/www/html #设置启动用户和用启动组都为www-data用户,设置所有者权限读\写\执行; 所属组0; 其它人0;
usermod -s /sbin/nologin www-data #完全禁止www-data用户登录
cat /etc/passwd | grep --color www-data #查看修改登录
ls -ld /var/www/html #查看修改权限
}
#更改欢迎信息为警告信息
MO_TD () {
[ -e /etc/.motd.bak ] || cp /etc/motd /etc/.motd.bak
cat <<EOF > /etc/motd
非xxxxxxxx管理人员请勿登录系统,否则后果自负
非xxxxxxxx管理人员请勿登录系统,否则后果自负
Non xxxxxxxx administrators are not allowed to log on to the system, otherwise they may be affected
EOF
[ -e /etc/update-motd.d/.00-header.bak ] || cp /etc/update-motd.d/00-header /etc/update-motd.d/.00-header.bak
cat <<EOF > /etc/update-motd.d/00-header
#!/bin/sh
[ -r /etc/lsb-release ] && . /etc/lsb-release
if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
# Fall back to using the very slow lsb_release utility
DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi
printf "xxxxxxxx %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"
EOF
[ -e /etc/.lsb-release.bak ] || cp /etc/lsb-release /etc/.lsb-release.bak
cat <<EOF > /etc/lsb-release
DISTRIB_ID=CentOS
DISTRIB_RELEASE=10000
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="CentOS 1000"
EOF
}
ZAB_BBIX () {
apt-get install zabbix-agent
mv /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak
cp /home/admin/zabbix_agentd.conf /etc/zabbix/
cp /home/admin/zabbix_agentd.conf /tmp
service zabbix-agent restart
}
IP_TABLES
SSH_INIT
PY_INIT
WEB_INIT
MO_TD
ZAB_BBIX
对应回滚脚本
#!/bin/bash
#安全加固后,服务器如有问题时的回滚方案;
IP_TABLES_F () {
iptables -F
}
SSH_INIT_F () {
sed -i 's/AllowUsers xxxxxxxx//g' /etc/ssh/sshd_config
userdel xxxxxxxx
service ssh restart
}
WEB_INIT_F () {
chmod 700 /var/www/html
chown admin.admin /var/www/html
usermod -s /sbin/false www-data
}
PY_INIT_F () {
chmod 700 /home/admin
}
MO_TD_F() {
rm -rf /etc/motd
mv /etc/.motd.bak /etc/motd
rm -rf /etc/update-motd.d/00-header
mv /etc/update-motd.d/.00-header.bak /etc/update-motd.d/00-header
rm -rf /etc/lsb-release
mv /etc/.lsb-release.bak /etc/lsb-release
}
ZA_BBIX_F () {
service zabbix-agent stop
apt-get remove zabbix-agent
rm -rf /etc/zabbix/
}
IP_TABLES_F
SSH_INIT_F
WEB_INIT_F
MO_TD_F
ZA_BBIX_F
PY_INIT_F
对无agent探针的RDS网络监控
#!/bin/bash
#用户RDS通知及报警
#作者:任锦
#RDS_IP="localhost"
RDS_IP="www.xxxxxxxx.com"
TOOL_S () {
rpm -qa nc &> /dev/null || yum -y install nc
}
ON_LINE () {
DATE=`date | awk '{print $4}' | cut -d":" -f3`
echo -e "\n\n" |nc -w 5 $RDS_IP 3306 &> /dev/null || STATP="RDS 服务器已经停止了运行,请您尽快来处理 😰 😰 😰 😰 😰 😰 "
#echo $STATP
}
WEI_XIN () {
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$STATP" --user=xxx@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$STATP" --user=xxx2@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$STATP" --user=xxx3@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$STATP" --user=xxx4@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
while sleep 60 ; do
TOOL_S
ON_LINE
WEI_XIN
done
除线上zabbix多角度的监控网络状态
#!/bin/bash
HOSTS () {
CN='xxx.xxx.xxx.xxx xxx.xxx.xx.xx.xxx xxx.xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx'
HK='xxx.xxx.xxx.xxx xxx.xxx.xx.xx.xxx xxx.xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx'
XN='xxx.xxx.xxx.xxx xxx.xxx.xx.xx.xxx xxx.xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx'
}
MESSAGES () {
OK_MESSAGES_CN='阿里云xx区域ECS主机网络正常'
OK_MESSAGES_HK='阿里云xx区域ECS主机网络正常'
OK_MESSAGES_XN='阿里云xx区域ECS主机网络正常'
CN_MES='阿里云xx区域ECS主机网络不通!'
HK_MES='阿里云xx区域ECS主机网络不通!'
XN_MES='阿里云xx区域ECS主机网络不通!'
CN_MES_TIME="阿里云xx区域ECS主机网络超时较高,超时时间及丢包率为"
HK_MES_TIME="阿里云xx区域ECS主机网络超时较高,超时时间及丢包率为"
XN_MES_TIME="阿里云xx区域ECS主机网络超时较高,超时时间及丢包率为"
}
WEIXIN_E-MAIL_API () {
# echo "$1
# $2" | mutt -s "Zabbix 报警" xxx@xxxxxxxxxxx.com xxx2.xxxxxxxxxxxx.com xxx3@xxxxxxxxxxx.com
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --
corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$1
$2" --user=xxx@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$1
$2" --user=xxx2@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$1
$2" --user=xxx3@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
/bin/weixin --corpid=xxxxxxxxxxxxxxxxxx --corpsecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --msg="$1
$2" --user=xxx4@xxxxxxxxxxx.com --agentid=xxxxxx02 &> /dev/null
}
HOSTS
MESSAGES
for HOSTS_NET_CN in $CN
do
STATE_CN=`ping -c 2 -W 1 -S 1 $HOSTS_NET_CN | tail -n 2 | head -n 1 | awk {'print $6'}`
TIME_CN=`ping -c 2 -W 1 -S 1 $HOSTS_NET_CN | head -n 3 | tail -n2 | awk {'print $7,$8'}`
if ping -c 2 -W 1 -S 1 $HOSTS_NET_CN &> /dev/null ;then
echo "$OK_MESSAGES_CN `date` $HOSTS_NET_CN OK" &>> /tmp/$HOSTS_NET_CN
else
WEIXIN_E-MAIL_API "$CN_MES `date` $HOSTS_NET_CN $CN_MES_TIME $STATE_CN
$TIME_CN" "PROBLEM"
fi
done
for HOSTS_NET_HK in $HK
do
STATE_HK=`ping -c 2 -W 1 -S 1 $HOSTS_NET_HK | tail -n 2 | head -n 1 | awk {'print $6'}`
TIME_HK=`ping -c 2 -W 1 -S 1 $HOSTS_NET_HK | head -n 3 | tail -n2 | awk {'print $7,$8'}`
if ping -c 2 -W 1 -S 1 $HOSTS_NET_HK &> /dev/null ; then
echo "$OK_MESSAGES_HK `date` $HOSTS_NET_HK OK" &>> /tmp/$HOSTS_NET_HK
else
WEIXIN_E-MAIL_API "$HK_MES `date` $HOSTS_NET_HK $HK_MES_TIME $STATE_HK
$TIME_HK" "PROBLEM"
fi
done
for HOSTS_NET_XN in $XN
do
STATE_XN=`ping -c 2 -W 1 -S 1 $HOSTS_NET_XN | tail -n 2 | head -n 1 | awk {'print $6'}`
TIME_XN=`ping -c 2 -W 1 -S 1 $HOSTS_NET_XN | head -n 3 | tail -n2 | awk {'print $7,$8'}`
if ping -c 2 -W 1 -S 1 $HOSTS_NET_XN &> /dev/null ; then
echo "$OK_MESSAGES_XN `date` $HOSTS_NET_XN OK" &>> /tmp/$HOSTS_NET_XN
else
WEIXIN_E-MAIL_API "$XN_MES `date` $HOSTS_NET_XN $XN_MES_TIME $STATE_XN
$TIME_XN" "PROBLEM"
fi
done
将对应的脚本加入定时计划
crontab -e
*/3 * * * * /bin/bash /root/bin/ds.sh
关于/bin/weixin
链接:http://pan.baidu.com/s/1slcAlTb 密码:f3gz
weixin接口的调用可以创建一个企业微信来配置一个接口
mutt发短信,mutt+msmtp配置使用
删除mongo表中的某一字段
db.screening_sections.remove({'no':'5a279c19756a7'})