作者 主題: 排程執行script的問題  (閱讀 6296 次)

0 會員 與 1 訪客 正在閱讀本文。

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
排程執行script的問題
« 於: 2007-05-30 10:43 »
各位大大安安
小弟有一事想請教一下
我的系統為FC6
目前工作為gateway的身份
所以上面除了NAT之外還有讓內部user經由proxy來上網
所以我寫了一個firewall.sh來執行
為了避免user於上班時間看線上影片
我的proxy有擋影音檔
但是主管說
下班時間就不要檔影音檔
所以我再將原來的firewall.sh複製了另一個檔為firewall-no-proxy.sh
而這個檔案的內容只是把firewall.sh裡面走TP的部份註解了
意思就是上班時間user必須經過proxy出去
下班時間user就無需經過proxy出去

但是問題來了
我將這兩個指令排程
firewall.sh於早上九點執行
firewall-no-proxy.sh於晚上六點執行
並且執行後需輸出log以確定是否有執行
我昨天晚上下班時已設定好了
但是今天早上來看
九點之後看一下iptables -t mangle -L -n -v
發現我在firewall.sh所執行的mangle的部份都沒有
是預設值
但是我手動去執行sh firewall.sh後
就有看到我設定mangle的部份
我有去查log
有產生而且時間也是我設定的時間
這是什麼問題呢

這是我的crontab內容
0 19 * * * sh /root/firewall-no-proxy.sh > /var/log/no-proxy.log
0 8 * * * sh /root/firewall.sh > /var/log/proxy.log

路徑正確但不知為何會這樣
謝謝

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
排程執行script的問題
« 回覆 #1 於: 2007-05-30 10:50 »
script 裡面的命令都用絕對路径試試?

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
排程執行script的問題
« 回覆 #2 於: 2007-05-30 11:05 »
研究一下,原 PO 的問題是否可以用這個方法獲得解決?
http://www.netfilter.org/documentation/HOWTO//netfilter-extensions-HOWTO-3.html#ss3.19
# iptables -A INPUT -m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
排程執行script的問題
« 回覆 #3 於: 2007-05-30 11:43 »
我節錄script的某些部份

#!/bin/sh
IPT=/sbin/iptables
IP=/sbin/ip

echo 0 > /proc/sys/net/ipv4/ip_forward

###############################
## define interface information
# interfaces
IEXT1=eth0
IEXT2=eth3
IINT1=eth2
IINT2=tun0

**********************(略...內容為IP)

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

$IPT -t filter -N tcprules


##L7 filter
iptables -t mangle -A PREROUTING -m layer7 --l7proto code_red -s 0.0.0.0 -j DROP #Virus
iptables -t mangle -A PREROUTING -m layer7 --l7proto nimda -s 0.0.0.0 -j DROP #Virus

iptables -t mangle -A PREROUTING -m layer7 --l7proto bittorrent -s 10.10.11.0/24 -j DROP #Block BT
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -s 10.10.11.0/24 -j DROP #Block BT

iptables -t mangle -A PREROUTING -m layer7 --l7proto bittorrent -s 10.10.21.0/24 -j DROP #Block BT
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -s 10.10.21.0/24 -j DROP #Block BT

iptables -t mangle -A PREROUTING -m layer7 --l7proto edonkey -s 10.10.11.40 -j ACCEPT #ACCEPT Emule from Chou
iptables -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -s 10.10.11.40 -j ACCEPT #ACCEPT Emule from Chou

iptables -t mangle -A PREROUTING -m layer7 --l7proto edonkey -s 10.10.11.224 -j ACCEPT #ACCEPT Emule from PIN
iptables -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -s 10.10.11.224 -j ACCEPT #ACCEPT Emule from PIN

iptables -t mangle -A PREROUTING -m layer7 --l7proto edonkey -s 10.10.11.0/24 -j DROP #Block Emule
iptables -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -s 10.10.11.0/24 -j DROP #Block Emule

iptables -t mangle -A PREROUTING -m layer7 --l7proto edonkey -s 10.10.21.0/24 -j DROP #Block Emule
iptables -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -s 10.10.21.0/24 -j DROP #Block Emule

iptables -t mangle -A PREROUTING -m layer7 --l7proto rtsp -s 10.10.11.0/24 -j DROP #Block realtime streaming
iptables -t mangle -A POSTROUTING -m layer7 --l7proto rtsp -s 10.10.11.0/24 -j DROP #Block realtime streaming

iptables -t mangle -A PREROUTING -m layer7 --l7proto rtsp -s 10.10.21.0/24 -j DROP #Block realtime streaming
iptables -t mangle -A POSTROUTING -m layer7 --l7proto rtsp -s 10.10.21.0/24 -j DROP #Block realtime streaming

iptables -t mangle -A PREROUTING -m layer7 --l7proto 100bao -s 10.10.11.0/24 -j DROP #Block 100BAO P2P
iptables -t mangle -A POSTROUTING -m layer7 --l7proto 100bao -s 10.10.11.0/24 -j DROP #Block 100BAO P2P

iptables -t mangle -A PREROUTING -m layer7 --l7proto 100bao -s 10.10.21.0/24 -j DROP #Block 100BAO P2P
iptables -t mangle -A POSTROUTING -m layer7 --l7proto 100bao -s 10.10.21.0/24 -j DROP #Block 100BAO P2P

iptables -t mangle -A PREROUTING -m layer7 --l7proto gnutella -s 10.10.11.0/24 -j DROP #Block gnutella
iptables -t mangle -A POSTROUTING -m layer7 --l7proto gnutella -s 10.10.11.0/24 -j DROP #Block gnutella

iptables -t mangle -A PREROUTING -m layer7 --l7proto gnutella -s 10.10.21.0/24 -j DROP #Block gnutella
iptables -t mangle -A POSTROUTING -m layer7 --l7proto gnutella -s 10.10.21.0/24 -j DROP #Block gnutella

## open some allowed service connection
$IPT -A tcprules -p tcp -m multiport --dport 20,21,25,53,80,110,161,162,8050 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET2 --dport 22 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET2 --dport 8080 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET2 --dport 3128 -j ACCEPT
$IPT -A tcprules -p tcp -s 127.0.0.1 --dport 3128 -j ACCEPT
$IPT -A tcprules -p tcp -s 127.0.0.1 --dport 8080 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET2 --dport 3000 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET2 --dport 50001 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET1 --dport 22 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET1 --dport 8080 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET1 --dport 3128 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET1 --dport 3000 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET1 --dport 50001 -j ACCEPT
$IPT -A tcprules -p tcp -s 220.130.148.52 --dport 22 -j ACCEPT
$IPT -A tcprules -p tcp -s 220.130.148.52 --dport 50001 -j ACCEPT
$IPT -A tcprules -p tcp -s 220.130.148.52 --dport 3000 -j ACCEPT
$IPT -A tcprules -p tcp -s 221.226.155.21 --dport 3000 -j ACCEPT
$IPT -A tcprules -p tcp -s 58.240.123.102 --dport 3000 -j ACCEPT
$IPT -A tcprules -p tcp -s 58.240.123.102 --dport 22 -j ACCEPT
$IPT -A tcprules -p tcp -s 219.84.72.241 --dport 22 -j ACCEPT
$IPT -A tcprules -p tcp -s 219.84.72.241 --dport 3000 -j ACCEPT
$IPT -A tcprules -p tcp -s 219.84.72.241 --dport 50001 -j ACCEPT
$IPT -A tcprules -d 218.83.161.61 -j DROP
$IPT -A tcprules -p tcp --dport 22 -j DROP
$IPT -A tcprules -p tcp --dport 23 -j DROP
$IPT -A tcprules -p tcp --dport 8080 -j DROP
$IPT -A tcprules -p tcp --dport 3128 -j DROP
$IPT -A tcprules -p tcp --dport 111 -j DROP
$IPT -A tcprules -p tcp --dport 3000 -j DROP
$IPT -A tcprules -p tcp --dport 50001 -j DROP
$IPT -A tcprules -p udp -m multiport --dport 53,161 -j ACCEPT
$IPT -A tcprules -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -p udp -j ACCEPT
iptables -A FORWARD -i tun+ -p udp -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET2 -j ACCEPT
$IPT -A tcprules -p tcp -s $INTNET1 -j ACCEPT
#$IPT -A tcprules -i eth2 -p tcp -m multiport --dport 161,162 -j ACCEPT
#$IPT -A tcprules -i eth2 -p udp --dport 161 -j ACCEPT

請問一下
這是firewall.sh的部份內容
這個檔案是放在/root/下
所以我的crontab的設定應該是正確的吧
還是是crontab設定有問題嗎

wuposheng

  • 憂鬱的高中生
  • ***
  • 文章數: 172
    • 檢視個人資料
排程執行script的問題
« 回覆 #4 於: 2007-05-30 11:49 »
有沒有可能是你執行該shell的權限不足
或是你沒有執行iptables的權限
你可以用sh -x將執行過程導出來看看有沒有更進一步的資訊

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
排程執行script的問題
« 回覆 #5 於: 2007-05-30 11:58 »
引述: "jou"
研究一下,原 PO 的問題是否可以用這個方法獲得解決?
http://www.netfilter.org/documentation/HOWTO//netfilter-extensions-HOWTO-3.html#ss3.19
# iptables -A INPUT -m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT


感謝大大的指教
請問一下
現在iptables有內建這個功能了嗎
另外該語法是如何配合proxy TP的功能呢

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
排程執行script的問題
« 回覆 #6 於: 2007-05-30 12:00 »
引述: "wuposheng"
有沒有可能是你執行該shell的權限不足
或是你沒有執行iptables的權限
你可以用sh -x將執行過程導出來看看有沒有更進一步的資訊


我在crontab裡面的設定
是以root為權限
並且我如果以手動執行該sh檔
就有反應了
怪怪的

vantien

  • 憂鬱的高中生
  • ***
  • 文章數: 118
    • 檢視個人資料
排程執行script的問題
« 回覆 #7 於: 2007-05-30 13:25 »
問個奇怪問題?
下班時間就不限制?
下班後人不是都該走了?
還是指鼓勵員工下班後電腦通通開著p2p抓東西 = ="

對了,看你秀的 script 好像沒先做清除的動作再設定
會不會是因為這樣所以造成在切換時規則重疊混淆

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
排程執行script的問題
« 回覆 #8 於: 2007-05-30 13:57 »
....
##L7 filter
iptables -t mangle -A PREROUTING -m layer7 --l7proto code_red -s 0.0.0.0 -j DROP #Virus
iptables -t mangle -A PREROUTING -m layer7 --l7proto nimda -s 0.0.0.0 -j DROP #Virus
....
上面的 iptables 要改成絕對路徑才行。

要不呢,在 script 前頭加上:
PATH=/sbin;/usr/sbin:/bin:/usr/bin

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
排程執行script的問題
« 回覆 #9 於: 2007-05-31 09:29 »
引述: "vantien"
問個奇怪問題?
下班時間就不限制?
下班後人不是都該走了?
還是指鼓勵員工下班後電腦通通開著p2p抓東西 = ="

對了,看你秀的 script 好像沒先做清除的動作再設定
會不會是因為這樣所以造成在切換時規則重疊混淆


感謝大大的指教
其實我們只是下班的時候不擋線上影片
P2P我們還是有用L7 filter擋下來

規則應該是有清除了
不然不會一換規則就空了

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
排程執行script的問題
« 回覆 #10 於: 2007-05-31 17:48 »
引述: "netman"
....
##L7 filter
iptables -t mangle -A PREROUTING -m layer7 --l7proto code_red -s 0.0.0.0 -j DROP #Virus
iptables -t mangle -A PREROUTING -m layer7 --l7proto nimda -s 0.0.0.0 -j DROP #Virus
....
上面的 iptables 要改成絕對路徑才行。

要不呢,在 script 前頭加上:
PATH=/sbin;/usr/sbin:/bin:/usr/bin


感謝大大的解答
目前測試正常
明天早上再來看看
如果OK就好了
謝謝

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
排程執行script的問題
« 回覆 #11 於: 2007-06-01 09:54 »
經過一天的測試
發現真的是路徑的問題
已經解決了
謝謝哦