[toc]
安全加固
安全加固脚本V1
- 用来做iptables ssh地址白名单限制
- openssh-server ssh用户白名单限制
- 更改登录欢迎信息为警告信息
- 应用根目录权限最小化
- zabbix agent安装配置
| #!/bin/bash |
| |
| |
| IP_TABLES () { |
| /sbin/iptables -A INPUT -p tcp --dport 22 -s xxx.xxx.xx.xx -j ACCEPT |
| /sbin/iptables -A INPUT -p tcp --dport 22 -s xxx.xxx.xx.xx -j ACCEPT |
| /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 |
| 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 |
| service ssh restart |
| } |
| |
| PY_INIT () { |
| chmod 700 /home/admin/ |
| } |
| WEB_INIT () { |
| chown www-data.www-data /var/www/html && chmod 700 /var/www/html |
| usermod -s /sbin/nologin 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_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 服务器已经停止了运行,请您尽快来处理 😰 😰 😰 😰 😰 😰 " |
| |
| } |
| |
| 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 () { |
| |
| |
| |
| /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'}) |