抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

[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'})

评论