在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
當你的 FreeBSD 安裝好後就內建 FTP ,只是預設不啟動它而已, 有人覺得 FreeBSD 內建的 ftpd 太陽春,會另外用別的 ftpd 來取代, 常見的替代方案有:proftpd , pureftp ......等,不過要隨時注意更新,因為 FTP 程式常常被找到有安全漏洞。
1 以 FreeBSD 內建的 ftpd 提供服務一般說來,當你安裝好 FreeBSD ,FTP 的服務程式 /usr/libexec/ftpd 就有了只要修改一下 /etc/inetd.conf , FTP 服務就已經可以提供給有本機帳號的人使用 1-1 打開 FTP 服務FreeBSD 系統的預設 ftpd 提供 daemon 模式(stand alone)和由 inetd 啟動 ftpd 兩種方式兩種方式比較起來,daemon 的方式適合對同一時間連線使用多,負載較大的主機 1-1-1 方法一:daemon 模式 (stand alone)1-1-1-1 立即啟動 ftpd daemon如果只是要馬上啟動服務只要執行:/usr/libexec/ftpd -D -l -l參數說明:
1-1-1-2 如何讓 FreeBSD 開機時自動啟動 ftpd如果只用前面的方法啟動 ftpd daemon,下次系統重新開機後就沒了,為了讓它能自動啟動,我們可以把啟動指令放入 /etc/rc.local 中或是仿 /usr/local/etc/rc.d 的檔案,自己寫個 ftpd.sh 。 例一:ee /etc/rc.local在裡面放一行: /usr/libexec/ftpd -D -l -l例二: 仿 /usr/local/etc/rc.d 中的檔案,新增一個叫 ftpd.sh 的 script : ee /usr/local/etc/rc.d/ftpd.sh裡面放入下面的內容:
chmod 554 /usr/local/etc/rc.d/ftpd.sh這樣,當 FreeBSD 開機時就會自動啟動 ftpd ,也可以利用 /usr/local/etc/rc.d/ftpd stop 來停止服務,執行時要加什麼參數就修改 ftpd_flag 那行。 1-1-2 方法二:由 inetd 來啟動 ftpd這種方式,想當然爾,就是要修改 /etc/inetd.conf 囉:ee /etc/inetd.conf先檢查一下 /etc/inetd.conf 中有沒有下面這行:
kill -HUP `cat /var/run/inetd.pid`讓 inetd 重新抓取 /etc/inetd.conf 設定檔就好了 注意:上面的 ` 是 Esc 鍵下面那鍋毛毛蟲的按鍵哦,可別打成單引號 1-2 停止 FTP 服務如果要停止 FTP 服務,看之前是以 daemon 模式啟動還是 inetd 模式啟動而有所不同。1-2-1 daemon 模式daemon 模式可以執行下列指令來終止 ftpd 的程序:killall ftpd如果之前是將 ftpd 放在 /etc/rc.local 中來由系統在開機時自動啟動,可以用下面的方法來停止自動提供 FTP 服務。 先打開 /etc/rc.local 來編輯,執行:ee /etc/rc.local將檔案中,執行 ftpd 那行的最前面加個井字號,儲存好即可。 1-2-2 inetd 模式當初是以 inetd 模式來提供服務的,則要修改 inetd 的設定檔 /etc/inetd.conf ,並讓 inetd 重新讀取設定。先打開 /etc/inetd.conf 來編輯,執行:如果要確認 FTP 服是否已經停止了,可以執行:ee /etc/inetd.conf將設定檔中,有 ftpd 那行的前面加上井字號後,儲存設定檔。 讓 inetd 重讀設定檔,執行下面指令:kill -HUP `cat /var/run/inetd.pid` netstat -na看看下面這行是不是已經消失了: tcp4 0 0 *.21 *.* LISTEN 1-3 限制使用者只能在自己目錄活動(chroot)如果沒有特殊設定,使用者用自己的帳號 FTP 到主機後,可以自由的切換任意目錄的,如果不想讓它亂跑則要做以下設定。1-3-1 方法一:利用 /etc/ftpchrootFreeBSD 的 ftpd 以 /etc/ftpchroot 來控制哪些人或群組要如何 chroot ,所以我們開啟/新增這個設定檔來編輯。ee /etc/ftpchroot在檔案裡面放入我們要管制的人或群組:
說明: 小老鼠開頭的表示後面接的名稱為群組。有方法可以只開放一個帳號不 chroot 其它全部 chroot 嗎? 最近 FreeBSD 內建的 ftpd 在 /etc/ftpchroot 又多了可設定的東東, 如果 man ftpchroot 可以看到說明,就表示可以使用下面的的設定來達到只開放部份帳號不鎖定在個人目錄的目的。 首先開啟 /etc/ftpchroot 來編輯: ee /etc/ftpchroot假設 admin 是管理員的帳號,讓 admin 可以在系統中到處游走,就裡面放入下面三行:
1-3-2 方法二:利用 /etc/login.conf這個方法是利用使用者資料庫 (系統密碼檔 /etc/master.passwd) 中 login class 的欄位,來設定使用者隸於的 class ,然後在 /etc/login.conf 中設定各 class 在 FTP chroot 的動作為何,在 /etc/ftpchroot 不方便設定時,適用於要處理很多人的狀況。開啟 /etc/login.conf 來修改,執行:ee /etc/login.conf然後找到下面 default: 開頭的哪幾行,類似下面的內容:
加下面這一行::ftp-chroot:\變成:
然後執行下列這行指令,把 login.conf 轉成資料庫格式cap_mkdb /etc/login.conf這樣,所有的帳號都會做 chroot,活動的範圍就限定在自己的目錄中。 想全部管制,但又想開放系統管理用的帳號不做 chroot 呢? 前面的方法,我們設定的是 default 這個 login class 要做 FTP 的 chroot,也就是所有人共同的設定,想讓系統管理可以到處游走,就設定一個系管的 class ,並且將 ftp-chroot 的屬性去掉即可達到部份開放的目的。 開啟 /etc/login.conf 新增系管的 login class 叫 admin,並加入 ftp-chroot 為否的設定:ee /etc/login.conf新增下面幾行(注意藍色的部份), 注意:除了前面 defaults: 下的 ftp-chroot 部份,我們在下面另外新增一個 login class 叫 admin:
然後執行下列這行指令,把 login.conf 轉成資料庫格式:將不同身份的使用者分為幾個 login class,並利用 /etc/login.conf 來設定各身份能夠使用的系統資源是滿不錯的管制工具,非常值得好好的研究,詳細的內容可以 man login.conf 。cap_mkdb /etc/login.conf注意:上面在 admin 這個 class 中用的是::ftp-chroot@:\ftp-chroot 多了個小老鼠哦!它代表這個值要相反的意思,也就不做 ftp-chroot。 再來,我們要告訴系統,誰屬於 admin 這個 login class ,直接修改帳號資料庫,執行vipw修改管理員 (不做 chroot) 的 login class 為 admin 例如:假設系統管理員 gsyan 原來的帳號資料是:都修改完了就儲存檔案,利用 FTP 軟體以不同身份登入測試看看。 說明:gsyan:*:1000:1000::0:0:大雄:/home/gsyan:/bin/tcsh要將它的 login class 修改為 admin ,就改為下面的樣子:gsyan:*:1000:1000:admin:0:0:大雄:/home/gsyan:/bin/tcshFreeBSD 中 /etc/master.passwd 密碼欄位依序為: 帳號名稱:密碼:UID:GID:class:強制換密碼的時間:有效時間:資料:家目錄:shell 所以要改的 login class 是第五個欄位。 關於密碼檔的格式可以 man 5 passwd 查看 1-4 提供匿名(訪客用)的 FTP 服務讓在系統中沒有帳號訪客可以下載 FTP 站中的檔案,這種叫匿名的 FTP 服務 (Anonymous FTP),要提供這種服務必須有一個叫 ftp 的帳號並建立好相關的目錄及檔案,這部份如果不清楚,利用 /stand/sysinstall 來做是最輕鬆不過的。底下是設定的步驟:1.呼叫 /stand/sysinstall ,執行:/stand/sysinstall2.當出現安裝點單『/stand/sysinstall Main Menu』, 按方向鍵移到『Configure』,然後按空白鍵 3.進入到『FreeBSD Configuration Menu』後,按方向鍵移到『Networking』,然後按空白鍵 4.進入到『Network Services Menu』後,按方向鍵移到『Anon FTP』,後按空白鍵 5.進入到『Anonymous FTP Configuration』後,輸入下面的資料: 6.輸入完畢後就按 OK 。 /stand/sysinstall 幫你做了什麼事?!
一定要注意各目錄的權限,目錄只要有 Write 的權限,訪客就可以任意上載/修改/刪除檔案,如果 FTP 主機被有心人士發現可以任意上載檔案,呵~網路流量可能會直線爆增。相關檔案:
1-5 讓 fptd 可以記錄傳輸狀況ftpd 的啟動參數有 -l 可以讓負責系統記錄的 syslogd 將 FTP 連線情形記錄下來,不過我們必須先設定 /etc/syslog.conf ,並且讓 syslogd 重新讀取設定檔,才能發生作用。 下面是設定的步驟:1.產生空的記錄檔 /var/log/ftpd ,執行下面的指令:touch /var/log/ftpd2. 修改 syslod 的設定檔開啟 /etc/syslog.conf 來編輯:3.讓 syslogd 重新讀取 /etc/syslog.confee /etc/syslog.conf找到含有 mail.info 的那一行mail.info /var/log/maillog在前述那行的下面新增一行:ftp.* /var/log/ftpd加完以後,按 Esc 鍵,再按兩次 Enter 鍵,將設定檔儲存好。執行下面的指令通知 syslogd 重新讀取設定:kill -HUP `cat /var/run/syslogd.pid`※ 注意:` 是按鍵盤上毛毛蟲那個按鍵哦! 2 FTP 的架設─pure-ftpd
3 以 wu-ftpd 架設 FTP (建議用別的方案取代)雄曰:現在都直接用 FreeBSD 內建的 ftpd ,下面的部份已經好久沒用囉!都是舊資料啦,希望不會誤導。 wu-ftp (Washington University FTP) 由於功能強大,過去在 Unix Like 的主機上被廣為採用,或許是用的人多,也成為大家研究的焦點, 經常被發現有安全漏洞,所以安裝後一定要經常注意相關訊息,隨時更新。 3-1 安裝 wu-ftpd方法一:用 packagespkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/wu-ftpd.tgz方法二:用 ports 編譯 wu-ftpd 時需要用到 autoconf213 ,記得要先安裝好該工具,並確認 ports tree 中有 /usr/ports/devel/autoconf213 才不會出現錯誤。 如果沒有可以執行下面指令安裝 autoconf213 及抓取 ports 相關檔案:pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/autoconf213.tgz cd /usr/ports/devel準備好後即可準備進行編譯及安裝: 3-2 修改設定檔wu-ftpd 會用到的設定檔如下:
cd /usr/local/etc只要稍加修改就可以用囉! ftpaccess 中常用的設定:
3-3 修改 /etc/inetd.conf我們打算讓 wuftpd 以 inetd 的模式提供服務,所以要先修改 /etc/inetd.conf ,然後讓 inetd 重新讀取設定檔。開啟 /etc/inetd.conf 來修改:最後利用 netstat -na 來觀察服務是否啟動,或是以 FTP 軟體來測試。 記得隨時注意安全警示,有問題要馬上更新程式,以免被駭! 本文出自 51CTO.COM技术博客ee /etc/inetd.conf將含有 ftp 開頭的那行改為下面的內容:ftp stream tcp nowait root /usr/local/libexec/ftpd ftpd -a然後讓 inetd 重新讀取設定檔,執行下面的指令:kill -HUP `cat /var/run/inetd.pid` |
请发表评论