web環境之安全小腳本

1、md5sum -c 可以用來批量校驗,方便查看文件是否被篡改

例子:

find /var/log -type f|xargs md5sum > md5list.txt #遞歸log下的文件的md5值輸出重定向到md5list.txt文件中
#使用md5sum校驗
[root@test test]# md5sum -c md5list.txt

/var/log/tallylog: OK
/var/log/lastlog: OK
/var/log/wtmp: OK
......

2、使用wc -l來統計文件數量

例子:

[root@test test]# find /var/log -type f |wc -l
241


3、單個目錄下禁止執行php文件

#禁止執行php文件
    location ~* ^/home/www/test/.*.(php|php5)$ {
                deny all;
    }


4、監控網站是否異常腳本

#!/bin/sh
#filename is test.sh

#source或. file.sh 重新執行剛修改的初始化文檔
[ -f /etc/init.d/functions ]&& . /etc/init.d/functions

# $0:當前文件的名字
usage(){
        echo "USAGE:$0 url"
        exit 1
}

#初始化變量
RETVAL=0

#函數體
CheckUrl(){

        # -T:限制時間10s    -t:限制次數2
        wget -T 10 --spider -t 2 $1 &>/dev/null
        # $?:記錄上一次命令的退出狀態
        RETVAL=$?
        if [ $RETVAL -eq 0 ];then
                action "$1 url" /bin/true
        else
                action "$1 url" /bin/false
        fi
        return $RETVAL
}
main(){
        if [ $# -ne 1 ];then
                usage
        fi
        CheckUrl $1
        RETVAL=$?
        return $RETVAL
}
# $*:只允許傳參數爲1
main $*


5、小小跳板機(ssh遠程主機)

①創建一個menu腳本

#!/bin/bash
function trapper(){
    trap '' INT QUIT TSTP TERM HUP
}

function menu(){
cat <<EOF
============HOST LIST============
    1)192.168.13.129
    2)192.168.13.130
    3)exit
=================================
EOF
}

function host(){
    case "$1" in
        1)
            ssh [email protected]
            ;;
        2)
            ssh [email protected]
            ;;
        3)
            exit 0
            ;;
        *)
            menu
    esac
}
main(){
    trapper
    while true
    do
        clear
        menu
        read -p "please input number:" num
        host $num
    done
}
main

②設置權限(腳本位置放在/etc/profile.d目錄下面)

[ $UID -ne 0 ]&&[ $USER != "test" ] &&\
. /test/menu.sh

除了uid爲0,user爲test的用戶都必須進入跳板機系統!


6、mysql分庫備份腳本

#!/bin/sh
#數據庫備份路徑
backpath=/server/backup
myuser=root
mypass=admin123
#mysql.sock應該是mysql的主機和客戶機在同一host上的時候,使用unix domain socket做爲通訊協議的載體,它比tcp快.
socket=/tmp/mysql.sock
mycmd="mysql -u$myuser -p$mypass -S $socket"
#-B:導出幾個數據庫,-x:提交請求鎖定所有數據庫中的所有表,以保證數據的一致性
#-R:導出存儲過程以及自定義函數.-F:在備份前刷新MySQL服務器的日誌
mydump="mysqldump -u$myuser -p$mypass -S $socket -x -B -F -R"
#如果$backpath目錄不存在則創建
[ ! -d $backpath ] && mkdir -p $backpath
dblist=`$mycmd -e "show databases;"|sed 1d|egrep -v "information_schema|performance_schema"`
for dbname in $dblist
do
    $mydump $dbname|gzip >${backpath}/${dbname}_$(date +%F).sql.gz
done
























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章