用 ssmtp 取代 sendmail

情境是,某主機僅提供網頁之服務,要將所有透過網頁或是系統寄出去的信轉到同一網域下的 smtp server。
雖然 sendmail 也可以做這件事,但 sendmail 的設定是在是太麻煩了,安裝新的程式還比較省時 😛

ssmtp 是一隻專門做這件事的程式,他本身沒有寄信的功能,僅能 forward 信件到外部 smtp server。

# cd /usr/ports/mail/ssmtp; make install replace

replace 可以把 sendmail 直接取代掉。

安裝好之後,修改設定檔:

root=[誰要收 root 的信]
mailhub=[外部 smtp server]
rewriteDomain=[寄出的信會顯示的來源網域]
hostname=[本機 hostname]
#FromLineOverride=YES
#這一行可以允許寄件人自訂信件的來源信箱

另外,也可以修改 php.ini:

sendmail_path = /usr/local/sbin/ssmtp -t

記得 man ssmtp 一下看看 ssmtp 有哪些男人可以看。

用 ssmtp 取代 sendmail

FreeBSD pkgng 套件管理系統

FreeBSD 套件管理分為 ports 與 pkg,其中 ports 主要是包含軟體的原始碼,如果要安裝軟體需要從原始碼編譯,優點是可以更改一些編譯選項,自訂一些平常可能不會用到的設定。pkg 則是預先編譯好的軟體,直接下載回來就可以用。使用上其實不是相當方便,舉例來說相依性的問題要自己處理,雖然有像是 portmaster 之類的工具,但是比起 pacman、aptitude 之流,還是有一段距離。

pkgng 是 FreeBSD 下一代的套件管理系統(FreeBSD 10 的預設值),由現有的 pkg 轉移到 pkgng 十分簡單,官方什麼都想好了。

如果還沒有安裝 pkg,使用以下指令安裝:
# cd /usr/ports/ports-mgmt/pkg; make install clean

然後,用 # pkg2ng 將現有的 pkg 轉移到 pkgng 格式。

轉換好了之後,為了確定以後都使用 pkgng 的格式,在 /etc/make.conf 裡面加入:

WITH_PKGNG=YES

不過,在安裝軟體之前,先設定官方的套件庫,建立以下的檔案:

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  enabled: yes
}

之後,你就可以下 pkg install <軟體> 來安裝檔案了!
pkg 可以知道有哪些指令可以下,大致上都跟以前類似,例如 pkg_version -v 改成 pkg version -v,還可以用 # pkgng audit -F 取代以前的 # portaudit -adF 來檢查現有的套件是否有安全性問題!

我的建議:如果要安裝預先編譯的 binary 套件,就使用 pkg 安裝,如果想要自訂編譯選項,就用 portmaster,也很方便!

舊的 pkg_* 工具會在 2014/09/01 正式停止支援。

參考資料

來,跟 pkg_ 說掰掰
http://www.freebsd.org/doc/handbook/pkgng-intro.html
http://lists.freebsd.org/pipermail/freebsd-pkg/2013-October/000107.html
https://wiki.freebsd.org/pkgng

FreeBSD pkgng 套件管理系統

建置 syslog-ng server 統一收集 log

因為之前網站被打,收集 log 的時候痛苦萬分,因此希望架設一個中心的 log server 統一收集 log,如此一來寫一些分析的 script、跑一些服務可以更方便。

雖然 FreeBSD 內建的 syslogd 也有 server 的功能,但其過濾的能力不足,從遠端送過來的 log 會全部混在一起,無法照服務(例:apache)分開,而網路上大部分的教學多是採用 syslog-ng,因此決定來實驗 syslog-ng。

syslog 的標準 RFC 5424 定義了可以用的 syslog facility level,其中我們取 local1 來作為 httpd-access 的記錄檔使用。

以下的範例我要設定來自 client 主機的記錄檔,把 httpd-access 統一存在一個檔案,剩下的照 "$HOST-$FACILITY" 的規則存在 server 上。 繼續閱讀 “建置 syslog-ng server 統一收集 log”

建置 syslog-ng server 統一收集 log

設定 ntpd,避免成為 DDoS 肉雞

大部分系統 ntpd 預設配置檔案都有一個問題,當啟用之後,容易被利用參與 DDoS 放大攻擊。其中的 MONLIST 指令可以回傳該 ntp server 最近聯繫之 ntp server (通常為對時用),若是搭配偽造的 IP address,攻擊者可以創造出類似 DNS 放大攻擊的效果。

CloudFlare 前陣子被 DDoS 攻擊,經查之後發現接近 400 Gbps 的流量是來自於接近 4,500 台的 NTP server 導致的。

於此網站可以查詢有啟動 ntp,可能遭到利用的主機:http://openntpproject.org/ 輸入 IP address range (例:140.115.189.0/24) 可查詢整個網段。

建議各位停用系統中的 ntpd,改用 ntpdate (client only)。 UPDATE: 設定 ntpd 為較好的做法,ntpdate 為過時之工具,參考資料:https://lists.debian.org/debian-user/2002/12/msg04091.html

修改方法為編輯 /etc/rc.conf

ntpd_enable="YES"

編輯 /etc/ntp.conf

server time.stdtime.gov.tw
server watch.stdtime.gov.tw

#反註解,設定不讓他人查詢
restrict default ignore
restrict -6 default ignore
restrict time.stdtime.gov.tw nomodify nopeer noquery notrap
restrict watch.stdtime.gov.tw nomodify nopeer noquery notrap

同時,也可將 ntpdate 放進 crontab,每日自動對時。

參考資料:http://blog.cloudflare.com/technical-details-behind-a-400gbps-ntp-amplification-ddos-attack

設定 ntpd,避免成為 DDoS 肉雞

Proxmox 簡易安裝與設定

proxmox

Proxmox 是一套操作上非常簡單的虛擬化系統,提供了 KVM 等級的虛擬機器建置管理以及 OpenVZ 兩種使用環境。KVM 是 Linux kernel 從底層提供的虛擬化環境,可以支援大部分 x86 架構的硬體(但 CPU 需要支援虛擬化指令集),至於 OpenVZ 則是作業系統等級的虛擬環境,有點類似於 chroot,主要是用同一作業系統提供各種不同的網站服務,基本上效能比較好但是限制稍微多了一點。兩種架構應該都算是 IaaS 的服務。

現在的最新版本是 Proxmox VE3.1,釋出也一段時間了,相信網路上也可以找到不少資源。由於 Proxmox 主要是以 Debian 為基本建立的,因此許多熟悉的指令像是 apt-get 都可以直接套用,熟悉 Ubuntu 的朋友想必操作上絕對沒有問題。

這一次處理 中央網路開源社 的伺服器,由於資源不多因此我們只有一台電腦與一個 IP,要在這種克難的環境下搞出虛擬平台稍微複雜了點。VMWare 之流的軟體硬體支援度不好,Xen 的操作使用又太複雜,再加上沒用過 Proxmox,因此就決定來試試看

安裝

安裝的部份非常簡單,放入光碟一步一步照著教學操作就可以安裝完成。詳細的圖文教學可以參照最底下的連結。 在這邊我們要設定一個主機的 IP 位址方便未來連線。

使用

安裝完之後,變可以透過 https://[your IP]:8006 進入主機的 web 管理介面。這介面真的美觀好用到令人感動 XD

繼續閱讀 “Proxmox 簡易安裝與設定”

Proxmox 簡易安裝與設定

Nginx + PHP-FPM on FreeBSD

閒著沒事幹就嘗試把 Apache 2.2 搭配 PHP-FPM 的架構轉移至 Nginx。

根據維基百科,Nginx 是一個高效率、輕量的 HTTP 伺服器,在靜態檔案的效能相當好,不過若是有處理動態網頁 (像是 PHP) 的需求,則一般透過 FastCGI 的模式執行。先前我們已經建置了 Apache + mod_fcgid 搭配 PHP-FPM 的架構,因此在這次的轉移中我們只要把 Apache 換成 Nginx 即可。

首先就是安裝 Nginx。

cd /usr/ports/www/nginx && make install

安裝 PHP-FPM 與設定的部份就不在詳述了,可以找先前的文章參考。

繼續閱讀 “Nginx + PHP-FPM on FreeBSD”

Nginx + PHP-FPM on FreeBSD