檢視 為 FreeBSD 加入 ipfw 防火牆 的原始碼
←
為 FreeBSD 加入 ipfw 防火牆
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這些群組的使用者能使用:
使用者
、
管理員
您可以檢視並複製此頁面的原始碼。
[[Category:FreeBSD相關文件|{{PAGENAME}}]] 作者:Joe Horn( joehorn AT leobbs DOT net ) 授權:[[http://creativecommons.org/licenses/by-nc-sa/2.5/ CC授權:姓名標示-非商業性-相同方式分享 2.5]] 附註:本文件適用於 FreeBSD 平台,其它 UNIX-Like OS 可能有所不同。 ---- ==前言== 有鑑於近年來網路安全漸漸被大家重視,Windows 系統上面的防火牆軟體越來越多,而 Linux 也幾乎都內建了防火牆功能,故撰此文件。 ==修改與編譯核心設定檔== 修改您的 kernel 設定檔,在裡面加進以下這段: <pre>options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPFIREWALL_DEFAULT_TO_ACCEPT</pre> * 另外要注意的是,如果您使用的是 2005 年 3 月 2 日以後的 FreeBSD ,而且有打算用 ipfw 來 forward 封包的話,必須再加進這行: : <pre>options IPFIREWALL_FORWARD_EXTENDED</pre> 如果有打算用 ipfw 來作頻寬控管的話,請再加入這行: <pre>options DUMMYNET</pre> 其他的選項與各項說明可以參考 /sys/i386/conf/LINT(FreeBSD 5.0 以後之版本請參考 /sys/i386/conf/NOTES)。 重新 make kernel。 ==設定 ipfw== 修改 /etc/rc.conf,在裡面加進以下這段內容: <pre>firewall_enable="YES" firewall_type="simple" firewall_script="[用來決定 firewall rule 的 shell script 絕對位置]" firewall_quiet="YES"</pre> * 其中用來決定 firewall rule 的 shell script 絕對位置請自行決定,我的習慣是使用 /etc/rc.firewall_[主機 hostname]。 : 例如:mail.aaa.com.tw 的 firewall rule 的 shell script 就是 /etc/rc.firewall_mail 編輯 firewall rule shell script,請在前面加上這幾行: <pre>#!/bin/sh # ================ # 清除所有防火牆過濾的規則(歸零) /sbin/ipfw -f flush%%</pre> 然後底下請加上自己想要用的 firewall rule. * 注意:前面的規則會先被採用,就算後面有衝突也不會再理會。 ==規則範例與說明== 我舉幾個例子: * 讓 111.222.333.444 無法與我的主機連線(任一 port),用這行: : </pre>/sbin/ipfw add deny all from 111.222.333.444 to any</pre> * 讓 555.666.777.888 無法連線到我的 HTTP port(port 80): : <pre>/sbin/ipfw add deny tcp from 555.666.777.888 to any 80</pre> * 讓 111.222.333.* 無法連線到我的 SMTP port(port 25): : <pre>/sbin/ipfw add deny tcp from 111.222.333.0/24 to any 25</pre> 其他相關設定方式請 man ipfw,或是以下這個網頁: [[http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls.html http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls.html]] ==重新開機並啟動 ipfw== 重新開機,ipfw 在重新開機之後就會啟動。 ==其他指令== * 將所有的 rule 列出來: : <pre># /sbin/ipfw show</pre> * 洗掉所有規則: : <pre># /sbin/ipfw flush</pre> 其他關於 ipfw 的參數請 man ipfw。 ==後記== 值得注意的是,因為我們有在 kernel 中使用 IPFIREWALL_DEFAULT_TO_ACCEPT 這個 options,所以無論我們有沒有加規則,ipfw 都會跑這個 rule: <pre>/sbin/ipfw add allow ip from any to any</pre> 而這個 rule 是優先順序最低的 rule,將會容許所有你沒設定擋掉的 IP/port 做連線。
返回到「
為 FreeBSD 加入 ipfw 防火牆
」。
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
頁面分類
所有頁面
近期變更
隨機頁面
Wiki 編輯語法列表
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊