October 09, 2005

MT comment spam

廣告comment愈來愈多了...
目前是參考http://planetoid.info/weblog/archives/000069.html來做ant-spam
不過好像有GD.pm還沒裝
明天再裝吧~

Posted by skychaser at 12:54 AM | Comments (0)

July 12, 2005

PHP on Freebsd using ports

原來php在apache上要能run
用ports安裝的話
除了裝lang/php4外
還要裝lang/php4-extensions啊...@@
裝完extensions還要在/usr/local/etc/php.ini的
extension_dir裡設定好extensions的路徑
for example :
extension_dir = "/usr/local/lib/php/20020429"

Posted by skychaser at 08:58 PM | Comments (0)

August 18, 2004

User mount on FreeBSD

這是讓normal user也可以把像windows的partition給mount上來
主要是在/etc/sysctl.conf加入
sysctl vfs.usermount=1
然後把/dev/ad0s1 和 /mnt/win 的permision設好(舉個例)
就可以讓normal user mount file system了

Posted by skychaser at 05:47 PM | Comments (0)

May 18, 2004

取消FreeBSD開機時的多重開機選項

轉錄自Ptt FreeBSD版

標 題: Re: 請問開機時多重選項的畫面如何取消掉
發信站: 超級光小站 (Mon May 17 16:59:32 2004)
轉信站: ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.cs.nthu!bbs.s

※ 引述《menterning.bbs@bbs.sayya.org (藍曼)》之銘言:
> ※ 引述《jackysun.bbs@bbs.ncku.edu.tw (毛毛)》之銘言:
> > 請問一下, 好像在5.0之後開機時會有一個多重開機畫面( 旁邊有個小惡魔).
> > 要把這個畫面拿掉要在哪裡設定呢?
> > 謝謝
> 請自行更改 /boot/beastie.4th 這個檔案。

他是想改成像 4.X 的畫面吧?

修改 /boot/loader.conf

加入 beastie_disable="YES"

Posted by skychaser at 11:53 PM | Comments (0)

April 05, 2004

Java Server on Freebsd

有人用FreeBSD5.2來做支援java的server,有空可以看一看

作者: source99 (---.cces.mlc.edu.tw)
日期: 2004年02月17日 08時40分

系統FreeBSD5.2
軟體Apache1.3.29+Mysql3.23.58+JDK1.4.2+Tomcat1.4.29+Mysql-connect-java+ImageMagic5.5.7-15
所有軟體都使用ports安裝
我的主機是p4 celen 1.0G 256MB RAM 80G IDE HD

一.FreeBSD5.2安裝選項選ALL 同時安裝Linux packages 系統安裝完後 更新ports
步驟1
ee /etc/make.conf
#增加以下內容(取得較快連線速度)
MASTER_SITE_BACKUP?= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp5.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp10.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp4.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp7.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp11.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp12.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}

步驟2 安裝以下程式
cd /usr/ports/net/cvsup-without-gui; make install clean
cd /usr/ports/sysutils/portupgrade ; make install clean

步驟3 取得最新ports版本
cd /usr/ports
fetch ftp://freebsd.csie.nctu.edu.tw/pub/CVSup/cvsupfile-ports
/usr/local/bin/cvsup -g -L 2 cvsupfile-ports

步驟4 安裝ImageMagic(遇到選單畫面取消printer驅動程式的安裝加快速度 大概要30-40分裝安裝)
cd /usr/ports/graphics/ImageMagick
make install clean

***********重要備註***********
#安裝過程中如出現訊息
#/libexec/ld-elf.so.1: Shared object "libintl.so.5" not found
#請
ln -s /usr/local/lib/libintl.so.6 /usr/local/lib/libintl.so.5
make deinstall
make reinstall clean

#安裝過程中如出現
#An older version of graphics/png is already installed (軟體名稱)
# You may wish to ``make deinstall'' and install this port again
# by ``make reinstall'' to upgrade it properly.
# If you really wish to overwrite the old port of graphics/png
# without deleting it first, set the variable "FORCE_PKG_REGISTER"
# in your environment or the "make install" command line.
#請進行
make deinstall
make reinstall clean
***************以上備註所有的軟體安裝皆適用***************

步驟5
安裝JDK 1.4.2(要有心理準備 非常的久 我花了7個小時)
cd /usr/ports/java/jdk14
make install clean > /tmp/report.txt
#它會要到固定網址您取得以下4個檔案
#bsd-jdk14-patches-6.tar.gz
#j2sdk-1_4_2-bin-scsl.zip
#j2sdk-1_4_2-src-scsl.zip
#j2sdk-1_4_2_03-linux-i586.bin
#請使用fetch URL的方式取得比較方便
#過程中如發生意外 可參考/tmp/report.txt 訊息來獲得解決

步驟6 安裝mysql
cd /usr/ports/databases/mysql323-server
make WITH_CHARSET=big5 install clean

步驟7 安裝tomcat
cd /usr/ports/www/jakarta-tomcat41
make install clean

步驟8 設定Tomcat執行環境參數
cd /usr/local/etc/rc.d
ee XXX.jakarta-tomcat41.sh
#加入以下參數
export ENABLE_STARTUP_LOCATE=zh_TW.Big5
export LANG=zh_TW.Big5
export LC_CTYPE=zh_TW.Big5
export TOMCAT_HOME=/usr/local/jakarta-tomcat4.1
export JAVA_HOME=/usr/local/jdk1.4.2
export CLASSPATH=./:/usr/local/jdk1.4.2/lib:/usr/local/jdk1.4.2/jre/lib/ext:/usr/local/jdk1.4.2/lib/tools.jar:/usr/local/share/java/classes:/usr/local/jdk1.4.2/jre:/usr/local/share/java/classes/

步驟9 安裝Apache
cd /usr/ports/www/apache13
make install clean

步驟10 安裝mod_jk
cd /usr/ports/www/mod_jk
make install clean
#mod_jk安裝完成後 (讓Apache及Tomcat合為一體)
ee /usr/local/etc/apache/httpd.conf
將以下兩行註解取消
LoadModule jk_module libexec/apache/mod_jk.so
AddModule mod_jk.c
#並加入

JkWorkersFile /usr/local/etc/apache/workers.properties
JkLogFile logs/jk.log
JkLogLevel warn
DirectoryIndex index.jsp index.html
# Sample JkMounts. Replace these with the paths you would
# like to mount from your JSP server.
JkMount /*.jsp localhost
JkMount /servlet/* localhost
JkMount /examples/* localhost


步驟11 安裝mysql-connector-java
/usr/ports/databases/mysql-connector-java
make install clean

#------------------安裝完畢-----------------
#以上過程都OK後
#請用root下shutdown -r now指令從新開機
一個完整的Apache1.3.29+Mysql3.23.58+JDK1.4.2+Tomcat1.4.29+Mysql-connect-java+ImageMagic5.5.7-15環境應該自動啟動運作
以上過程如有錯誤 祈請指正


作者: panda (---.HCRC.edu.tw)
日期: 2004年02月17日 11時17分

針對重要備註提出相關說明:
>***********重要備註***********
> /libexec/ld-elf.so.1: Shared object "libintl.so.5" not found
> ln -s /usr/local/lib/libintl.so.6 /usr/local/lib/libintl.so.5

進行link的方式原因說明
http://ohaha.ks.edu.tw/faq-0004.htm


>#安裝過程中如出現
>#An older version of graphics/png is already installed (軟體名稱)
># You may wish to ``make deinstall'' and install this port again
># by ``make reinstall'' to upgrade it properly.
># If you really wish to overwrite the old port of graphics/png
># without deleting it first, set the variable "FORCE_PKG_REGISTER"
># in your environment or the "make install" command line.
>#請進行
>make deinstall
>make reinstall clean

FORCE_PKG_REGISTER 說明
http://ohaha.ks.edu.tw/faq-0003.htm

透過加上FORECE變數 可以不用先進行刪除原先程式.僅供參考.

>***************以上備註所有的軟體安裝皆適用***************

是不是都適用很難說...不過基本上來說 在5.2之前的版本大部分狀況都適用.
還是請透過您聰明的腦筋判斷看看情況嚕.

作者: source99 (---.adsl.pl.apol.com.tw)
日期: 2004年03月20日 00時35分

修正一點錯誤
步驟5
安裝JDK 1.4.2(要有心理準備 非常的久 我花了7個小時)
cd /usr/ports/java/jdk14
mount -t linprocfs linprocfs /compat/linux/proc
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^一定要加這行 不然會%&#%!(%(.......
make install clean > /tmp/report.txt


Posted by skychaser at 11:51 PM | Comments (0)

March 01, 2004

FreeBSD quota整理

FreeBSD quota整理
(包括mail的設定)

Quota安裝

FreeBSD安裝時並沒有quota功能,需再Compile Kernel後才有。

1. 在BSD kernel config檔中增加一行:options Quota

2. #針對slice設quota,例如:

/dev/da0s2e /home ufs rw,userquota 2 2

3. rc.conf中將check_quotas="YES"

4. reboot

5. 使用者的email是存放於/var/mail,為了讓quota能發揮功用,所以使用以下設定:
#mv /var/mail /home
#ln -s /home/mail /var/mail
若安裝Openwebmail則不用做以上的設定。

Quota的使用指令
quotacheck -avug 第一次使用時建立quota
edquota -u User1 設定User1的quota
edquota -p User1 將User1的設定給所有的人
repquota -v -a 回報quota設定

Posted by skychaser at 11:58 PM | Comments (0)

December 21, 2003

FreeBSD Xwindow 安裝整理

今天還是決定裝了團契FreeBSD的X-Window
做個筆記吧,希望以後裝的時候就不用再看書或網頁了

1. # cd /usr/ports/x11/XFree86-4
# make install
好了用xf86cfg or xf86config產生/root/XF86config-new

2.在 Section "Module" 區段,找到 Load "freetype" 換成 Load "xtt",如果沒有則自行加入。 通常用 Load "xtt" 就可以很正常的讀中文 TrueType 字型了。

3.一些中文字型

點陣字 -

kcfonts 的安裝:
# cd /usr/ports/chinese/kcfonts
# make install

TrueType -

moettf 的安裝:
# cd /usr/ports/chinese/moettf
# make install

arphicttf 的安裝:
# cd /usr/ports/chinese/arphicttf
# make install

wangttf 的安裝:
# cd /usr/ports/chinese/wangttf
# make install

4.再來就是一些軟體例舉如下:
xcin25, windowmaker, eterm等。

Posted by skychaser at 09:16 PM | Comments (0)

December 11, 2003

FreeBSD on laptop with apmd config

在notebook上的apmd設定,使得我的nb不再一睡不醒囉^^

在這裡說了一些關於apm的使用,最重要的是文章後面那個/etc/apmd.conf的設定


The APM (Advanced Power Management) BIOS provides support for various power management features like standby, suspend, hibernation, CPU clock slow down etc. and is available under FreeBSD 4.X and FreeBSD 5.X.

To enable APM support, you can compile a kernel with power management support (device apm0 on FreeBSD 4.X and device apm on FreeBSD 5.X). A kernel module for APM is available under FreeBSD 5.X, to simply load the APM kernel module at boot add the line apm_load="YES" to /boot/loader.conf.

On FreeBSD 5.X, you also have to set hint.apm.0.disabled="0" in /boot/device.hints.

You can start APM at boot time by having apm_enable="YES" in /etc/rc.conf. You may also want start the apmd(8) daemon by adding apmd_enable="YES" to /etc/rc.conf, which takes care of various APM events that are posted to the BIOS, so you can have your laptop suspend/resume by pressing some function key on the keyboard or by closing/opening the lid.

The APM commands are listed in the apm(8) manual page. For instance, apm -b gives you battery status (or 255 if not supported), apm -Z puts the laptop on standby, apm -z (or zzz) suspends it. To shutdown and power off the machine, use shutdown -p. Again, some or all of these functions may not work very well or at all.

You may find that laptop suspension/standby works in console mode but not under X (that is, the screen does not come on again); if you are running FreeBSD 5.X, one solution for this might be to put options SC_NO_SUSPEND_VTYSWITCH in your kernel configuration file and recompile your kernel. Another workaround is to switch to a virtual console (using Ctrl+Alt+F1 or another function key) and then execute apm(8). You can automate this with vidcontrol(1), if you are running apmd(8). Simply edit /etc/apmd.conf and change it to this:

apm_event SUSPENDREQ {
exec "vidcontrol -s 1 < /dev/console";
exec "/etc/rc.suspend";
}

apm_event USERSUSPENDREQ {
exec "vidcontrol -s 1 < /dev/console";
exec "sync && sync && sync";
exec "sleep 1";
exec "apm -z";
}

apm_event NORMRESUME, STANDBYRESUME {
exec "/etc/rc.resume";
exec "vidcontrol -s 9 < /dev/console";
}

以上節錄自http://www.freebsd.org/doc/en_US.ISO8859-1/articles/laptop/article.html
也可以從這裡得到

Posted by skychaser at 07:21 PM | Comments (0)

December 07, 2003

FreeBSD 套件管理pkg_cutleaves

pkg_cutleaves finds installed 'leaf' packages, i.e. packages that are
not referenced by any other installed package, and lets you decide for
each one if you want to keep or deinstall it (via pkg_deinstall(1)).

Usage: pkg_cutleaves [-l] [-x] [-R]
-l: List leaf packages only, one per line, and don't ask for anything
to be deinstalled.
-x: Exclude packages matching expressions given in the exclude file.
-R: Run 'pkg_deinstall -R' instead of plain 'pkg_deinstall', so packages
the removed leaf packages depend(ed) on will be deinstalled, too.

Posted by skychaser at 12:16 AM | Comments (0)

November 08, 2003

FreeBSD Quota的限制

FreeBSD 限制user quota的整理

1. 在kernel中加入:options QUOTA

2. 在/etc/rc.conf中加入
enable_quotas="YES"
check_quotas="NO"

3. 在/etc/fstab的Options中加入要設quota的partition,ex:
/dev/ad0s2a / ufs rw,userquota 1 1
/dev/ad0s2d /usr ufs rw,groupquota 2 2
/dev/ad0s2d /var ufs rw,userquota,groupquota 2 2

4. 設定user的quota,ex:
edquota -u bob
我們還可以有一個方便的方法:
edquota -p bob 1001-9999
(套用bob的設給uid:1001-9999的user,即使還沒有產生那個user也可以先設定)

5. 查看某個user的quota使用情況:
quota bob

Posted by skychaser at 11:59 PM | Comments (0)

FreeBSD快速安裝套件 - PACKAGEROOT

FreeBSD快速安裝套件 - PACKAGEROOT by ptt的FreeBSD版

一直以來許多人都會認為 FreeBSD 沒有簡單安裝套件的方式,因為大部分的文
章都是使用 ports 來安裝;對伺服器而言,由於使用的套件少,用 ports 來
安裝還算方便,但是更多人詬病於 ports tree 越來越大,安裝時間長,更新
時間久等,對於使用桌面系統的人而言,用 ports 安裝 XFree86-4 與 gnome2、
kde3 等大套件,無異是時間太多,或是閒閒沒事測試機器速度。

但是傳統使用 package 來安裝常遇到的問題是,大部分本地化的套件不會放在
第一片光碟,就算又第三第四片光碟,許多套件仍然沒收錄。

目前各大學都有 mirror 完整的 packages,只要知道哪個站離你最快,很快的
就能建立新的 FreeBSD 環境。

你可以先設定 PACKAGEROOT,這是用來抓取套件的位置,
筆者通常設定
setenv PACKAGEROOT ftp://ftp.tw.freebsd.org來安裝套件,他會自動的到
pub/FreeBSD/ports/i386/packages-4.9-release/Latest/
底下尋找套件,而且你不需要知道版本,只要知道套件名稱即可,他會自動安
裝當時的最新版,中文的部分只要加上 zh-,像是 zh-xcin。

你也可以直接指定 PACKAGESITE 來指向特定的位置。像是你希望安裝的套件是
最新的,而不是 release 時的版本。
setenv PACKAGESITE \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/i386/packages-stable/Latest/

-statue

因為這是我認為最穩定的機器,然後就可以透過
pkg_add -r 套件名

Posted by skychaser at 05:12 PM | Comments (0)

October 28, 2003

IPSec 和 VPN在FreeBSD上的實作

IPSec 和 VPN在FreeBSD上的實作

Step 1: Creating and testing a ``virtual'' network link

a.Configure both kernels with ``pseudo-device gif''.

b.Edit /etc/rc.conf on gateway host #1 and add the following lines (replacing IP addresses as necessary).
gifconfig_gif0="A.B.C.D W.X.Y.Z"
ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"

c.Edit your firewall script (/etc/rc.firewall, or similar) on both hosts, and add
ipfw add 1 allow ip from any to any via gif0

d.Make similar changes to /etc/rc.conf on gateway host #2, reversing the order of IP addresses.

Step 2: Securing the link

a.Configure both kernels with:
options IPSEC
options IPSEC_ESP

b.Install security/racoon. Edit ${PREFIX}/etc/racoon/psk.txt on both gateway hosts, adding an entry for the remote host's IP address and a secret key that they both know. Make sure this file is mode 0600.

c.Add the following lines to /etc/rc.conf on each host:
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"

d.Create an /etc/ipsec.conf on each host that contains the necessary spdadd lines. On gateway host #1 this would be:
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;

On gateway host #2 this would be:

spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;

e.Add firewall rules to allow IKE, ESP, and IPENCAP traffic to both hosts:

ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D

Posted by skychaser at 04:44 PM | Comments (0)

September 26, 2003

FreeBSD的一些安全設定

FreeBSD的一些安全設定

FreeBSD的日志安全
--------------------
I)如果你安裝了sshd(也強烈建議安裝sshd,因為默認的telnetd程序存在嚴重
的安全問題)。請編輯你的/etc/syslog.conf文件,一般修改
security.* /var/log/security條目內容如下:

security.*;auth.info /var/log/security

原因很簡單,這樣syslogd就把連接到sshd的日志信息記錄下來。

當然如果你願意,也可以建立其他的日志文件,不過如果你建立新的日志文件,
你必須檢查更新/etc/newsyslog.conf是否建立相關條目,如:

/var/log/auth 600 10 100 * Z

其中/var/log/auth表示日志文件名,600是日志文件指定的屬性,10表示包括
要歸檔的文件數,100表示文件字節大小,以K為單位,*表示間隔時間或者指定
時間,其中*表示日志歸檔是以字節(size)來判斷的。最後一個Z表示指定歸檔
要處理的格式,Z表示使用gzip(1)來壓縮歸檔日志來節約空間,具體更多信息
你可以使用man newsyslog來獲得。

這裡建立你修改newsyslog.conf中的一些全局可讀屬性,如maillog和messages
log,一般把它們的屬性設置為600。如下所示:

/var/log/messages 600 5 100 * Z
/var/log/maillog 600 7 * @T00 Z

當然如果你要把信息記錄到其他主機上更好,你可以修改/etc/syslog.conf中的
如下條目,把其中的注釋去掉,並修改loghost為要記錄的機器名字:

#*.* @loghost

最後你防止任意用戶讀取這些文件,你使用下面命令修改文件屬性:

# chmod 600 /etc/syslog.conf
# chmod 600 /etc/newsyslog.conf

=========================================================================

關於SSH配置
-------------

就象上面所說的,telnetd守護程序存在嚴重的緩沖溢出可以導致遠程ROOT SHELL
的獲得,這裡強烈建議你如果需要遠程控制的話,就使用SSH工具,並且保証是最
新的版本,至少目前為止還沒有很嚴重的漏洞出現(當然也有幾個漏洞大家可以參考
一些安全資料)。

sshd控制文件是/etc/ssh/sshd_config,如果你沒有使用SSH protocol 1的機會,
這裡建議你關閉protocol 1的使用,因為ssh protocol 1不如protocol 2安全,
還可以有效的阻止攻擊者通過修改包攜帶的版本banner來劫持(hijacking)啟動
會話進程並降級你到protocol 1,理論上可以迫使使用ssh 1 協議來通信。你
必須注釋掉Protocol 2,1而使用下面的一行來代替:

Protocol 2

第二,SSH在運行的時候消耗比較多的內存,是個"耗糧"大戶,這也是cisco產品
近來發現有關SSH存在拒絕服務攻擊的原因。每一個連接使用一大塊可觀的內存,
FreeBSD默認使用"MaxStartups"來管理,默認的值是一個比較健康的值,如:

MaxStartups 5:50:10

因為一個系統你除非有很多人管理系統或者提供SHELL服務,一般情況下這個值
是足夠了,MaxStartups不是意味著總的連接數,隻是指還沒有認証的連接數,
這意味著,在任一(意)時刻, 多達5人可以(能)同時喚起登陸進程。

默認情況下,FreeBSD的OpenSSH配置關閉了遠程ROOT登陸和空密碼登陸,這裡還
建議裡關閉X11Forwarding,你可以把X11Forwarding 這行改為:

X11Forwarding no

如果你的機器作為服務器在運行,就不需要安裝X服務程序,因為使用了
X11Forwarding on,就可能被受控制了的遠程主機發送進程把自己attach你的
X11會話進程,從而可以記錄擊鍵記錄,顯示一些雜亂信息和捕獲你的顯示內容。

強烈建議不使用靜態密碼,而使用DSA或者RSA KEY,你修改如下內容就可以關閉
使用密碼認証:

PasswordAuthentication no

因為使用密碼驗証畢竟不是一種安全的方法,存在著社會工程,猜測,竊取
的可能性。

對於sshd,你可以通過下面的方法來限制組用戶或者光是單獨用戶來訪問SHELL:

AllowGroups shellusers
或者
AllowGroups wheel
或者
AllowUsers xundi

當然你如果要改變原來的用戶訪問SHELL屬性,如要把用戶改變成/sbin/nologin
而不讓它訪問shell,你可以使用下面的命令直接改變:

chsh -s /sbin/nologin user

最後你最好使用tcpwrappers來限制一些訪問,你修改/etc/hosts.allow文件,注釋
掉"ALL : ALL : allow", 去掉其他無關控制訪問,增加如下內容:

sshd : localhost : allow
sshd : friendlycomputer : allow
sshd : all : deny

FreeBSD默認情況下不把ssh登陸失敗的內容記錄下來,你需要對/etc/security
進行修改,下面的補丁隻檢測密碼無效的登陸並記錄下來,你可以增加對dsa/rsa
key登陸失敗或者不合法用戶登陸的檢測:

--- /etc/security Mon Jun 11 15:45:02 2001
+++ /etc/security Mon Jun 11 15:48:29 2001
@@ -44,6 +44,7 @@
sort -t. -r -n +1 -2 |
xargs zcat -f
[ -f $LOG/messages ] && cat $LOG/messages
+ [ -f $LOG/security ] && cat $LOG/security
}

sflag=FALSE ignore=
@@ -188,6 +189,12 @@
separator
echo "${host} login failures:"
n=$(catmsgs | grep -i "^$yesterday.*login failure" | tee /dev/stderr | wc -l)
+[ $n -gt 0 -a $rc -lt 1 ] && rc=1
+
+# Show "${host} SSH login failures:"
+separator
+echo "${host} login failures:"
+n=$(catmsgs | grep -i "^$yesterday.*failed password" | tee /dev/stderr | wc -l)
[ $n -gt 0 -a $rc -lt 1 ] && rc=1

# Show tcp_wrapper warning messages

====================================================================

網絡部分

---------

默認情況下FreeBSD和許多操作系統在關閉的端口上接受到TCP SYN段的時候,會
發送RST信息包,也就是告訴攻擊者這個端口關閉了,導致攻擊者繼續掃描下一個
端口,一般情況下我們都不願意使端口掃描簡單化,和不想浪費過多的CPU時間
在DoS攻擊上。因此我們可以使用FreeBSD系統中叫blackhole的特征,blackhole
sysctl(8) MIB用來控制當對一些沒有socket監聽的TCP或者UDP端口接收到連接
請求時所操作的行為,你可以使用man blackhole獲得詳細的信息,當設置這個
選項後,對那些連接沒有socket監聽的TCP或者UDP端口的連接,系統將馬上丟棄
這個包而不發RST包。連接端將看到"Connection reset by peer".下面的操作
將激活這個特征:

sysctl -w net.inet.tcp.blackhole=2
sysctl -w net.inet.udp.blackhole=1

你可以通過下面的操作馬上啟動實現這個特征:

# /bin/sh /etc/rc.sysctl

當然這個特征不能作為ipfw(8)工具的替代品來防衛系統,要建立更高安全的
系統,你當然需要使用Ipfw(8)或者Ipfilter工具實現。

修改/etc/rc.conf,把不需要的服務關閉,i)portmap服務,如果你沒有NFS, NIS
等需要。再/etc/rc.conf中加入:

portmap_enable="NO"

你可能經常發現有人討厭的掃描你整個網絡,目標端口為111的信息,這是有人
想查找是否有rpc服務漏洞的掃描,你可以在你的邊緣路由器中丟棄dstport為
111的信息包。

ii)除非你運行mail服務器或者mail網關,這裡建議你把sendmail置於queueing only
模式,如果你確實需要SMTP網關,建議你安裝postfix.

sendmail_flags="-q1m"

iii)建議你丟棄icmp重定向,可以防止Dos攻擊或劫持進程(hijack sessions),
你也可以記錄icmp重定向,不過這裡你要區分一些信息,因為有的時候Cisco
路由器也會產生重定向而不是攻擊信息,要記錄這些信息,使用如下條目:

icmp_log_redirect="YES"

當然你要完全去掉不確定信息記錄,你可以在你的CISCO路由器上關閉重定向:

"no ip send-redirects"

(IV)你可以設置系統丟棄SYNFIN信息包,不過這個你可以更好的通過IPFW來過濾
這種信息包,但是你也可以在/etc/rc.conf中增加如下條目來激活這種選項:

tcp_drop_synfin="YES"

當然你需要在kernel配置中增加如下配置:

options TCP_DROP_SYNFIN

v)設置rc.sysctl, rc.conf 和 sysctl.conf 權限:

# chmod 600 /etc/rc.sysctl
# chmod 600 /etc/rc.conf
# chmod 600 /etc/sysctl.conf

===================================================================

Crontab和at問題

----------------

crontab是一個比較強大的服務,有不少漏洞在cron發現過,普通用戶最起碼
也可以浪費資源等操作,這裡建議'www', 'nobody' 和 'bind' 不能使用crontab.

建立一/etc/cron/allow文件並把需要使用的用戶放進去,如:

# echo root > /var/cron/allow
# chmod 600 /var/cron/allow

並設置權限crontab不能由其他用戶任意訪問:

# chmod 600 /etc/crontab

不過你如果不需要使用'at'命令,就關閉這個服務,因為安全的原則始終是"
你不許它,丟掉它",在/etc/crontab文件中注釋掉下面一行:

# */5 * * * * root /usr/libexec/atrun

===================================================================

inetd和rate限制問題
---------------------

Inetd默認情況下是啟用的,它控制了不少不安全的服務,如:telnet, ntalk
和finger。檢查你所有/etc/inetd.conf中的服務,關閉任何你不需要的服務。
如果沒有一個用戶需要,請在/etc/rc.conf中關閉inetd啟動:

inetd_enable="NO"

如果你要使用FreeBSD的inetd.你可以通過inent請求來控制rate的資源,如:

auth stream tcp nowait/10/10 root internal auth -r -f -n -o UNKNOWN -t 30

第一個10表示我們允許的最大子進程數量,第二個值是每一個IP每一分鐘連接的
最大數量,一般10/10的值是健康的,不過你一般不要使用這個ident,一個是新近
的xinetd中的ident存在遠程溢出,而是我們一般也隻在IRC裡看到這個服務。

=======================================================================、

Securelevel 問題
=================

FreeBSD內核有一個安全級別(securelevel)的概念,這是指系統內核運行使用
的安全等級,不同的等級具備不同的保護和檢查機制。一般工作站運行在securelevel
0級別,因為他們可能需要運行X11,而服務器一般運行在2或者1級別上,關於
內核安全級別的詳細資料中文你可以參看王波的"FreeBSD使用大全連載 "。

如果你要改變級別系統為2,你可以在/etc/rc.conf中增加如下條目:

kern_securelevel_enable="YES"
kern_securelevel="2"

你可以重新去啟動,或者使用

# sysctl -w kern.securelevel=2

來激活。

=====================================================================

一些本地安全tip
---------------

i)編輯/etc/ttys,把下面的一行的secure改為insecure:

console none unknown off secure

這樣用戶進入單用戶模式時會要求輸入ROOT密碼,當然這樣也使你忘記ROOT密碼
時恢復存在一定難度了。

ii)修改一些計算機相關設置,如BIOS,不允許軟盤啟動,CDROM啟動等,即在裝載
硬盤驅動以前不允許其他媒介啟動。設置BIOS密碼,保護機器物理安全(如果人家
帶著榔頭,炸彈,一盆水來那就沒辦法了)。

iii)關於虛擬終端和虛擬終端緩沖,虛擬終端緩沖中的內容在你logoff以後並
不刷新,所有你在機器來操作的活動可以被復查。你可以重新配置內核參數如:

SC_NO_HISTORY #取消歷史記錄

SC_DISABLE_DDBKEY # 取消debug鍵
SC_DISABLE_REBOOT # 取消clt-alt-del 鍵

iv)對/bin,/sbin進行安全保護。

#chflags schg /bin/*
#chflags schg /sbin/*
  

======================================================================

信息過濾問題
--------------

FreeBSD的包過濾工具具有強大的規則設置來過濾你想阻塞的信息,你可以使用
ipfw來實現,不過你需要在內核中有一定的選項設置,如:

需要在編譯內核時打開下面選項重新定制內核。

options IPFIREWALL
options IPFIREWALL_VERBOSE
options “IPFIREWALL_VERBOSE_LIMIT=100”
options IPFIREWALL_DEFAULT_TO_ACCEPT

options IPDIVERT

其中第一項設置IPFIREWALL是用於打開基本的包過濾支持的,隻有使用它才能
在內核中支持包過濾。IPFIREWALL_VERBOSE 和IPFIREWALL_VERBOSE_LIMIT設
置記錄過濾日志,及日志記錄的限制。IPFIREWALL_DEFAULT_TO_ACCEPT是設置
IPFIREWALL的缺省行為,在數據包不符合所有的過濾規則的情況下進行轉發,
顯然這是一種寬鬆的限制,此時系統主要用於屏蔽特定地址和特定服務,而提
供其他的缺省網絡能力。如果沒有定義這個選項,系統就隻能允許符合已定義
規則的數據包通過,而屏蔽其他任何數據包,這樣在沒有定義過濾規則的情況
下,系統不能和其他計算機相互通信。最後一個選項IPDIVERT是用於定義
IPFIREWALL與natd的接口(摘自王波-FreeBSD使用大全連載)。

你可以建立/etc/firewall.rules建立自己的規則,並把文件設置為600屬性,
下面的規則僅供參考:

ipfw -q -f flush
ipfw -q add 00100 allow ip from any to any via lo0
ipfw -q add 00220 deny log ip from me to any in
#syn fin組合的包一般來說是nmap和queso掃描器使用,所以過濾
ipfw -q add 00225 deny log tcp from any to any in tcpflags syn,fin

# 檢查通信狀態
ipfw -q add 00230 check-state
ipfw -q add 00235 deny tcp from any to any in established
ipfw -q add 00240 allow ip from any to any out keep-state

# 控制icmp包,隻能通過icmp類型來限制
ipfw -q add 00300 allow icmp from any to any icmptype 3
ipfw -q add 00301 allow icmp from any to any icmptype 4
ipfw -q add 00302 allow icmp from any to any icmptype 11

# 允許DHCP通過
ipfw -q add 00401 allow udp from 192.168.2.1 67 to any 68
ipfw -q add 00402 allow udp from 192.168.1.1 67 to any 68

# allow ident requests
ipfw -q add 00500 allow tcp from any to any 113 keep-state setup

# log anything that falls through
ipfw -q add 09000 deny log ip from any to any

其實關於規則有很多文章可以參考,這裡就不在敘述。

你可以使用下面命令馬上激活規則:

# sh /etc/firewall.rules

如果你要在你日志裡查看有關丟棄包的記錄,你需要如下設置:

# sysctl -w net.inet.ip.fw.verbose=1

如果你要所有這些設置在機器啟動時候激活,編輯/etc/rc.conf增加如下條目:

firewall_enable="YES"
firewall_logging="YES"
firewall_script="/etc/firewall.rules"

最好你如果要記錄這些信息進行調試,不要忘了在/etc/syslog.conf中增加如下
條目:

!ipfw
*.* /var/log/ipfw.log

記得在/etc/newsyslog.conf中設置如下選項:

/var/log/ipfw.log 600 3 100 * Z

=========================================================================

一些管理員日常操作
------------------

i)經常查看http://www.freebsd.org/security/index.html的安全公告

ii)訂閱security bugtraq了解安全動態。

iii)每天檢查系統日志,關於檢查系統日志,你可以通過其他工具增加多信息的捕獲,
如snort可以比較完全的記錄信息。

iv)如果你硬盤夠大,信息處理夠快,定時使用netstat -an >> /.../.../netstat.log來
記錄信息,當然你也可以建立更詳細的腳本,因為netstat能記錄連接信息,所以如有些
後門日志不能記錄,但netstat卻在一定時間裡總有連接記錄。

v)如果你對你的文件系統有原始的記錄,你可以定時使用一些系統完整性檢查工具進行
檢驗。

vi)如果你有防火牆,那更好,經常查看防火牆信息。

===============================================================================

FreeBSD近來比較嚴重的一些安全漏洞
-------------------------------------

遠程漏洞
--------

i)目前出現的最嚴重的漏洞,telnetd守護程序存在遠程溢出漏洞,可以讓攻擊者遠程
獲得Root shell,目前已經有telnetd exploit code推出,包括windows。詳細資料
請查看:

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:49.telnetd.v1.1.asc

ii)FreeBSD的ftp也存在遠程溢出,可以讓攻擊者最終獲得Root shell.詳細資料請看:

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:33.ftpd-glob.v1.1.asc

iii)FreeBSD如果使用BIND服務(操作系統附帶),如果BIND服務版本小於8.2.3-RELEASE,
在處理TSIG問題上存在單字節溢出問題,可以獲得遠程的ROOT SHELL。詳細資料請查看:

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:18.bind.asc

另外關於應用程序的還有wu-ftp,qmail中的vcheckpasswd也存在遠程緩沖溢出,還有其他
其他的。不在詳舉。


本地漏洞
--------

i)FreeBSD的內核對信號處理不正確,可以導致本地用戶獲得ROOT SHELL。詳細信息請看:

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:42.signal.asc

ii)FreeBSD的procfs文件系統存在漏洞,可以導致本地用戶獲得超級管理
員權限。具體信息可以查看:

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-00:77.procfs.v1.1.asc

iii)因為好多FreeBSD安裝了Mysql數據庫,而低於3.23.22版本的mysql都有
一個漏洞可以寫信息到敏感文件,如寫信息到/etc/passwd或者/etc/shadow中,
也可以說是一個比較嚴重的漏洞

上面幾個本人認為必須重視的幾個漏洞,然後你需要打上補丁,或者使用最新的
程序,然後相關的應用程序看你是否安裝,你可以在如下地址找到相應漏洞信息:

http://www.freebsd.org/security/index.html

Posted by skychaser at 09:40 AM | Comments (0) | TrackBack