2013年9月12日 星期四

Apache allow,deny rule

這幾天 有個新功能 用到了  apache 相關的設定
<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  192.168.16.100
    Allow from 192.168.16.0/24
</Location>
設置網段後 又想獨立設定網段中某一個IP
也就是說 小範圍的設定 會優先於大範圍的
ex: 我想在 192.168.16.0/24 網段中 全部通過 但 只想其中某個 16.100 阻擋
此時該怎麼設定呢
上面這個設定 是可以達到這目的

一開始沒弄懂 他實際的條件與規則
想破頭都想不出該怎麼辦

後來才看到 上面這樣的寫法
但通常 我們會用 deny from all
他怎麼沒有擋 這樣好像怪怪的

後來又翻到下面這個表~~~
其中 Order Allow,Deny > 意指先比 允許的 在比 拒絕的
但他看的是最後比到的為主喔~
Match      | Allow,Deny result   | Deny,Allow result
-------------------------------------------------------
Allow only | Allowed             | Allowed
Deny only  | Denied              | Denied
No match   | Default: Denied     | Default: Allowed
Match both | Final match: Denied | Final match: Allowed
才恍然大悟阿~~~

預設是全部deny
狀況1 :   ip-deny,subnet-allow
>> 就等同第一個圖的方式

狀況2:  ip-allow,subnet-allow
<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Allow from 192.168.16.100
</Location>
突然想到
其實 只要把加入的ip 去比對 目前允許的subnet 如果在其中才額外加deny就可以了

不過 沒有很詳細研究
因為不是我擅長的領域阿 ~ 只是碰到插個花
請多多指教囉~



沒有留言:

張貼留言

留言前請三思,禁止任何色情暴力等不當言語