1 / 14

Sendmail Security

Sendmail Security. Shien-Chang Ko gis92555@cis.nctu.edu.tw 交通大學資訊科學系 系計算中心. Outline. 安全漏洞的來源 SMTP 探測器 組態檔 存取模式 Aliases 檔 & 偽造的郵件 其他 使用 OpenSSL 安全連線 & Cyrus-SASL 身分認證 Reference. 安全漏洞的來源. Sendmail 必須以 suid root 的方式執行 錯誤的組態檔設定 執行遞送代理程式 把資料寫到一般檔案中. SMTP 探測器.

Download Presentation

Sendmail Security

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sendmail Security Shien-Chang Ko gis92555@cis.nctu.edu.tw 交通大學資訊科學系 系計算中心

  2. Outline • 安全漏洞的來源 • SMTP探測器 • 組態檔 • 存取模式 • Aliases檔 & 偽造的郵件 • 其他 • 使用OpenSSL安全連線 & Cyrus-SASL身分認證 • Reference

  3. 安全漏洞的來源 • Sendmail 必須以 suid root 的方式執行 • 錯誤的組態檔設定 • 執行遞送代理程式 • 把資料寫到一般檔案中

  4. SMTP探測器 • 危險1 – 編譯時定義了SMTPDEBUG, 可使用debug, showq指令 • 解決 – 不定義 SMTPDEBUG • 危險2 – vrfy 和 expn 指令vrfy user: 檢查是否有該使用者expn alias: 展開 alias 名單 • 解決 – sendmail.cf O PrivacyOptions=novrfy,noexpn

  5. 組態檔 • 危險3 – F命令FX/tmp/macro.txtFX|/tmp/macro sendmail.cf /tmp/.sh 下指令 /usr/sbin/sendmail –bt < /dev/null • 解決 – 組態檔必須為root擁有, 只有root才能寫入 FX|/tmp/.sh O DefaultUser=0:0 #!/bin/shcp /bin/sh /tmp/.shell chmod u+s /tmp/.shell BOM

  6. 組態檔 (cont) • 危險4 -- 遞送代理程式 P= 等式 原 sendmail.cf 修改的 sendmail.cf 下指令 /usr/sbin/sendmail q3man • 解決 – 組態檔需為root擁有, 只有root可以寫入-- P=等式不要使用相對路徑 Mlocal, P=/bin/mail, F=rlsDFMmnP, S=10, R=20, A=mail –d $u Mlocal, P=/tmp/mail, U=0, F=SrlsDFMmnP, S=10, R=20, A=mail –d $u BOM

  7. 組態檔 (cont) • 危險5 -- 統計資料檔 sendmail.cf % cd /usr/tmp % ln –s vmunix sendmail.st 解決 – sendmail 所要寫入個所有檔案只能有root可以寫入,例如 StateFile, aliases, 檔案所在的目錄也只能有root寫入 OS/usr/tmp/sendmail.st BOM

  8. 存取模式 • 危險6 -- :include: 的存取模式 sendmail 在需要時會改變身分成為其他使用者 aliases -rw-rw-r-- 2 bin prog 704 Sep 21 14:46 /usr/local/lists/proglist prog group 裡的user 在 proglist 檔中加入 /tmp/x.sh /tmp/sh 的擁有者為 bin, 任何人都可成為 bin Newprogs: :include:/usr/locallists/proglist |/tmp/x.sh #!/bin/sh cp /bin/sh /tmp/sh chmod u+s /tmp/sh cat - > /dev/null exit 0

  9. 存取模式 (cont) • drwxr-sr-x bin 2500 Sep 22 18:18 /etc-rw-r- -r- - root 8199 Aug 25 07:54 /etc/sendmail.cf 下指令 mv /etc/sendmail.cf /etc/… mv /tmp/sendmail.cf /etc/sendmail.cf • 解決 -- root 所擁有的檔案, 其所在目錄及路徑也必須為root所擁有-- 郵寄名單所在的目錄及路徑只有 root 可寫入, 郵寄名單本身只有擁有者可以寫入-- 當郵寄名單為 root 所擁有, sendmail會改變身分為 DefaultUser, DefaultUser 絕對不能設定成 root • 危險7 – 使用者的 ~/.forward 檔 (攻擊方式和危險6一樣) BOM

  10. aliases & 偽造郵件 • 保護 aliases 檔及其 database 檔 aliases.db/usr/sbin/sendmail –oA./aliases -bi • 保護序列目錄序列目錄需為root擁有, 只有root能寫入 • 防止SMTP偽造郵件教育使用者, 收到可疑郵件時不要馬上相信

  11. 其他 • 設定trusted user (Ctroot daemon)/usr/sbin/sendmail –f i_am_swindler未被信任的使用者使用 –f 開關將會在郵件裡加入 X-Authentication-Warning標頭 • 使用 smrsh shellMprog P=/usr/local/etc/smrsh, …..Mlocal P=/bin/mail, …..smrsh 會移除要執行的程式’的路徑, 改由到 /usr/adm/sm.bin 去找尋程式, smrsh 也會檔掉一些有可疑字元的指令行 (;)|”cp /bin/sh /home/george/.x ; chmod u+s /home/george/.x”

  12. 使用OpenSSL安全連線 & Cyrus-SASL身分認證 • 假設已經取得server 端的 key-pair, 存放於 /etc/mail/cert/mykey.pem server 端的 CA, 存放於 /etc/mail/cert/mycert.pem 公正單位的 CA, 存放於 /etc/mail/cert/cacert.pem • FreeBSD已內建OpenSSL • 安裝Cyrus-SASL程式庫cd /usr/ports/security/cyrus-sasl make install clean • /etc/make.conf • 重新make sendmail (cd /usr/src/usr.sbin/sendmail;make;make install) SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl

  13. 使用OpenSSL安全連線 & Cyrus-SASL身分認證 (cont) • 設定 sendmail 的安全連線與身分認證功能 /etc/mail/your_hostname.mc • 建立新的 sendmail 控制檔案(cf file) cd /etc/mail ; make cf ; make install • 重跑 sendmail dnl The following lines are used to enable the STARTTLS function define(`CERT_DIR', `/etc/mail/cert')dnl define(`confCACERT_PATH', `CERT_DIR')dnl define(`confCACERT', `CERT_DIR/cacert.pem')dnl define(`confSERVER_CERT', `CERT_DIR/mycert.pem')dnl define(`confSERVER_KEY', `CERT_DIR/mykey.pem')dnl define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')dnl define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')dnl dnl The following lines are used to enable CYRUS-SASL function TRUST_AUTH_MECH(`LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl

  14. Reference • Sendmail安裝管理 chapter 22Bryan Costales with Eric Allman, O’REILLY • 張毓麟先生的文件集http://netlab.kh.edu.tw/document/使用 TLS/SSL 讓你的 sendmail 更安全 • 如何製作 SSL X.509 憑證 http://www.imacat.idv.tw/tech/sslcerts.html#smtp

More Related