最近,在弄lab的ftp整合計畫。
要將另一台Linux的資料透過samba的方式來掛載到ftp那台FreeBSD上。
以下則是在弄的過程所得到的一些Notes。
首先,我們可以透過以下的指令來察看有提供連線的資料
smbutil view
掛載時則使用
mount_smbfs //[username]@[host]/[service] [mountpoint]
若要加入 /etc/fstab 使開機後自動mount,請先編輯 /etc/nsmb.conf
加入[host:user]的 section,注意! host及section都必須為"大寫",既使平常輸入的是小寫!
然後在該section加入
password=[encrypted_password] (由smbutil crypt算出,Plain Text也可以)
最後,在 /etc/fstab 裡加上:
//[username]@[host]/[service] [mountpoint] smbfs rw,-I=xxx.xxx.xxx.xxx,-N,-u=[uid],-g=[gid] 0 0
要測試是否成功可以用:
mount -a
來觀看結果。
摘自:http://lazyflai.blogspot.com/2006/09/freebsdsmbfs.html
2010年7月16日 星期五
2010年6月3日 星期四
Replacing Sendmail with Postfix on FreeBSD
The following steps can be used to replace sendmail with postfix on FreeBSD.
Notes:
These steps seem to work on FreeBSD 5.2.1. They should work on other versions as well.
The ports collection needs to be installed.
Steps:
Install postfix from /usr/ports/mail/postfix-current:
# cd /usr/ports/mail/postfix-current
# make install
The install will ask to create the postfix group and to enable postfix in /etc/mail/mailer.conf.
The updated mailer.conf(5) should look like the following:
#
# Execute the Postfix sendmail program, named /usr/local/sbin/sendmail
#
sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail
Stop sendmail:
# /etc/rc.d/sendmail stop
Disable sendmail:
Disable starting sendmail on boot:
# echo 'sendmail_enable="NONE"' >> /etc/rc.conf
Disable building sendmail during buildworld:
# echo "NO_SENDMAIL=true" >> /etc/make.conf
Disable sendmail's daily cron jobs by putting the following /etc/periodic.conf:
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
Enable postfix:
# cd /usr/local/etc/rc.d
# ln -s /usr/local/sbin/postfix postfix.sh
Configure postfix. The following entries in the Postfix FAQ are useful:
Running Postfix inside an intranet
Delivering some users locally while sending mail as user@domain
Using Procmail for system-wide local delivery
Root's mail is delivered to nobody
Update the aliases db:
# /usr/local/bin/newaliases
Start postfix:
/usr/local/etc/rc.d/postfix.sh start
摘自:http://www.csua.berkeley.edu/~ranga/notes/freebsd_postfix.html
Notes:
These steps seem to work on FreeBSD 5.2.1. They should work on other versions as well.
The ports collection needs to be installed.
Steps:
Install postfix from /usr/ports/mail/postfix-current:
# cd /usr/ports/mail/postfix-current
# make install
The install will ask to create the postfix group and to enable postfix in /etc/mail/mailer.conf.
The updated mailer.conf(5) should look like the following:
#
# Execute the Postfix sendmail program, named /usr/local/sbin/sendmail
#
sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail
Stop sendmail:
# /etc/rc.d/sendmail stop
Disable sendmail:
Disable starting sendmail on boot:
# echo 'sendmail_enable="NONE"' >> /etc/rc.conf
Disable building sendmail during buildworld:
# echo "NO_SENDMAIL=true" >> /etc/make.conf
Disable sendmail's daily cron jobs by putting the following /etc/periodic.conf:
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
Enable postfix:
# cd /usr/local/etc/rc.d
# ln -s /usr/local/sbin/postfix postfix.sh
Configure postfix. The following entries in the Postfix FAQ are useful:
Running Postfix inside an intranet
Delivering some users locally while sending mail as user@domain
Using Procmail for system-wide local delivery
Root's mail is delivered to nobody
Update the aliases db:
# /usr/local/bin/newaliases
Start postfix:
/usr/local/etc/rc.d/postfix.sh start
摘自:http://www.csua.berkeley.edu/~ranga/notes/freebsd_postfix.html
[教學] pure-ftpd 安裝組態設定
pure-ftpd 安裝組態設定
$ /usr/ports/ftp/pure-ftpd
先下載 source 及套用 patch
$ make patch
修正中文(許功蓋)的問題
轉載自 http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/pure-ftpd.html
修改 /usr/ports/ftp/pure-ftpd/work/pure-ftpd-1.0.20/src/ftpd.c
搜尋
代碼:
while (*namepnt != 0) {
if (ISCTRLCODE(*namepnt) || *namepnt == '\\') {
return -1;
}
if (dot_ok == 0) {
if (*namepnt == '/') {
namepnt++;
改成 (即加上紅色的字)
代碼:
while (*namepnt != 0) {
#if 0
if (ISCTRLCODE(*namepnt) || *namepnt == '\\') {
return -1;
}
#endif
if (dot_ok == 0) {
if (*namepnt == '/') {
namepnt++;
讓 log 中直接顯示中文....不再經過編碼
轉載自 http://bbs.openfind.com.tw/cgi-bin/x_list?VAL=2174780829&BOARD=tw.bbs.comp.386bsd&DISPLEN=15&NO=17
修改 altlog.c
搜尋
代碼:
if ((quoted_filename = urlencode(filename)) == NULL) {
return -1;
}
改成
代碼:
/*
if ((quoted_filename = urlencode(filename)) == NULL) {
return -1;
}*/
quoted_filename = filename;
開始安裝,加上繁體中文(訊息)支援
$ make WITH_LANG=traditional-chinese install clean
代碼:
┌───────────────────────────────────┐
│ Options for pure-ftpd 1.0.20_1 │
│ ┌────────────────────────────────┐ │
│ │ [ ] LDAP Support for users in LDAP directories │ │
│ │ [ ] MYSQL Support for users in MySQL database │ │
│ │ [X] PAM Support for PAM authentication │ │
│ │ [ ] PGSQL Support for users in PostgreSQL database │ │
│ │ [ ] PRIVSEP Enable privilege separation │ │
│ │ [X] PERUSERLIMITS Per-user concurrency limits │ │
│ │ [X] THROTTLING Bandwidth throttling │ │
│ │ │ │
├─└───────────────────────────────┘─┤
│ [ OK ] Cancel │
└───────────────────────────────────┘
1. 組態 /usr/local/etc/pure-ftpd.conf
代碼:
# 使用者被鎖在登入的目錄中,不能切換到上一層
ChrootEveryone yes
# 同時可連線的人數
MaxClientsNumber 5
# 每一個來源 IP 同時可連線
MaxClientsPerIP 2
# 不顯示以 . 為啟始檔名的檔案
DisplayDotFiles no
# 不允許暱名登入
AnonymousOnly no
NoAnonymous no
# syslogd 中的 log 對象
SyslogFacility ftp
# 不反查 ip
DontResolve yes
# 發呆 15 分鐘後,自動斷線
MaxIdleTime 15
# 儲存 virtual user 的帳號、密碼檔 (通常路徑會定在與組態檔同一個目錄)
PureDB /usr/local/etc/pureftpd.pdb
--login=puredb:/usr/local/etc/pureftpd.pdb
LimitRecursion 2000 8
AnonymousCanCreateDirs no
MaxLoad 4
# 指定 Passive mode 所使用的埠號範圍
PassivePortRange 40000 40100
# 指定使用 Passive mode 時的連線 IP (在 NAT 後面的 FTP Server 必須使用)
# 此處的 IP 是 FTP Server 的對外 IP
ForcePassiveIP 61.62.128.140
#
AntiWarez yes
# FTP Server 的服務埠號 (如 Server 上有多張網卡,逗號前面可指定要服務的 IP)
Bind ,2100
# 檔案遮罩 (檔案:目錄)
Umask 133:022
# 可登入 FTP Server 的最小 UID
MinUID 100
# 是否允許使用 FXP Protocol
AllowUserFXP no
AllowAnonymousFXP no
# 是否允許讀寫以一點為啟始檔名的檔案
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
# 是否允許檔案自動更名
AutoRename no
# 是否允許暱名登入者上傳檔案
AnonymousCantUpload no
# 最大的磁碟使用量
MaxDiskUsage 99
#
CustomerProof yes
#
PerUserLimits 1
2. 組態 /etc/syslog.conf,讓 FTP Server 的 log 獨立於 syslog
2.1
找到 /var/log/messages 的那一行
在前一行加入
代碼:
ftp.* /var/log/ftplog
2.2
新增一個空白 log 檔
$ touch /var/log/ftplog
2.3
重新啟動 syslogd (重新讀取組態檔)
$ killall -HUP syslogd
3. 在系統中新增一個 FTP 帳號一個 FTP 群組給 virtual users 使用
$ pw group add FTP -g 5001
$ pw user add FTP -u 5001 -c FTP_USERS -d /nonexistent -s /nonexistent
4. 新增 virtual user
$ pure-pw useradd ftp001 -u FTP -g FTP -d /ftp/root/folder/for/ftp001/here -m
$ pure-pw useradd ftp002 -u FTP -g FTP -d /ftp/root/folder/for/ftp002/here -m
代碼:
useradd:新增一位使用者
-u:uid
-g:gid
-d:登錄後的根目錄
-m:即刻更新使用者資料檔
5. 列出 pure-ftpd 資料庫中的所有帳號
$ pure-pw list
6. 列出某一位使用者 (ftp001) 的所有設定
$ pure-pw show ftp001
7. 為某一位使用者加上下載檔案的頻寬限制
$ pure-pw usermod ftp001 -t 20 -T 100 -m
代碼:
usermod:修改已存在使用者的設定
-t:從 Server 下載檔案的頻寬限制 (單位KB/s)
-T:上傳檔案到 Server 的頻寬限制 (單位KB/s)
-m:即刻更新使用者資料檔
摘自:http://www.backup.idv.tw/viewtopic.php?t=1294
$ /usr/ports/ftp/pure-ftpd
先下載 source 及套用 patch
$ make patch
修正中文(許功蓋)的問題
轉載自 http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/pure-ftpd.html
修改 /usr/ports/ftp/pure-ftpd/work/pure-ftpd-1.0.20/src/ftpd.c
搜尋
代碼:
while (*namepnt != 0) {
if (ISCTRLCODE(*namepnt) || *namepnt == '\\') {
return -1;
}
if (dot_ok == 0) {
if (*namepnt == '/') {
namepnt++;
改成 (即加上紅色的字)
代碼:
while (*namepnt != 0) {
#if 0
if (ISCTRLCODE(*namepnt) || *namepnt == '\\') {
return -1;
}
#endif
if (dot_ok == 0) {
if (*namepnt == '/') {
namepnt++;
讓 log 中直接顯示中文....不再經過編碼
轉載自 http://bbs.openfind.com.tw/cgi-bin/x_list?VAL=2174780829&BOARD=tw.bbs.comp.386bsd&DISPLEN=15&NO=17
修改 altlog.c
搜尋
代碼:
if ((quoted_filename = urlencode(filename)) == NULL) {
return -1;
}
改成
代碼:
/*
if ((quoted_filename = urlencode(filename)) == NULL) {
return -1;
}*/
quoted_filename = filename;
開始安裝,加上繁體中文(訊息)支援
$ make WITH_LANG=traditional-chinese install clean
代碼:
┌───────────────────────────────────┐
│ Options for pure-ftpd 1.0.20_1 │
│ ┌────────────────────────────────┐ │
│ │ [ ] LDAP Support for users in LDAP directories │ │
│ │ [ ] MYSQL Support for users in MySQL database │ │
│ │ [X] PAM Support for PAM authentication │ │
│ │ [ ] PGSQL Support for users in PostgreSQL database │ │
│ │ [ ] PRIVSEP Enable privilege separation │ │
│ │ [X] PERUSERLIMITS Per-user concurrency limits │ │
│ │ [X] THROTTLING Bandwidth throttling │ │
│ │ │ │
├─└───────────────────────────────┘─┤
│ [ OK ] Cancel │
└───────────────────────────────────┘
1. 組態 /usr/local/etc/pure-ftpd.conf
代碼:
# 使用者被鎖在登入的目錄中,不能切換到上一層
ChrootEveryone yes
# 同時可連線的人數
MaxClientsNumber 5
# 每一個來源 IP 同時可連線
MaxClientsPerIP 2
# 不顯示以 . 為啟始檔名的檔案
DisplayDotFiles no
# 不允許暱名登入
AnonymousOnly no
NoAnonymous no
# syslogd 中的 log 對象
SyslogFacility ftp
# 不反查 ip
DontResolve yes
# 發呆 15 分鐘後,自動斷線
MaxIdleTime 15
# 儲存 virtual user 的帳號、密碼檔 (通常路徑會定在與組態檔同一個目錄)
PureDB /usr/local/etc/pureftpd.pdb
--login=puredb:/usr/local/etc/pureftpd.pdb
LimitRecursion 2000 8
AnonymousCanCreateDirs no
MaxLoad 4
# 指定 Passive mode 所使用的埠號範圍
PassivePortRange 40000 40100
# 指定使用 Passive mode 時的連線 IP (在 NAT 後面的 FTP Server 必須使用)
# 此處的 IP 是 FTP Server 的對外 IP
ForcePassiveIP 61.62.128.140
#
AntiWarez yes
# FTP Server 的服務埠號 (如 Server 上有多張網卡,逗號前面可指定要服務的 IP)
Bind ,2100
# 檔案遮罩 (檔案:目錄)
Umask 133:022
# 可登入 FTP Server 的最小 UID
MinUID 100
# 是否允許使用 FXP Protocol
AllowUserFXP no
AllowAnonymousFXP no
# 是否允許讀寫以一點為啟始檔名的檔案
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
# 是否允許檔案自動更名
AutoRename no
# 是否允許暱名登入者上傳檔案
AnonymousCantUpload no
# 最大的磁碟使用量
MaxDiskUsage 99
#
CustomerProof yes
#
PerUserLimits 1
2. 組態 /etc/syslog.conf,讓 FTP Server 的 log 獨立於 syslog
2.1
找到 /var/log/messages 的那一行
在前一行加入
代碼:
ftp.* /var/log/ftplog
2.2
新增一個空白 log 檔
$ touch /var/log/ftplog
2.3
重新啟動 syslogd (重新讀取組態檔)
$ killall -HUP syslogd
3. 在系統中新增一個 FTP 帳號一個 FTP 群組給 virtual users 使用
$ pw group add FTP -g 5001
$ pw user add FTP -u 5001 -c FTP_USERS -d /nonexistent -s /nonexistent
4. 新增 virtual user
$ pure-pw useradd ftp001 -u FTP -g FTP -d /ftp/root/folder/for/ftp001/here -m
$ pure-pw useradd ftp002 -u FTP -g FTP -d /ftp/root/folder/for/ftp002/here -m
代碼:
useradd:新增一位使用者
-u:uid
-g:gid
-d:登錄後的根目錄
-m:即刻更新使用者資料檔
5. 列出 pure-ftpd 資料庫中的所有帳號
$ pure-pw list
6. 列出某一位使用者 (ftp001) 的所有設定
$ pure-pw show ftp001
7. 為某一位使用者加上下載檔案的頻寬限制
$ pure-pw usermod ftp001 -t 20 -T 100 -m
代碼:
usermod:修改已存在使用者的設定
-t:從 Server 下載檔案的頻寬限制 (單位KB/s)
-T:上傳檔案到 Server 的頻寬限制 (單位KB/s)
-m:即刻更新使用者資料檔
摘自:http://www.backup.idv.tw/viewtopic.php?t=1294
2009年11月13日 星期五
2009年4月9日 星期四
FreeBSD logrotate
[root@ns1 ~]# cd /usr/ports/sysutils/logrotate
[root@ns1 logrotate]# make install clean
[root@ns1 logrotate]# cd
[root@ns1 ~]# cp /usr/local/etc/logrotate.conf.sample /usr/local/etc/logrotate.conf
[root@ns1 ~]# vi /usr/local/etc/logrotate.conf
errors root
↓
#errors root ←コメントアウト
compress
↓
#compress ←コメントアウト
↓下記をコメントアウト
#/var/log/lastlog {
# monthly
# rotate 1
#}
[root@ns1 ~]# mkdir /usr/local/etc/logrotate.d
[root@ns1 ~]# vi /etc/crontab
0 0 * * * root /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf > /dev/null 2>&1
摘自:http://freebsd.server-manual.com/logrotate.html
[root@ns1 logrotate]# make install clean
[root@ns1 logrotate]# cd
[root@ns1 ~]# cp /usr/local/etc/logrotate.conf.sample /usr/local/etc/logrotate.conf
[root@ns1 ~]# vi /usr/local/etc/logrotate.conf
errors root
↓
#errors root ←コメントアウト
compress
↓
#compress ←コメントアウト
↓下記をコメントアウト
#/var/log/lastlog {
# monthly
# rotate 1
#}
[root@ns1 ~]# mkdir /usr/local/etc/logrotate.d
[root@ns1 ~]# vi /etc/crontab
0 0 * * * root /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf > /dev/null 2>&1
摘自:http://freebsd.server-manual.com/logrotate.html
2009年3月11日 星期三
最完整的sysctl.conf優化方案
網上關於sysctl.conf的優化方案有各種版本,大多都是抄來抄去的,讓新人看了很迷茫。為解決此問題,經過兩天的整理,查了N多資料,將大家常用的總結如下,很多默認的不需要修改的暫未涉及,今後將逐步把所有的項目都有個翻譯、講解、修改建議,如有修改,將以此文為準,其他地方的內容,本人不負責更新。
因此轉載請註明鏈接地址: http://www.bsdlover.cn/security/2007/1216/article_8.html
如果您有補充或修訂意見,請於本文後評論或郵件聯繫 cujxtm@gmail.com,萬分感謝!
###################
所有rfc相關的選項都是默認啟用的,因此網上的那些還自己寫rfc支持的都可以扔掉了:)
###############################
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
#############################
通過源路由,攻擊者可以嘗試到達內部IP地址 --包括RFC1918中的地址,所以
不接受源路由信息包可以防止你的內部網絡被探測。
#################################
net.inet.tcp.drop_synfin=1
###################################
安全參數,編譯內核的時候加了options TCP_DROP_SYNFIN才可以用,可以阻止某些OS探測。
##################################
kern.maxvnodes=8446
#################http://www.bsdlover.cn#########
vnode 是對文件或目錄的一種內部表達。 因此, 增加可以被操作系統利用的 vnode 數量將降低磁盤的 I/O。
一般而言, 這是由操作系統自行完成的,也不需要加以修改。但在某些時候磁盤 I/O 會成為瓶頸,
而系統的 vnode 不足, 則這一配置應被增加。此時需要考慮是非活躍和空閒內存的數量。
要查看當前在用的 vnode 數量:
# sysctl vfs.numvnodes
vfs.numvnodes: 91349
要查看最大可用的 vnode 數量:
# sysctl kern.maxvnodes
kern.maxvnodes: 100000
如果當前的 vnode 用量接近最大值,則將 kern.maxvnodes 值增大 1,000 可能是個好主意。
您應繼續查看 vfs.numvnodes 的數值, 如果它再次攀升到接近最大值的程度,
仍需繼續提高 kern.maxvnodes。 在 top(1) 中顯示的內存用量應有顯著變化,
更多內存會處於活躍 (active) 狀態。
####################################
kern.maxproc: 964
#################http://www.bsdlover.cn#########
Maximum number of processes
####################################
kern.maxprocperuid: 867
#################http://www.bsdlover.cn#########
Maximum processes allowed per userid
####################################
因為我的maxusers設置的是256,20+16*maxusers=4116。
maxprocperuid至少要比maxproc少1,因為init(8) 這個系統程序絕對要保持在運作狀態。
我給它設置的2068。
kern.maxfiles: 1928
#################http://www.bsdlover.cn#########
系統中支持最多同時開啟的文件數量,如果你在運行數據庫或大的很吃描述符的進程,那麼應該設置在20000以上,
比如kde這樣的桌面環境,它同時要用的文件非常多。
一般推薦設置為32768或者65536。
####################################
kern.argmax: 262144
#################http://www.bsdlover.cn#########
maximum number of bytes (or characters) in an argument list.
命令行下最多支持的參數,比如你在用find命令來批量刪除一些文件的時候
find . -name "*.old" -delete,如果文件數超過了這個數字,那麼會提示你數字太多的。
可以利用find . -name "*.old" -ok rm {} \;來刪除。
默認的參數已經足夠多了,因此不建議再做修改。
####################################
kern.securelevel: -1
#################http://www.bsdlover.cn#########
-1:這是系統默認級別,沒有提供任何內核的保護錯誤;
0:基本上作用不多,當你的系統剛啟動就是0級別的,當進入多用戶模式的時候就自動變成1級了。
1:在這個級別上,有如下幾個限制:
a. 不能通過kldload或者kldunload加載或者卸載可加載內核模塊;
b. 應用程序不能通過/dev/mem或者/dev/kmem直接寫內存;
c. 不能直接往已經裝在(mounted)的磁盤寫東西,也就是不能格式化磁盤,但是可以通過標準的內核接口執行寫操作;
d. 不能啟動X-windows,同時不能使用chflags來修改文件屬性;
2:在 1 級別的基礎上還不能寫沒裝載的磁盤,而且不能在1秒之內製造多次警告,這個是防止DoS控制台的;
3:在 2 級別的級別上不允許修改IPFW防火牆的規則。
如果你已經裝了防火牆,並且把規則設好了,不輕易改動,那麼建議使用3級別,如果你沒有裝防火牆,而且還準備裝防火牆的話,不建議使用。
我們這裡推薦使用 2 級別,能夠避免比較多對內核攻擊。
####################################
kern.maxfilesperproc: 1735
#################http://www.bsdlover.cn#########
每個進程能夠同時打開的最大文件數量,網上很多資料寫的是32768
除非用異步I/O或大量線程,打開這麼多的文件恐怕是不太正常的。
我個人建議不做修改,保留默認。
####################################
kern.ipc.maxsockbuf: 262144
#################http://www.bsdlover.cn#########
最大的套接字緩衝區,網上有建議設置為2097152(2M)、8388608(8M)的。
我個人倒是建議不做修改,保持默認的256K即可,緩衝區大了可能造成碎片、阻塞或者丟包。
####################################
kern.ipc.somaxconn: 128
#################http://www.bsdlover.cn#########
最大的等待連接完成的套接字隊列大小,即並發連接數。
高負載服務器和受到Dos攻擊的系統也許會因為這個隊列被塞滿而不能提供正常服務。
默認為128,推薦在1024-4096之間,根據機器和實際情況需要改動,數字越大佔用內存也越大。
####################################
kern.ipc.nmbclusters: 4800
#################http://www.bsdlover.cn#########
這個值用來調整系統在開機後所要分配給網絡 mbufs 的 cluster 數量,
由於每個 cluster 大小為 2K,所以當這個值為 1024 時,也是會用到 2MB 的核心內存空間。
假設我們的網頁同時約有 1000 個聯機,而 TCP 傳送及接收的暫存區大小都是 16K,
則最糟的情況下,我們會需要 (16K+16K) * 1024,也就是 32MB 的空間,
然而所需的 mbufs 大概是這個空間的二倍,也就是 64MB,所以所需的 cluster 數量為 64MB/2K,也就是 32768。
對於內存有限的機器,建議值是 1024 到 4096 之間,而當擁有海量存儲器空間時,我們可以將它設定為 4096 到 32768 之間。
我們可以使用 netstat 這個指令並加上參數 -m 來查看目前所使用的 mbufs 數量。
要修改這個值必須在一開機就修改,所以只能在 /boot/loader.conf 中加入修改的設定
kern.ipc.nmbclusters=32768
####################################
kern.ipc.shmmax: 33554432
#################http://www.bsdlover.cn#########
共享內存和信號燈("System VIPC")如果這些過小的話,有些大型的軟件將無法啟動
安裝xine和mplayer提示的設置為67108864,即64M,
如果內存多的話,可以設置為134217728,即128M
####################################
kern.ipc.shmall: 8192
#################http://www.bsdlover.cn#########
共享內存和信號燈("System VIPC")如果這些過小的話,有些大型的軟件將無法啟動
安裝xine和mplayer提示的設置為32768
####################################
kern.ipc.shm_use_phys: 0
#################http://www.bsdlover.cn#########
如果我們將它設成 1,則所有 System V 共享內存 (share memory,一種程序間溝通的方式)部份都會被留在實體的內存 (physical memory) 中,
而不會被放到硬盤上的 swap 空間。我們知道物理內存的存取速度比硬盤快許多,而當物理內存空間不足時,
部份數據會被放到虛擬的內存上,從物理內存和虛擬內存之間移轉的動作就叫作 swap。如果時常做 swap 的動作,
則需要一直對硬盤作 I/O,速度會很慢。因此,如果我們有大量的程序 (數百個) 需要共同分享一個小的共享內存空間,
或者是共享內存空間很大時,我們可以將這個值打開。
這一項,我個人建議不做修改,除非你的內存非常大。
####################################
kern.ipc.shm_allow_removed: 0
#################http://www.bsdlover.cn#########
共享內存是否允許移除?這項似乎是在fb下裝vmware需要設置為1的,否則會有加載SVGA出錯的提示
作為服務器,這項不動也罷。
####################################
kern.ipc.numopensockets: 12
#################http://www.bsdlover.cn#########
已經開啟的socket數目,可以在最繁忙的時候看看它是多少,然後就可以知道maxsockets應該設置成多少了。
####################################
kern.ipc.maxsockets: 1928
#################http://www.bsdlover.cn#########
這是用來設定系統最大可以開啟的 socket 數目。如果您的服務器會提供大量的 FTP 服務,
而且常快速的傳輸一些小檔案,您也許會發現常傳輸到一半就中斷。因為 FTP 在傳輸檔案時,
每一個檔案都必須開啟一個 socket 來傳輸,但關閉 socket 需要一段時間,如果傳輸速度很快,
而檔案又多,則同一時間所開啟的 socket 會超過原本系統所許可的值,這時我們就必須把這個值調大一點。
除了 FTP 外,也許有其它網絡程序也會有這種問題。
然而,這個值必須在系統一開機就設定好,所以如果要修改這項設定,我們必須修改 /boot/loader.conf 才行
kern.ipc.maxsockets="16424"
####################################
kern.ipc.nsfbufs: 1456
#################http://www.bsdlover.cn#########
經常使用 sendfile(2) 系統調用的繁忙的服務器,
有必要通過 NSFBUFS 內核選項或者在 /boot/loader.conf (查看 loader(8) 以獲得更多細節) 中設置它的值來調節 sendfile(2) 緩存數量。
這個參數需要調節的普通原因是在進程中看到 sfbufa 狀態。sysctl kern.ipc.nsfbufs 變量在內核配置變量中是只讀的。
這個參數是由 kern.maxusers 決定的,然而它可能有必要因此而調整。
在/boot/loader.conf裡加入
kern.ipc.nsfbufs="2496"
####################################
kern.maxusers: 59
#################http://www.bsdlover.cn#########
maxusers 的值決定了處理程序所容許的最大值,20+16*maxusers 就是你將得到的所容許處理程序。
系統一開機就必須要有 18 個處理程序 (process),即便是簡單的執行指令 man 又會產生 9 個 process,
所以將這個值設為 64 應該是一個合理的數目。
如果你的系統會出現 proc table full 的訊息的話,可以就把它設大一點,例如 128。
除非您的系統會需要同時開啟很多檔案,否則請不要設定超過 256。
可以在 /boot/loader.conf 中加入該選項的設定,
kern.maxusers=256
####################################
kern.coredump: 1
#################http://www.bsdlover.cn#########
如果設置為0,則程序異常退出時不會生成core文件,作為服務器,不建議這樣。
####################################
kern.corefile: %N.core
#################http://www.bsdlover.cn#########
可設置為kern.corefile="/data/coredump/%U-%P-%N.core"
其中 %U是UID,%P是進程ID,%N是進程名,當然/data/coredump必須是一個實際存在的目錄
####################################
vm.swap_idle_enabled: 0
vm.swap_idle_threshold1: 2
vm.swap_idle_threshold2: 10
#########################
在有很多用戶進入、離開系統和有很多空閒進程的大的多用戶系統中很有用。
可以讓進程更快地進入內存,但它會吃掉更多的交換和磁盤帶寬。
系統默認的頁面調度算法已經很好了,最好不要更改。
########################
vfs.ufs.dirhash_maxmem: 2097152
#########################
默認的dirhash最大內存,默認2M
增加它有助於改善單目錄超過100K個文件時的反覆讀目錄時的性能
建議修改為33554432(32M)
#############################
vfs.vmiodirenable: 1
#################
這個變量控制目錄是否被系統緩存。大多數目錄是小的,在系統中只使用單個片斷(典型的是1K)並且在緩存中使用的更小 (典型的是512字節)。
當這個變量設置為關閉 (0) 時,緩存器僅僅緩存固定數量的目錄,即使您有很大的內存。
而將其開啟 (設置為1) 時,則允許緩存器用 VM 頁面緩存來緩存這些目錄,讓所有可用內存來緩存目錄。
不利的是最小的用來緩存目錄的核心內存是大於 512 字節的物理頁面大小(通常是 4k)。
我們建議如果您在運行任何操作大量文件的程序時保持這個選項打開的默認值。
這些服務包括 web 緩存,大容量郵件系統和新聞系統。
儘管可能會浪費一些內存,但打開這個選項通常不會降低性能。但還是應該檢驗一下。
####################
vfs.hirunningspace: 1048576
############################
這個值決定了系統可以將多少數據放在寫入儲存設備的等候區。通常使用默認值即可,
但當我們有多顆硬盤時,我們可以將它調大為 4MB 或 5MB。
注意這個設置成很高的值(超過緩存器的寫極限)會導致壞的性能。
不要盲目的把它設置太高!高的數值會導致同時發生的讀操作的遲延。
#############################
vfs.write_behind: 1
#########################
這個選項預設為 1,也就是打開的狀態。在打開時,在系統需要寫入數據在硬盤或其它儲存設備上時,
它會等到收集了一個 cluster 單位的數據後再一次寫入,否則會在一個暫存區空間有寫入需求時就立即寫到硬盤上。
這個選項打開時,對於一個大的連續的文件寫入速度非常有幫助。但如果您遇到有很多行程延滯在等待寫入動作時,您可能必須關閉這個功能。
############################
net.local.stream.sendspace: 8192
##################################
本地套接字連接的數據發送空間
建議設置為65536
###################################
net.local.stream.recvspace: 8192
##################################
本地套接字連接的數據接收空間
建議設置為65536
###################################
net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535
###################
以上六項是用來控制TCP及UDP所使用的port範圍,這個範圍被分成三個部份,低範圍、預設範圍、及高範圍。
這些是你的服務器主動發起連接時的臨時端口的範圍,預設的已經1萬多了,一般的應用就足夠了。
如果是比較忙碌的FTP server,一般也不會同時提供給1萬多人訪問的,
當然如果很不幸,你的服務器就要提供很多,那麼可以修改first的值,比如直接用1024開始
#########################
net.inet.ip.redirect: 1
#########################
設置為0,屏蔽ip重定向功能
###########################
net.inet.ip.rtexpire: 3600
net.inet.ip.rtminexpire: 10
########################
很多apache產生的CLOSE_WAIT狀態,這種狀態是等待客戶端關閉,但是客戶端那邊並沒有正常的關閉,於是留下很多這樣的東東。
建議都修改為2
#########################
net.inet.ip.intr_queue_maxlen: 50
########################
Maximum size of the IP input queue,如果下面的net.inet.ip.intr_queue_drops一直在增加,
那就說明你的隊列空間不足了,那麼可以考慮增加該值。
##########################
net.inet.ip.intr_queue_drops: 0
####################
Number of packets dropped from the IP input queue,如果你sysctl它一直在增加,
那麼增加net.inet.ip.intr_queue_maxlen的值。
#######################
net.inet.ip.fastforwarding: 0
#############################
如果打開的話每個目標地址一次轉發成功以後它的數據都將被記錄進路由表和arp數據表,節約路由的計算時間
但會需要大量的內核內存空間來保存路由表。
如果內存夠大,打開吧,呵呵
#############################
net.inet.ip.random_id: 0
#####################
默認情況下,ip包的id號是連續的,而這些可能會被攻擊者利用,比如可以知道你nat後面帶了多少主機。
如果設置成1,則這個id號是隨機的,嘿嘿。
#####################
net.inet.icmp.maskrepl: 0
############################
防止廣播風暴,關閉其他廣播探測的響應。默認即是,無須修改。
###############################
net.inet.icmp.icmplim: 200
##############################
限制系統發送ICMP速率,改為100吧,或者保留也可,並不會給系統帶來太大的壓力。
###########################
net.inet.icmp.icmplim_output: 1
###################################
如果設置成0,就不會看到提示說Limiting icmp unreach response from 214 to 200 packets per second 等等了
不過禁止輸出容易讓我們忽視攻擊的存在。這個自己看著辦吧。
######################################
net.inet.icmp.drop_redirect: 0
net.inet.icmp.log_redirect: 0
###################################
設置為1,屏蔽ICMP重定向功能
###################################
net.inet.icmp.bmcastecho: 0
############################
防止廣播風暴,關閉廣播ECHO響應,默認即是,無須修改。
###############################
net.inet.tcp.mssdflt: 512
net.inet.tcp.minmss: 216
###############################
數據包數據段最小值,以上兩個選項最好不動!或者只修改mssdflt為1460,minmss不動。
原因詳見http://www.bsdlover.cn/security/2007/1211/article_4.html
#############################
net.inet.tcp.keepidle: 7200000
######################
TCP的套接字的空閒時間,默認時間太長,可以改為600000(10分鐘)。
##########################
net.inet.tcp.sendspace: 32768
#################http://www.bsdlover.cn#########
最大的待發送TCP數據緩衝區空間,應用程序將數據放到這裡就認為發送成功了,系統TCP堆棧保證數據的正常發送。
####################################
net.inet.tcp.recvspace: 65536
###################################
最大的接受TCP緩衝區空間,系統從這裡將數據分發給不同的套接字,增大該空間可提高系統瞬間接受數據的能力以提高性能。
###################################
這二個選項分別控制了網絡 TCP 聯機所使用的傳送及接收暫存區的大小。預設的傳送暫存區為 32K,而接收暫存區為 64K。
如果需要加速 TCP 的傳輸,可以將這二個值調大一點,但缺點是太大的值會造成系統核心佔用太多的內存。
如果我們的機器會同時服務數百或數千個網絡聯機,那麼這二個選項最好維持默認值,否則會造成系統核心內存不足。
但如果我們使用的是 gigabite 的網絡,將這二個值調大會有明顯效能的提升。
傳送及接收的暫存區大小可以分開調整,
例如,假設我們的系統主要做為網頁服務器,我們可以將接收的暫存區調小一點,並將傳送的暫存區調大,如此一來,我們就可以避免佔去太多的核心內存空間。
net.inet.udp.maxdgram: 9216
#########################
最大的發送UDP數據緩衝區大小,網上的資料大多都是65536,我個人認為沒多大必要,
如果要調整,可以試試24576。
##############################
net.inet.udp.recvspace: 42080
##################
最大的接受UDP緩衝區大小,網上的資料大多都是65536,我個人認為沒多大必要,
如果要調整,可以試試49152。
#######################
以上四項配置通常不會導致問題,一般說來網絡流量是不對稱的,因此應該根據實際情況調整,並觀察其效果。
如果我們將傳送或接收的暫存區設為大於 65535,除非服務器本身及客戶端所使用的操作系統都支持 TCP 協議的 windows scaling extension (請參考 RFC 1323 文件)。
FreeBSD默認已支持 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 選項)。
###################################################
net.inet.tcp.log_in_vain: 0
##################
記錄下任何TCP連接,這個一般情況下不應該更改。
####################
net.inet.tcp.blackhole: 0
##################################
建議設置為2,接收到一個已經關閉的端口發來的所有包,直接drop,如果設置為1則是只針對TCP包
#####################################
net.inet.tcp.delayed_ack: 1
###########################
當一台計算機發起TCP連接請求時,系統會回應ACK應答數據包。
該選項設置是否延遲ACK應答數據包,把它和包含數據的數據包一起發送。
在高速網絡和低負載的情況下會略微提高性能,但在網絡連接較差的時候,
對方計算機得不到應答會持續發起連接請求,反而會讓網絡更加擁堵,降低性能。
因此這個值我建議您看情況而定,如果您的網速不是問題,可以將封包數量減少一半
如果網絡不是特別好,那麼就設置為0,有請求就先回應,這樣其實浪費的網通、電信的帶寬速率而不是你的處理時間:)
############################
net.inet.tcp.inflight.enable: 1
net.inet.tcp.inflight.debug: 0
net.inet.tcp.inflight.rttthresh: 10
net.inet.tcp.inflight.min: 6144
net.inet.tcp.inflight.max: 1073725440
net.inet.tcp.inflight.stab: 20
###########################
限制 TCP 帶寬延遲積和 NetBSD 的 TCP/Vegas 類似。
它可以通過將 sysctl 變量 net.inet.tcp.inflight.enable 設置成 1 來啟用。
系統將嘗試計算每一個連接的帶寬延遲積,並將排隊的數據量限制在恰好能保持最優吞吐量的水平上。
這一特性在您的服務器同時向使用普通調製解調器,千兆以太網,乃至更高速度的光與網絡連接 (或其他帶寬延遲積很大的連接) 的時候尤為重要,
特別是當您同時使用滑動窗縮放,或使用了大的發送窗口的時候。
如果啟用了這個選項,您還應該把 net.inet.tcp.inflight.debug 設置為 0 (禁用調試),
對於生產環境而言, 將 net.inet.tcp.inflight.min 設置成至少 6144 會很有好處。
然而, 需要注意的是,這個值設置過大事實上相當於禁用了連接帶寬延遲積限制功能。
這個限制特性減少了在路由和交換包隊列的堵塞數據數量,也減少了在本地主機接口隊列阻塞的數據的數量。
在少數的等候隊列中、交互式連接,尤其是通過慢速的調製解調器,也能用低的 往返時間操作。
但是,注意這只影響到數據發送 (上載/服務端)。對數據接收(下載)沒有效果。
調整 net.inet.tcp.inflight.stab 是 不 推薦的。
這個參數的默認值是 20,表示把 2 個最大包加入到帶寬延遲積窗口的計算中。
額外的窗口似的算法更為穩定,並改善對於多變網絡環境的相應能力,
但也會導致慢速連接下的 ping 時間增長 (儘管還是會比沒有使用 inflight 算法低許多)。
對於這些情形, 您可能會希望把這個參數減少到 15, 10, 或 5;
並可能因此而不得不減少 net.inet.tcp.inflight.min (比如說, 3500) 來得到希望的效果。
減少這些參數的值, 只應作為最後不得已時的手段來使用。
############################
net.inet.tcp.syncookies: 1
#########################
SYN cookies是一種用於通過選擇加密的初始化TCP序列號,可以對回應的包做驗證來降低SYN'洪水'攻擊的影響的技術。
默認即是,不需修改
########################
net.inet.tcp.msl: 30000
#######################
這個值網上很多文章都推薦的7500,
還可以改的更小一些(如2000或2500),這樣可以加快不正常連接的釋放過程(三次握手2秒、FIN_WAIT4秒)。
#########################
net.inet.tcp.always_keepalive: 1
###########################
幫助系統清除沒有正常斷開的TCP連接,這增加了一些網絡帶寬的使用,但是一些死掉的連接最終能被識別並清除。
死的TCP連接是被撥號用戶存取的系統的一個特別的問題,因為用戶經常斷開modem而不正確的關閉活動的連接。
#############################
net.inet.udp.checksum: 1
#########################
防止不正確的udp包的攻擊,默認即是,不需修改
##############################
net.inet.udp.log_in_vain: 0
#######################
記錄下任何UDP連接,這個一般情況下不應該修改。
#######################
net.inet.udp.blackhole: 0
####################
建議設置為1,接收到一個已經關閉的端口發來的所有UDP包直接drop
#######################
net.inet.raw.maxdgram: 8192
#########################
Maximum outgoing raw IP datagram size
很多文章建議設置為65536,好像沒多大必要。
######################################
net.inet.raw.recvspace: 8192
######################
Maximum incoming raw IP datagram size
很多文章建議設置為65536,好像沒多大必要。
#######################
net.link.ether.inet.max_age: 1200
####################
調整ARP清理的時間,通過向IP路由緩衝填充偽造的ARP條目可以讓惡意用戶產生資源耗竭和性能減低攻擊。
這項似乎大家都未做改動,我建議不動或者稍微減少,比如300(HP-UX默認的5分鐘)
#######################
net.inet6.ip6.redirect: 1
###############################
設置為0,屏蔽ipv6重定向功能
###########################
net.isr.direct: 0
#################http://www.bsdlover.cn#########
所有MPSAFE的網絡ISR對包做立即響應,提高網卡性能,設置為1。
####################################
hw.ata.wc: 1
#####################
這個選項用來打開 IDE 硬盤快取。當打開時,如果有數據要寫入硬盤時,硬盤會假裝已完成寫入,並將數據快取起來。
這種作法會加速硬盤的存取速度,但當系統異常關機時,比較容易造成數據遺失。
不過由於關閉這個功能所帶來的速度差異實在太大,建議還是保留原本打開的狀態吧,不做修改。
###################
security.bsd.see_other_uids: 1
security.bsd.see_other_gids: 1
#####################
不允許用戶看到其他用戶的進程,因此應該改成0,
#######################
摘自:http://www.bsdlover.cn/security/2007/1216/article_8.html
摘自:http://www.backup.idv.tw/viewtopic.php?t=1920&sid=cb7f670708731544b193c2d29f7d0931
因此轉載請註明鏈接地址: http://www.bsdlover.cn/security/2007/1216/article_8.html
如果您有補充或修訂意見,請於本文後評論或郵件聯繫 cujxtm@gmail.com,萬分感謝!
###################
所有rfc相關的選項都是默認啟用的,因此網上的那些還自己寫rfc支持的都可以扔掉了:)
###############################
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
#############################
通過源路由,攻擊者可以嘗試到達內部IP地址 --包括RFC1918中的地址,所以
不接受源路由信息包可以防止你的內部網絡被探測。
#################################
net.inet.tcp.drop_synfin=1
###################################
安全參數,編譯內核的時候加了options TCP_DROP_SYNFIN才可以用,可以阻止某些OS探測。
##################################
kern.maxvnodes=8446
#################http://www.bsdlover.cn#########
vnode 是對文件或目錄的一種內部表達。 因此, 增加可以被操作系統利用的 vnode 數量將降低磁盤的 I/O。
一般而言, 這是由操作系統自行完成的,也不需要加以修改。但在某些時候磁盤 I/O 會成為瓶頸,
而系統的 vnode 不足, 則這一配置應被增加。此時需要考慮是非活躍和空閒內存的數量。
要查看當前在用的 vnode 數量:
# sysctl vfs.numvnodes
vfs.numvnodes: 91349
要查看最大可用的 vnode 數量:
# sysctl kern.maxvnodes
kern.maxvnodes: 100000
如果當前的 vnode 用量接近最大值,則將 kern.maxvnodes 值增大 1,000 可能是個好主意。
您應繼續查看 vfs.numvnodes 的數值, 如果它再次攀升到接近最大值的程度,
仍需繼續提高 kern.maxvnodes。 在 top(1) 中顯示的內存用量應有顯著變化,
更多內存會處於活躍 (active) 狀態。
####################################
kern.maxproc: 964
#################http://www.bsdlover.cn#########
Maximum number of processes
####################################
kern.maxprocperuid: 867
#################http://www.bsdlover.cn#########
Maximum processes allowed per userid
####################################
因為我的maxusers設置的是256,20+16*maxusers=4116。
maxprocperuid至少要比maxproc少1,因為init(8) 這個系統程序絕對要保持在運作狀態。
我給它設置的2068。
kern.maxfiles: 1928
#################http://www.bsdlover.cn#########
系統中支持最多同時開啟的文件數量,如果你在運行數據庫或大的很吃描述符的進程,那麼應該設置在20000以上,
比如kde這樣的桌面環境,它同時要用的文件非常多。
一般推薦設置為32768或者65536。
####################################
kern.argmax: 262144
#################http://www.bsdlover.cn#########
maximum number of bytes (or characters) in an argument list.
命令行下最多支持的參數,比如你在用find命令來批量刪除一些文件的時候
find . -name "*.old" -delete,如果文件數超過了這個數字,那麼會提示你數字太多的。
可以利用find . -name "*.old" -ok rm {} \;來刪除。
默認的參數已經足夠多了,因此不建議再做修改。
####################################
kern.securelevel: -1
#################http://www.bsdlover.cn#########
-1:這是系統默認級別,沒有提供任何內核的保護錯誤;
0:基本上作用不多,當你的系統剛啟動就是0級別的,當進入多用戶模式的時候就自動變成1級了。
1:在這個級別上,有如下幾個限制:
a. 不能通過kldload或者kldunload加載或者卸載可加載內核模塊;
b. 應用程序不能通過/dev/mem或者/dev/kmem直接寫內存;
c. 不能直接往已經裝在(mounted)的磁盤寫東西,也就是不能格式化磁盤,但是可以通過標準的內核接口執行寫操作;
d. 不能啟動X-windows,同時不能使用chflags來修改文件屬性;
2:在 1 級別的基礎上還不能寫沒裝載的磁盤,而且不能在1秒之內製造多次警告,這個是防止DoS控制台的;
3:在 2 級別的級別上不允許修改IPFW防火牆的規則。
如果你已經裝了防火牆,並且把規則設好了,不輕易改動,那麼建議使用3級別,如果你沒有裝防火牆,而且還準備裝防火牆的話,不建議使用。
我們這裡推薦使用 2 級別,能夠避免比較多對內核攻擊。
####################################
kern.maxfilesperproc: 1735
#################http://www.bsdlover.cn#########
每個進程能夠同時打開的最大文件數量,網上很多資料寫的是32768
除非用異步I/O或大量線程,打開這麼多的文件恐怕是不太正常的。
我個人建議不做修改,保留默認。
####################################
kern.ipc.maxsockbuf: 262144
#################http://www.bsdlover.cn#########
最大的套接字緩衝區,網上有建議設置為2097152(2M)、8388608(8M)的。
我個人倒是建議不做修改,保持默認的256K即可,緩衝區大了可能造成碎片、阻塞或者丟包。
####################################
kern.ipc.somaxconn: 128
#################http://www.bsdlover.cn#########
最大的等待連接完成的套接字隊列大小,即並發連接數。
高負載服務器和受到Dos攻擊的系統也許會因為這個隊列被塞滿而不能提供正常服務。
默認為128,推薦在1024-4096之間,根據機器和實際情況需要改動,數字越大佔用內存也越大。
####################################
kern.ipc.nmbclusters: 4800
#################http://www.bsdlover.cn#########
這個值用來調整系統在開機後所要分配給網絡 mbufs 的 cluster 數量,
由於每個 cluster 大小為 2K,所以當這個值為 1024 時,也是會用到 2MB 的核心內存空間。
假設我們的網頁同時約有 1000 個聯機,而 TCP 傳送及接收的暫存區大小都是 16K,
則最糟的情況下,我們會需要 (16K+16K) * 1024,也就是 32MB 的空間,
然而所需的 mbufs 大概是這個空間的二倍,也就是 64MB,所以所需的 cluster 數量為 64MB/2K,也就是 32768。
對於內存有限的機器,建議值是 1024 到 4096 之間,而當擁有海量存儲器空間時,我們可以將它設定為 4096 到 32768 之間。
我們可以使用 netstat 這個指令並加上參數 -m 來查看目前所使用的 mbufs 數量。
要修改這個值必須在一開機就修改,所以只能在 /boot/loader.conf 中加入修改的設定
kern.ipc.nmbclusters=32768
####################################
kern.ipc.shmmax: 33554432
#################http://www.bsdlover.cn#########
共享內存和信號燈("System VIPC")如果這些過小的話,有些大型的軟件將無法啟動
安裝xine和mplayer提示的設置為67108864,即64M,
如果內存多的話,可以設置為134217728,即128M
####################################
kern.ipc.shmall: 8192
#################http://www.bsdlover.cn#########
共享內存和信號燈("System VIPC")如果這些過小的話,有些大型的軟件將無法啟動
安裝xine和mplayer提示的設置為32768
####################################
kern.ipc.shm_use_phys: 0
#################http://www.bsdlover.cn#########
如果我們將它設成 1,則所有 System V 共享內存 (share memory,一種程序間溝通的方式)部份都會被留在實體的內存 (physical memory) 中,
而不會被放到硬盤上的 swap 空間。我們知道物理內存的存取速度比硬盤快許多,而當物理內存空間不足時,
部份數據會被放到虛擬的內存上,從物理內存和虛擬內存之間移轉的動作就叫作 swap。如果時常做 swap 的動作,
則需要一直對硬盤作 I/O,速度會很慢。因此,如果我們有大量的程序 (數百個) 需要共同分享一個小的共享內存空間,
或者是共享內存空間很大時,我們可以將這個值打開。
這一項,我個人建議不做修改,除非你的內存非常大。
####################################
kern.ipc.shm_allow_removed: 0
#################http://www.bsdlover.cn#########
共享內存是否允許移除?這項似乎是在fb下裝vmware需要設置為1的,否則會有加載SVGA出錯的提示
作為服務器,這項不動也罷。
####################################
kern.ipc.numopensockets: 12
#################http://www.bsdlover.cn#########
已經開啟的socket數目,可以在最繁忙的時候看看它是多少,然後就可以知道maxsockets應該設置成多少了。
####################################
kern.ipc.maxsockets: 1928
#################http://www.bsdlover.cn#########
這是用來設定系統最大可以開啟的 socket 數目。如果您的服務器會提供大量的 FTP 服務,
而且常快速的傳輸一些小檔案,您也許會發現常傳輸到一半就中斷。因為 FTP 在傳輸檔案時,
每一個檔案都必須開啟一個 socket 來傳輸,但關閉 socket 需要一段時間,如果傳輸速度很快,
而檔案又多,則同一時間所開啟的 socket 會超過原本系統所許可的值,這時我們就必須把這個值調大一點。
除了 FTP 外,也許有其它網絡程序也會有這種問題。
然而,這個值必須在系統一開機就設定好,所以如果要修改這項設定,我們必須修改 /boot/loader.conf 才行
kern.ipc.maxsockets="16424"
####################################
kern.ipc.nsfbufs: 1456
#################http://www.bsdlover.cn#########
經常使用 sendfile(2) 系統調用的繁忙的服務器,
有必要通過 NSFBUFS 內核選項或者在 /boot/loader.conf (查看 loader(8) 以獲得更多細節) 中設置它的值來調節 sendfile(2) 緩存數量。
這個參數需要調節的普通原因是在進程中看到 sfbufa 狀態。sysctl kern.ipc.nsfbufs 變量在內核配置變量中是只讀的。
這個參數是由 kern.maxusers 決定的,然而它可能有必要因此而調整。
在/boot/loader.conf裡加入
kern.ipc.nsfbufs="2496"
####################################
kern.maxusers: 59
#################http://www.bsdlover.cn#########
maxusers 的值決定了處理程序所容許的最大值,20+16*maxusers 就是你將得到的所容許處理程序。
系統一開機就必須要有 18 個處理程序 (process),即便是簡單的執行指令 man 又會產生 9 個 process,
所以將這個值設為 64 應該是一個合理的數目。
如果你的系統會出現 proc table full 的訊息的話,可以就把它設大一點,例如 128。
除非您的系統會需要同時開啟很多檔案,否則請不要設定超過 256。
可以在 /boot/loader.conf 中加入該選項的設定,
kern.maxusers=256
####################################
kern.coredump: 1
#################http://www.bsdlover.cn#########
如果設置為0,則程序異常退出時不會生成core文件,作為服務器,不建議這樣。
####################################
kern.corefile: %N.core
#################http://www.bsdlover.cn#########
可設置為kern.corefile="/data/coredump/%U-%P-%N.core"
其中 %U是UID,%P是進程ID,%N是進程名,當然/data/coredump必須是一個實際存在的目錄
####################################
vm.swap_idle_enabled: 0
vm.swap_idle_threshold1: 2
vm.swap_idle_threshold2: 10
#########################
在有很多用戶進入、離開系統和有很多空閒進程的大的多用戶系統中很有用。
可以讓進程更快地進入內存,但它會吃掉更多的交換和磁盤帶寬。
系統默認的頁面調度算法已經很好了,最好不要更改。
########################
vfs.ufs.dirhash_maxmem: 2097152
#########################
默認的dirhash最大內存,默認2M
增加它有助於改善單目錄超過100K個文件時的反覆讀目錄時的性能
建議修改為33554432(32M)
#############################
vfs.vmiodirenable: 1
#################
這個變量控制目錄是否被系統緩存。大多數目錄是小的,在系統中只使用單個片斷(典型的是1K)並且在緩存中使用的更小 (典型的是512字節)。
當這個變量設置為關閉 (0) 時,緩存器僅僅緩存固定數量的目錄,即使您有很大的內存。
而將其開啟 (設置為1) 時,則允許緩存器用 VM 頁面緩存來緩存這些目錄,讓所有可用內存來緩存目錄。
不利的是最小的用來緩存目錄的核心內存是大於 512 字節的物理頁面大小(通常是 4k)。
我們建議如果您在運行任何操作大量文件的程序時保持這個選項打開的默認值。
這些服務包括 web 緩存,大容量郵件系統和新聞系統。
儘管可能會浪費一些內存,但打開這個選項通常不會降低性能。但還是應該檢驗一下。
####################
vfs.hirunningspace: 1048576
############################
這個值決定了系統可以將多少數據放在寫入儲存設備的等候區。通常使用默認值即可,
但當我們有多顆硬盤時,我們可以將它調大為 4MB 或 5MB。
注意這個設置成很高的值(超過緩存器的寫極限)會導致壞的性能。
不要盲目的把它設置太高!高的數值會導致同時發生的讀操作的遲延。
#############################
vfs.write_behind: 1
#########################
這個選項預設為 1,也就是打開的狀態。在打開時,在系統需要寫入數據在硬盤或其它儲存設備上時,
它會等到收集了一個 cluster 單位的數據後再一次寫入,否則會在一個暫存區空間有寫入需求時就立即寫到硬盤上。
這個選項打開時,對於一個大的連續的文件寫入速度非常有幫助。但如果您遇到有很多行程延滯在等待寫入動作時,您可能必須關閉這個功能。
############################
net.local.stream.sendspace: 8192
##################################
本地套接字連接的數據發送空間
建議設置為65536
###################################
net.local.stream.recvspace: 8192
##################################
本地套接字連接的數據接收空間
建議設置為65536
###################################
net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535
###################
以上六項是用來控制TCP及UDP所使用的port範圍,這個範圍被分成三個部份,低範圍、預設範圍、及高範圍。
這些是你的服務器主動發起連接時的臨時端口的範圍,預設的已經1萬多了,一般的應用就足夠了。
如果是比較忙碌的FTP server,一般也不會同時提供給1萬多人訪問的,
當然如果很不幸,你的服務器就要提供很多,那麼可以修改first的值,比如直接用1024開始
#########################
net.inet.ip.redirect: 1
#########################
設置為0,屏蔽ip重定向功能
###########################
net.inet.ip.rtexpire: 3600
net.inet.ip.rtminexpire: 10
########################
很多apache產生的CLOSE_WAIT狀態,這種狀態是等待客戶端關閉,但是客戶端那邊並沒有正常的關閉,於是留下很多這樣的東東。
建議都修改為2
#########################
net.inet.ip.intr_queue_maxlen: 50
########################
Maximum size of the IP input queue,如果下面的net.inet.ip.intr_queue_drops一直在增加,
那就說明你的隊列空間不足了,那麼可以考慮增加該值。
##########################
net.inet.ip.intr_queue_drops: 0
####################
Number of packets dropped from the IP input queue,如果你sysctl它一直在增加,
那麼增加net.inet.ip.intr_queue_maxlen的值。
#######################
net.inet.ip.fastforwarding: 0
#############################
如果打開的話每個目標地址一次轉發成功以後它的數據都將被記錄進路由表和arp數據表,節約路由的計算時間
但會需要大量的內核內存空間來保存路由表。
如果內存夠大,打開吧,呵呵
#############################
net.inet.ip.random_id: 0
#####################
默認情況下,ip包的id號是連續的,而這些可能會被攻擊者利用,比如可以知道你nat後面帶了多少主機。
如果設置成1,則這個id號是隨機的,嘿嘿。
#####################
net.inet.icmp.maskrepl: 0
############################
防止廣播風暴,關閉其他廣播探測的響應。默認即是,無須修改。
###############################
net.inet.icmp.icmplim: 200
##############################
限制系統發送ICMP速率,改為100吧,或者保留也可,並不會給系統帶來太大的壓力。
###########################
net.inet.icmp.icmplim_output: 1
###################################
如果設置成0,就不會看到提示說Limiting icmp unreach response from 214 to 200 packets per second 等等了
不過禁止輸出容易讓我們忽視攻擊的存在。這個自己看著辦吧。
######################################
net.inet.icmp.drop_redirect: 0
net.inet.icmp.log_redirect: 0
###################################
設置為1,屏蔽ICMP重定向功能
###################################
net.inet.icmp.bmcastecho: 0
############################
防止廣播風暴,關閉廣播ECHO響應,默認即是,無須修改。
###############################
net.inet.tcp.mssdflt: 512
net.inet.tcp.minmss: 216
###############################
數據包數據段最小值,以上兩個選項最好不動!或者只修改mssdflt為1460,minmss不動。
原因詳見http://www.bsdlover.cn/security/2007/1211/article_4.html
#############################
net.inet.tcp.keepidle: 7200000
######################
TCP的套接字的空閒時間,默認時間太長,可以改為600000(10分鐘)。
##########################
net.inet.tcp.sendspace: 32768
#################http://www.bsdlover.cn#########
最大的待發送TCP數據緩衝區空間,應用程序將數據放到這裡就認為發送成功了,系統TCP堆棧保證數據的正常發送。
####################################
net.inet.tcp.recvspace: 65536
###################################
最大的接受TCP緩衝區空間,系統從這裡將數據分發給不同的套接字,增大該空間可提高系統瞬間接受數據的能力以提高性能。
###################################
這二個選項分別控制了網絡 TCP 聯機所使用的傳送及接收暫存區的大小。預設的傳送暫存區為 32K,而接收暫存區為 64K。
如果需要加速 TCP 的傳輸,可以將這二個值調大一點,但缺點是太大的值會造成系統核心佔用太多的內存。
如果我們的機器會同時服務數百或數千個網絡聯機,那麼這二個選項最好維持默認值,否則會造成系統核心內存不足。
但如果我們使用的是 gigabite 的網絡,將這二個值調大會有明顯效能的提升。
傳送及接收的暫存區大小可以分開調整,
例如,假設我們的系統主要做為網頁服務器,我們可以將接收的暫存區調小一點,並將傳送的暫存區調大,如此一來,我們就可以避免佔去太多的核心內存空間。
net.inet.udp.maxdgram: 9216
#########################
最大的發送UDP數據緩衝區大小,網上的資料大多都是65536,我個人認為沒多大必要,
如果要調整,可以試試24576。
##############################
net.inet.udp.recvspace: 42080
##################
最大的接受UDP緩衝區大小,網上的資料大多都是65536,我個人認為沒多大必要,
如果要調整,可以試試49152。
#######################
以上四項配置通常不會導致問題,一般說來網絡流量是不對稱的,因此應該根據實際情況調整,並觀察其效果。
如果我們將傳送或接收的暫存區設為大於 65535,除非服務器本身及客戶端所使用的操作系統都支持 TCP 協議的 windows scaling extension (請參考 RFC 1323 文件)。
FreeBSD默認已支持 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 選項)。
###################################################
net.inet.tcp.log_in_vain: 0
##################
記錄下任何TCP連接,這個一般情況下不應該更改。
####################
net.inet.tcp.blackhole: 0
##################################
建議設置為2,接收到一個已經關閉的端口發來的所有包,直接drop,如果設置為1則是只針對TCP包
#####################################
net.inet.tcp.delayed_ack: 1
###########################
當一台計算機發起TCP連接請求時,系統會回應ACK應答數據包。
該選項設置是否延遲ACK應答數據包,把它和包含數據的數據包一起發送。
在高速網絡和低負載的情況下會略微提高性能,但在網絡連接較差的時候,
對方計算機得不到應答會持續發起連接請求,反而會讓網絡更加擁堵,降低性能。
因此這個值我建議您看情況而定,如果您的網速不是問題,可以將封包數量減少一半
如果網絡不是特別好,那麼就設置為0,有請求就先回應,這樣其實浪費的網通、電信的帶寬速率而不是你的處理時間:)
############################
net.inet.tcp.inflight.enable: 1
net.inet.tcp.inflight.debug: 0
net.inet.tcp.inflight.rttthresh: 10
net.inet.tcp.inflight.min: 6144
net.inet.tcp.inflight.max: 1073725440
net.inet.tcp.inflight.stab: 20
###########################
限制 TCP 帶寬延遲積和 NetBSD 的 TCP/Vegas 類似。
它可以通過將 sysctl 變量 net.inet.tcp.inflight.enable 設置成 1 來啟用。
系統將嘗試計算每一個連接的帶寬延遲積,並將排隊的數據量限制在恰好能保持最優吞吐量的水平上。
這一特性在您的服務器同時向使用普通調製解調器,千兆以太網,乃至更高速度的光與網絡連接 (或其他帶寬延遲積很大的連接) 的時候尤為重要,
特別是當您同時使用滑動窗縮放,或使用了大的發送窗口的時候。
如果啟用了這個選項,您還應該把 net.inet.tcp.inflight.debug 設置為 0 (禁用調試),
對於生產環境而言, 將 net.inet.tcp.inflight.min 設置成至少 6144 會很有好處。
然而, 需要注意的是,這個值設置過大事實上相當於禁用了連接帶寬延遲積限制功能。
這個限制特性減少了在路由和交換包隊列的堵塞數據數量,也減少了在本地主機接口隊列阻塞的數據的數量。
在少數的等候隊列中、交互式連接,尤其是通過慢速的調製解調器,也能用低的 往返時間操作。
但是,注意這只影響到數據發送 (上載/服務端)。對數據接收(下載)沒有效果。
調整 net.inet.tcp.inflight.stab 是 不 推薦的。
這個參數的默認值是 20,表示把 2 個最大包加入到帶寬延遲積窗口的計算中。
額外的窗口似的算法更為穩定,並改善對於多變網絡環境的相應能力,
但也會導致慢速連接下的 ping 時間增長 (儘管還是會比沒有使用 inflight 算法低許多)。
對於這些情形, 您可能會希望把這個參數減少到 15, 10, 或 5;
並可能因此而不得不減少 net.inet.tcp.inflight.min (比如說, 3500) 來得到希望的效果。
減少這些參數的值, 只應作為最後不得已時的手段來使用。
############################
net.inet.tcp.syncookies: 1
#########################
SYN cookies是一種用於通過選擇加密的初始化TCP序列號,可以對回應的包做驗證來降低SYN'洪水'攻擊的影響的技術。
默認即是,不需修改
########################
net.inet.tcp.msl: 30000
#######################
這個值網上很多文章都推薦的7500,
還可以改的更小一些(如2000或2500),這樣可以加快不正常連接的釋放過程(三次握手2秒、FIN_WAIT4秒)。
#########################
net.inet.tcp.always_keepalive: 1
###########################
幫助系統清除沒有正常斷開的TCP連接,這增加了一些網絡帶寬的使用,但是一些死掉的連接最終能被識別並清除。
死的TCP連接是被撥號用戶存取的系統的一個特別的問題,因為用戶經常斷開modem而不正確的關閉活動的連接。
#############################
net.inet.udp.checksum: 1
#########################
防止不正確的udp包的攻擊,默認即是,不需修改
##############################
net.inet.udp.log_in_vain: 0
#######################
記錄下任何UDP連接,這個一般情況下不應該修改。
#######################
net.inet.udp.blackhole: 0
####################
建議設置為1,接收到一個已經關閉的端口發來的所有UDP包直接drop
#######################
net.inet.raw.maxdgram: 8192
#########################
Maximum outgoing raw IP datagram size
很多文章建議設置為65536,好像沒多大必要。
######################################
net.inet.raw.recvspace: 8192
######################
Maximum incoming raw IP datagram size
很多文章建議設置為65536,好像沒多大必要。
#######################
net.link.ether.inet.max_age: 1200
####################
調整ARP清理的時間,通過向IP路由緩衝填充偽造的ARP條目可以讓惡意用戶產生資源耗竭和性能減低攻擊。
這項似乎大家都未做改動,我建議不動或者稍微減少,比如300(HP-UX默認的5分鐘)
#######################
net.inet6.ip6.redirect: 1
###############################
設置為0,屏蔽ipv6重定向功能
###########################
net.isr.direct: 0
#################http://www.bsdlover.cn#########
所有MPSAFE的網絡ISR對包做立即響應,提高網卡性能,設置為1。
####################################
hw.ata.wc: 1
#####################
這個選項用來打開 IDE 硬盤快取。當打開時,如果有數據要寫入硬盤時,硬盤會假裝已完成寫入,並將數據快取起來。
這種作法會加速硬盤的存取速度,但當系統異常關機時,比較容易造成數據遺失。
不過由於關閉這個功能所帶來的速度差異實在太大,建議還是保留原本打開的狀態吧,不做修改。
###################
security.bsd.see_other_uids: 1
security.bsd.see_other_gids: 1
#####################
不允許用戶看到其他用戶的進程,因此應該改成0,
#######################
摘自:http://www.bsdlover.cn/security/2007/1216/article_8.html
摘自:http://www.backup.idv.tw/viewtopic.php?t=1920&sid=cb7f670708731544b193c2d29f7d0931
2008年9月11日 星期四
2008年6月20日 星期五
[FreeBSD]PHP PEAR安裝
Setp 1.
安裝 Apache + MySQL + PHP 的基本 web 環境:
#cd /usr/ports/database/mysql50-server # 安裝 MySQL 50
#make install clean
#cd /usr/ports/www/apache20 # 安裝 Apache 20
#make install clean
#cd /usr/ports/lang/php5 # 安裝 PHP5
#make install clean # 我只有選擇下列相關套件一併安裝
[X] CLI Build CLI version
[X] CGI Build CGI version
[X] APACHE Build Apache module
[X] FASTCGI Enable fastcgi support (CGI only)
[X] PATHINFO Enable path-info-check support (CGI only)
#cd /usr/ports/lang/php5-extensions # 安裝 PHP5-Extensions
#make config # 安裝前先手動選擇所需要的延伸套件
[X] CTYPE ctype functions
[X] DOM DOM support
[X] GD GD library support
[X] GETTEXT gettext library support
[X] HASH HASH Message Digest Framework
[X] ICONV iconv support
[X] MYSQL MySQL database support
[X] PCRE Perl Compatible Regular Expression support
[X] PDO PHP Data Objects Interface (PDO)
[X] POSIX POSIX-like functions
[X] SESSION session support
[X] SIMPLEXML simplexml support
[X] SQLITE sqlite support
[X] TOKENIZER tokenizer support
[X] XML XML support
[X] XMLREADER XMLReader support
[X] XMLWRITER XMLWriter support
[X] ZLIB ZLIB support
#make install # 因為 Extensions 有選 GD library 所以必須要選擇加裝 T1LIB 及 TRUETYPE 同時 SQLITE 也必須選擇是否開啟 UTF-8 編碼
Options for php5-gd 5.1.6
[X] T1LIB Include T1lib support
[X] TRUETYPE Enable TrueType string function
Options for php5-sqlite 5.1.6 # PHP 下的精簡型文字資料庫 Text Database
[X] UTF8 Enable UTF-8 support
#vi /etc/rc.conf # 編輯 FreeBSD 的開機設定檔,設定 mysql 及 apache 開機自動啟動
mysql_enable="YES"
apache2_enable="YES"
#vi httpd.conf # 編輯 Apache 的設定檔,加入下列幾行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php
#cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini # 編輯 PHP5 的設定檔將複製 php.ini-dist 到 php.ini
#vi php.ini # 如果必須要相容舊語法可將 Off 改為 On
register_globals = On
#apachectl # 重新啟動 apache
#reboot # 重開機讓 MySQL 啟動
Setp 2.
安裝 PEAR 開發環境及基本套件:
#cd /usr/ports/devel/pear # 安裝 PEAR 套件管理指令 ( 這邊只是 PEAR 的套件管理指令,PEAR 的基本套件要等裝完 lynx 才可加裝 )
#make install clean
#vi /usr/local/etc/php.ini # 將 pear 的絕對路徑加到 php.ini 設定檔中
include_path = ".:/usr/local/share/pear"
#cd /usr/ports/www/lynx # 安裝 lynx
#make install clean
#lynx -source http://go-pear.org | php # 安裝 PEAR 的基本套件
Welcome to go-pear!
Go-pear will install the 'pear' command and all the files needed by
it. This command is your tool for PEAR installation and maintenance.
Go-pear also lets you download and install the PEAR packages bundled
with PHP: MDB2.
If you wish to abort, press Control-C now, or press Enter to continue: 按 Enter
HTTP proxy (http://user:password@proxy.myhost.com:port), or Enter for none:: 按 Enter # ( 我無 proxy 所以跳過 )
Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them or simply press Enter to
accept these locations.
1. Installation prefix : /usr/local
2. Binaries directory : $prefix/bin
3. PHP code directory ($php_dir) : $prefix/share/pear
4. Documentation base directory : $php_dir/docs
5. Data base directory : $php_dir/data
6. Tests base directory : $php_dir/tests
7. Temporary files directory : $prefix/temp
1-7, 'all' or Enter to continue: 按 Enter
The following PEAR packages are bundled with PHP: MDB2.
Would you like to install these as well? [Y/n] : y
#apachectl restart # 重新啟動 apache
#pear list # 查看 pear 已安裝的套件版本
Installed packages, channel pear.php.net:
==============================
Package Version State
Archive_Tar 1.3.1 stable
Console_Getopt 1.2 stable
MDB2 2.2.2 stable
PEAR 1.4.11 stable
XML_RPC 1.5.0 stable
Setp 3.
安裝套件並且測試安裝結果:
#chown -Rf www:www /usr/local/share/pear # 修改 pear 套件存放目錄權限
#chown www:www /usr/local/share # 修改 pear 套件目錄權限
#pear install Benchmark # 安裝一個套件來測試看看
pear/Benchmark can optionally use PHP extension "bcmath"
downloading Benchmark-1.2.6.tgz ...
Starting to download Benchmark-1.2.6.tgz (7,915 bytes)
.....done: 7,915 bytes
install ok: channel://pear.php.net/Benchmark-1.2.6
#pear list # 再次查看所有已安裝套件
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.1 stable
Benchmark 1.2.6 stable
Console_Getopt 1.2 stable
MDB2 2.2.2 stable
PEAR 1.4.11 stable
XML_RPC 1.5.0 stable
#cd /usr/local/share/pear/Benchmark # 查看所安裝的套件目錄
# ls -l # Benchmark 下總共有三個套件
total 30
-rw-r--r-- 1 root www 4658 9 14 17:40 Iterate.php
-rw-r--r-- 1 root www 13323 9 14 17:40 Profiler.php
-rw-r--r-- 1 root www 10095 9 14 17:40 Timer.php
#vi Timer.php # 查半 Timer.php 這個套件如何引用 Timer 裡面有說明
#vi /usr/local/www/data-dist/show.php # 寫個 php 的時間計數小程式來測試
require_once 'Benchmark/Timer.php';
$timer = new Benchmark_Timer();
$timer->start();
echo "Hello World!";
$timer->stop();
$totaltime=$timer->timeElapsed();
echo "
This Page Show Time:".$totaltime."Sec";
?>
http://xxx.xxx.xxx.xxx/show.php # 開個瀏覽器看一下 Timer 計時器是否成功
Hello World!
This Page Show Timer:0.000207185745239Sec
#pear install PEAR_Info
#vi /usr/local/www/data-dist/info.php
require_once 'PEAR/Info.php';
$pear_info = new PEAR_info();
$pear_info ->show();
?>
http://xxx.xxx.xxx.xxx/info.php # 開個瀏覽器可看見PEAR 設定檔及所安裝的套件訊息
To Add .
#pear uninstall Benchmark # 解除安裝套件
#pear help # 查看 pear 指令
<<本文引自四位的freebsd學習技術文件>>
安裝 Apache + MySQL + PHP 的基本 web 環境:
#cd /usr/ports/database/mysql50-server # 安裝 MySQL 50
#make install clean
#cd /usr/ports/www/apache20 # 安裝 Apache 20
#make install clean
#cd /usr/ports/lang/php5 # 安裝 PHP5
#make install clean # 我只有選擇下列相關套件一併安裝
[X] CLI Build CLI version
[X] CGI Build CGI version
[X] APACHE Build Apache module
[X] FASTCGI Enable fastcgi support (CGI only)
[X] PATHINFO Enable path-info-check support (CGI only)
#cd /usr/ports/lang/php5-extensions # 安裝 PHP5-Extensions
#make config # 安裝前先手動選擇所需要的延伸套件
[X] CTYPE ctype functions
[X] DOM DOM support
[X] GD GD library support
[X] GETTEXT gettext library support
[X] HASH HASH Message Digest Framework
[X] ICONV iconv support
[X] MYSQL MySQL database support
[X] PCRE Perl Compatible Regular Expression support
[X] PDO PHP Data Objects Interface (PDO)
[X] POSIX POSIX-like functions
[X] SESSION session support
[X] SIMPLEXML simplexml support
[X] SQLITE sqlite support
[X] TOKENIZER tokenizer support
[X] XML XML support
[X] XMLREADER XMLReader support
[X] XMLWRITER XMLWriter support
[X] ZLIB ZLIB support
#make install # 因為 Extensions 有選 GD library 所以必須要選擇加裝 T1LIB 及 TRUETYPE 同時 SQLITE 也必須選擇是否開啟 UTF-8 編碼
Options for php5-gd 5.1.6
[X] T1LIB Include T1lib support
[X] TRUETYPE Enable TrueType string function
Options for php5-sqlite 5.1.6 # PHP 下的精簡型文字資料庫 Text Database
[X] UTF8 Enable UTF-8 support
#vi /etc/rc.conf # 編輯 FreeBSD 的開機設定檔,設定 mysql 及 apache 開機自動啟動
mysql_enable="YES"
apache2_enable="YES"
#vi httpd.conf # 編輯 Apache 的設定檔,加入下列幾行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php
#cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini # 編輯 PHP5 的設定檔將複製 php.ini-dist 到 php.ini
#vi php.ini # 如果必須要相容舊語法可將 Off 改為 On
register_globals = On
#apachectl # 重新啟動 apache
#reboot # 重開機讓 MySQL 啟動
Setp 2.
安裝 PEAR 開發環境及基本套件:
#cd /usr/ports/devel/pear # 安裝 PEAR 套件管理指令 ( 這邊只是 PEAR 的套件管理指令,PEAR 的基本套件要等裝完 lynx 才可加裝 )
#make install clean
#vi /usr/local/etc/php.ini # 將 pear 的絕對路徑加到 php.ini 設定檔中
include_path = ".:/usr/local/share/pear"
#cd /usr/ports/www/lynx # 安裝 lynx
#make install clean
#lynx -source http://go-pear.org | php # 安裝 PEAR 的基本套件
Welcome to go-pear!
Go-pear will install the 'pear' command and all the files needed by
it. This command is your tool for PEAR installation and maintenance.
Go-pear also lets you download and install the PEAR packages bundled
with PHP: MDB2.
If you wish to abort, press Control-C now, or press Enter to continue: 按 Enter
HTTP proxy (http://user:password@proxy.myhost.com:port), or Enter for none:: 按 Enter # ( 我無 proxy 所以跳過 )
Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them or simply press Enter to
accept these locations.
1. Installation prefix : /usr/local
2. Binaries directory : $prefix/bin
3. PHP code directory ($php_dir) : $prefix/share/pear
4. Documentation base directory : $php_dir/docs
5. Data base directory : $php_dir/data
6. Tests base directory : $php_dir/tests
7. Temporary files directory : $prefix/temp
1-7, 'all' or Enter to continue: 按 Enter
The following PEAR packages are bundled with PHP: MDB2.
Would you like to install these as well? [Y/n] : y
#apachectl restart # 重新啟動 apache
#pear list # 查看 pear 已安裝的套件版本
Installed packages, channel pear.php.net:
==============================
Package Version State
Archive_Tar 1.3.1 stable
Console_Getopt 1.2 stable
MDB2 2.2.2 stable
PEAR 1.4.11 stable
XML_RPC 1.5.0 stable
Setp 3.
安裝套件並且測試安裝結果:
#chown -Rf www:www /usr/local/share/pear # 修改 pear 套件存放目錄權限
#chown www:www /usr/local/share # 修改 pear 套件目錄權限
#pear install Benchmark # 安裝一個套件來測試看看
pear/Benchmark can optionally use PHP extension "bcmath"
downloading Benchmark-1.2.6.tgz ...
Starting to download Benchmark-1.2.6.tgz (7,915 bytes)
.....done: 7,915 bytes
install ok: channel://pear.php.net/Benchmark-1.2.6
#pear list # 再次查看所有已安裝套件
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.1 stable
Benchmark 1.2.6 stable
Console_Getopt 1.2 stable
MDB2 2.2.2 stable
PEAR 1.4.11 stable
XML_RPC 1.5.0 stable
#cd /usr/local/share/pear/Benchmark # 查看所安裝的套件目錄
# ls -l # Benchmark 下總共有三個套件
total 30
-rw-r--r-- 1 root www 4658 9 14 17:40 Iterate.php
-rw-r--r-- 1 root www 13323 9 14 17:40 Profiler.php
-rw-r--r-- 1 root www 10095 9 14 17:40 Timer.php
#vi Timer.php # 查半 Timer.php 這個套件如何引用 Timer 裡面有說明
#vi /usr/local/www/data-dist/show.php # 寫個 php 的時間計數小程式來測試
require_once 'Benchmark/Timer.php';
$timer = new Benchmark_Timer();
$timer->start();
echo "Hello World!";
$timer->stop();
$totaltime=$timer->timeElapsed();
echo "
This Page Show Time:".$totaltime."Sec";
?>
http://xxx.xxx.xxx.xxx/show.php # 開個瀏覽器看一下 Timer 計時器是否成功
Hello World!
This Page Show Timer:0.000207185745239Sec
#pear install PEAR_Info
#vi /usr/local/www/data-dist/info.php
require_once 'PEAR/Info.php';
$pear_info = new PEAR_info();
$pear_info ->show();
?>
http://xxx.xxx.xxx.xxx/info.php # 開個瀏覽器可看見PEAR 設定檔及所安裝的套件訊息
To Add .
#pear uninstall Benchmark # 解除安裝套件
#pear help # 查看 pear 指令
<<本文引自四位的freebsd學習技術文件>>
2008年3月31日 星期一
[FreeBSD]maillog 壓縮檔讀取
FreeBSD 的 /var/log 中有很多檔案,而且每天的零晨都會自動壓縮備份成一個 xxx.bz2 的壓縮檔,這些壓縮檔會保留約一個星期或 10 天,之後便會自動刪除,以 maillog 來說它每天會備份一次保留 7 天。
maillog
maillog.0.bz2
maillog.1.bz2
maillog.2.bz2
maillog.3.bz2
maillog.4.bz2
maillog.5.bz2
maillog.6.bz2
maillog.7.bz2
bz2 這些壓縮檔如何檢視呢 ? 可使用 bzcat 這個指令 :
#bzcat maillog.1.bz2 | grep dynamic > file.01
將檔案解開並把 dynamic 相關的文字檔導入 file.01 這個檔
#vi file.01
檢視檔案
今天在 LSS 的實驗室 中學到的透過一些簡易的指令可更方便檢視 maillog 中你要的資訊,LSS 也是重 自由軟體交流網的討論區 中學到的,我也把它記錄下來免得健忘的我要用時又到處找 :
張貼於: 2004/9/4 3:06
之前是用 iptables 把大陸, 香港, 韓國的連線都擋掉,
今天一時興起, 想說找找幾個廣告信大宗來源, 整理如下:
140.111.101.25
202.163.32.0/19
210.202.108.0/29
210.202.113.96/29
210.71.186.176/30
218.36.0.0/12
218.62.128.0/17
218.63.0.0/16
220.163.0.0/15
220.165.0.0/16
220.228.86.228
61.159.254.0/24
61.220.135.112/29
61.220.135.88/28
61.220.185.248/28
61.63.77.113
63.251.144.32/28
有些不一定是廣告信, 但是出現太多次寄給不明帳號, 就擋掉了. 至於這些來源的取得, 可以透過一些常用的程式完成:
cat /var/log/maillog \ #列出郵件紀錄
| awk '{FS="relay=";print $2}' \ #以 relay= 為分隔點, 列出後半段(也就是發信站)
| awk '{FS="]";print $1}' \ #以 ] 為分隔點, 列出前半段(也就是發信站)
| sort \ #排序一下
| uniq -c \ #統計各發信站寄來的數量
| sort -r #將發信最多的排前面
這是比較粗略的檢查法, 要精確一點的話, 可以加上
| grep "Sep 4" \ #只找 9 月 4 號的紀錄
| grep "unknown" \ #只找沒有 DNS 反查的連線
| grep -v "User unknown" \ #但不會找到 User unknown
假如查到的 ip 是 61.159.254.28 , 再另外執行:
whois 61.159.254.28 | more
會 列出這個 IP 隸屬的業者,以及這業者所分配的 IP 範圍, 再列入擋掉的範圍.這個 IP 發廣告信只限於61.159.254.0/24 ,所以沒有擋掉該業者全部, 只擋這個範圍;而其他發信來源有跨多個子網域,就把該業者全部擋掉,例如: 220.163.0.0/15~220.165.0.0/16 是同一業者,廣告信過於分散, 所以全擋.
我的用法採 bzcat 寫法如下 :
#bzcat maillog.* | awk '{FS="relay=";print $2}' | awk '{FS="]";print $1}' | sort | uniq -c | sort -r
摘自:http://blog.ntut.idv.tw/2005/05/freebsd-maillog.html
maillog
maillog.0.bz2
maillog.1.bz2
maillog.2.bz2
maillog.3.bz2
maillog.4.bz2
maillog.5.bz2
maillog.6.bz2
maillog.7.bz2
bz2 這些壓縮檔如何檢視呢 ? 可使用 bzcat 這個指令 :
#bzcat maillog.1.bz2 | grep dynamic > file.01
將檔案解開並把 dynamic 相關的文字檔導入 file.01 這個檔
#vi file.01
檢視檔案
今天在 LSS 的實驗室 中學到的透過一些簡易的指令可更方便檢視 maillog 中你要的資訊,LSS 也是重 自由軟體交流網的討論區 中學到的,我也把它記錄下來免得健忘的我要用時又到處找 :
張貼於: 2004/9/4 3:06
之前是用 iptables 把大陸, 香港, 韓國的連線都擋掉,
今天一時興起, 想說找找幾個廣告信大宗來源, 整理如下:
140.111.101.25
202.163.32.0/19
210.202.108.0/29
210.202.113.96/29
210.71.186.176/30
218.36.0.0/12
218.62.128.0/17
218.63.0.0/16
220.163.0.0/15
220.165.0.0/16
220.228.86.228
61.159.254.0/24
61.220.135.112/29
61.220.135.88/28
61.220.185.248/28
61.63.77.113
63.251.144.32/28
有些不一定是廣告信, 但是出現太多次寄給不明帳號, 就擋掉了. 至於這些來源的取得, 可以透過一些常用的程式完成:
cat /var/log/maillog \ #列出郵件紀錄
| awk '{FS="relay=";print $2}' \ #以 relay= 為分隔點, 列出後半段(也就是發信站)
| awk '{FS="]";print $1}' \ #以 ] 為分隔點, 列出前半段(也就是發信站)
| sort \ #排序一下
| uniq -c \ #統計各發信站寄來的數量
| sort -r #將發信最多的排前面
這是比較粗略的檢查法, 要精確一點的話, 可以加上
| grep "Sep 4" \ #只找 9 月 4 號的紀錄
| grep "unknown" \ #只找沒有 DNS 反查的連線
| grep -v "User unknown" \ #但不會找到 User unknown
假如查到的 ip 是 61.159.254.28 , 再另外執行:
whois 61.159.254.28 | more
會 列出這個 IP 隸屬的業者,以及這業者所分配的 IP 範圍, 再列入擋掉的範圍.這個 IP 發廣告信只限於61.159.254.0/24 ,所以沒有擋掉該業者全部, 只擋這個範圍;而其他發信來源有跨多個子網域,就把該業者全部擋掉,例如: 220.163.0.0/15~220.165.0.0/16 是同一業者,廣告信過於分散, 所以全擋.
我的用法採 bzcat 寫法如下 :
#bzcat maillog.* | awk '{FS="relay=";print $2}' | awk '{FS="]";print $1}' | sort | uniq -c | sort -r
摘自:http://blog.ntut.idv.tw/2005/05/freebsd-maillog.html
2008年3月5日 星期三
[FreeBSD]利用 pw 指令來增加/變換 user 的 group
例:帳號 abcd 所屬群組 abcd
變換帳號 abcd 的預設群組為 staff (當然得要先有 staff 這個群組)
變換帳號 abcd 的預設群組為 office,並加入到 www,mysql,squid 三群組中
不變換預設群組,只將帳號 abcd 加入到 office,staff,game,software 四群組中
將帳號 abcd 維持在預設群組中,並從其它附屬的群組中移除
變換帳號 abcd 的預設群組為 staff (當然得要先有 staff 這個群組)
$ pw user mod -n abcd -g staff
$ groups abcd
staff
變換帳號 abcd 的預設群組為 office,並加入到 www,mysql,squid 三群組中
$ pw user mod -n abcd -g office -G www,mysql,squid
$ groups abcd
office www mysql squid
不變換預設群組,只將帳號 abcd 加入到 office,staff,game,software 四群組中
$ pw user mod -n abcd -G office,staff,game,software
$ groups abcd
abcd www mysql squid
將帳號 abcd 維持在預設群組中,並從其它附屬的群組中移除
$ pw user mod -n abcd -G ""
$ groups abcd
abcd
[FreeBSD]關於 Proftpd 設定 DefaultRoot
原來 DefaultRoot可以重複設,比如:
就是設定「除了ice_gogogo這個群組登入後到自己家目錄,其餘皆會 chroot 到 /srv」。採取的規則是 first match ,所以要是反過來設就會有不一樣的結果。
摘自:http://williewu.blogspot.com/2007/03/proftpd-defaultroot.html
DefaultRoot ~ ice_gogogo
DefaultRoot /srv/
就是設定「除了ice_gogogo這個群組登入後到自己家目錄,其餘皆會 chroot 到 /srv」。採取的規則是 first match ,所以要是反過來設就會有不一樣的結果。
摘自:http://williewu.blogspot.com/2007/03/proftpd-defaultroot.html
2008年2月17日 星期日
重設FreeBSD的root密碼
當在 FreeBSD 忘記了 root 密碼時,可以在開機時進入 single user mode 及重新設定密碼,方法如下:
1. 重新開啟 FreeBSD 主機。
2. 在 "Welcome to FreeBSD!" 開啟選單中按 "4" 選擇 "Boot FreeBSD in single user mode"。
3. 然後會看到 "When prompted Enter full pathname of shell or RETURN for /bin/sh:",直接按 Enter。
4. 這時便會直接進入 single user mode,輸入以下指令重新掛載根目錄 "/" 為可讀寫:
# mount -u /
# mount -a
5. 用 passwd 重新設定 root 密碼:
# passwd
6. 最後重新啟動即可:
# sync;sync;sync;reboot
1. 重新開啟 FreeBSD 主機。
2. 在 "Welcome to FreeBSD!" 開啟選單中按 "4" 選擇 "Boot FreeBSD in single user mode"。
3. 然後會看到 "When prompted Enter full pathname of shell or RETURN for /bin/sh:",直接按 Enter。
4. 這時便會直接進入 single user mode,輸入以下指令重新掛載根目錄 "/" 為可讀寫:
# mount -u /
# mount -a
5. 用 passwd 重新設定 root 密碼:
# passwd
6. 最後重新啟動即可:
# sync;sync;sync;reboot
訂閱:
文章 (Atom)