sysctl.conf檔案配置詳解

foreverfriends發表於2017-04-18

#############################
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
##################################
vnode 是對檔案或目錄的一種內部表達。 因此, 增加可以被作業系統利用的 vnode 數量將降低磁碟的 I/O。
一般而言, 這是由作業系統自行完成的,也不需要加以修改。但在某些時候磁碟 I/O 會成為瓶頸,
而系統的 vnode 不足, 則這一配置應被增加。此時需要考慮是非活躍和空閒記憶體的數量。
####################################
kern.maxproc: 964 #Maximum number of processes
kern.maxprocperuid: 867 #Maximum processes allowed per userid
kern.maxfiles: 1928 #系統中支援最多同時開啟的檔案數量,如果你在執行資料庫或大的很吃描述符的程式,那麼應該設定在20000以上,比如kde這樣的桌面環境,它同時要用的檔案非常多。一般推薦設定為32768或者65536。
kern.argmax: 262144 #maximum number of bytes (or characters) in an argument list.
###################################
kern.securelevel: -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 #每個程式能夠同時開啟的最大檔案數量
kern.ipc.maxsockbuf: 262144 #最大的套接字緩衝區
kern.ipc.somaxconn: 128 #最大的等待連線完成的套接字佇列大小,即併發連線數
################################
kern.ipc.shmmax: 33554432
kern.ipc.shmall: 8192
################################
共享記憶體和訊號燈(”System VIPC”)如果這些過小的話有些大型的軟體將無法啟動
################################
kern.ipc.shm_use_phys: 0
如果我們將它設成 1,則所有 System V 共享記憶體 (share memory,一種程式間溝通的方式)部份都會被留在實體的記憶體 (physical memory) 中,
而不會被放到硬碟上的 swap 空間。我們知道實體記憶體的存取速度比硬碟快許多,而當實體記憶體空間不足時,
部份資料會被放到虛擬的記憶體上,從實體記憶體和虛擬記憶體之間移轉的動作就叫作 swap。如果時常做 swap 的動作
則需要一直對硬碟作 I/O,速度會很慢。因此,如果我們有大量的程式 (數百個) 需要共同分享一個小的共享記憶體空間,
或者是共享記憶體空間很大時,我們可以將這個值開啟。
####################################
kern.ipc.shm_allow_removed: 0 #共享記憶體是否允許移除
kern.ipc.numopensockets: 12 #已經開啟的socket數目
kern.ipc.maxsockets: 1928 #這是用來設定系統最大可以開啟的 socket 數目,這個值必須在系統一開機就設定好,所以如果要修改這項設定,我們必須修改 /boot/loader.conf 才行 kern.ipc.maxsockets="16424″
###################################
kern.ipc.nsfbufs: 1456
經常使用 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
maxusers 的值決定了處理程式所容許的最大值,20+16*maxusers 就是你將得到的所容許處理程式。
如果你的系統會出現 proc table full 的訊息的話,可以就把它設大一點,例如 128。
除非您的系統會需要同時開啟很多檔案,否則請不要設定超過 256。
可以在 /boot/loader.conf 中加入該選項的設定,
kern.maxusers=256
###################################
kern.coredump: 1
如果設定為0,則程式異常退出時不會生成core檔案,作為伺服器,不建議這樣。
####################################
kern.corefile: %N.core
可設定為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不動。
#############################
net.inet.tcp.keepidle: 7200000
######################
TCP的套接字的空閒時間,預設時間太長,可以改為600000(10分鐘)。
##########################
net.inet.tcp.sendspace: 32768
##########################
最大的待傳送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
##########################
所有MPSAFE的網路ISR對包做立即響應,提高網路卡效能,設定為1。
####################################
hw.ata.wc: 1
#####################
這個選項用來開啟 IDE 硬碟快取。當開啟時,如果有資料要寫入硬碟時,硬碟會假裝已完成寫入,並將資料快取起來。

編輯 /etc/sysctl.conf 檔案,在裡面加入如下內容:(有註釋)

#最大的待傳送TCP資料緩衝區空間

net.inet.tcp.sendspace=65536

#最大的接受TCP緩衝區空間

net.inet.tcp.recvspace=65536

#最大的接受UDP緩衝區大小

net.inet.udp.sendspace=65535

#最大的傳送UDP資料緩衝區大小

net.inet.udp.maxdgram=65535

#本地套接字連線的資料傳送空間

net.local.stream.sendspace=65535

#加快網路效能的協議

net.inet.tcp.rfc1323=1

net.inet.tcp.rfc1644=1

net.inet.tcp.rfc3042=1

net.inet.tcp.rfc3390=1

#最大的套接字緩衝區

kern.ipc.maxsockbuf=2097152

#系統中允許的最多檔案數量

kern.maxfiles=65536

#每個程式能夠同時開啟的最大檔案數量

kern.maxfilesperproc=32768

#當一臺計算機發起TCP連線請求時,系統會迴應ACK應答資料包。該選項設定是否延遲

ACK應答資料包,把它和包含資料的資料包一起傳送,在高速網路和低負載的情況下會略微提高效能,但在網路連線較差的時候,對方計算機得不到應答會持續發起連線請求,反而會降低效能。

net.inet.tcp.delayed_ack=0

#遮蔽ICMP重定向功能

net.inet.icmp.drop_redirect=1

net.inet.icmp.log_redirect=1

net.inet.ip.redirect=0

net.inet6.ip6.redirect=0

#防止ICMP廣播風暴

net.inet.icmp.bmcastecho=0

net.inet.icmp.maskrepl=0

#限制系統傳送ICMP速率

net.inet.icmp.icmplim=100

#安全引數,編譯核心的時候加了options TCP_DROP_SYNFIN才可以用

net.inet.icmp.icmplim_output=0

net.inet.tcp.drop_synfin=1

#設定為1會幫助系統清除沒有正常斷開的TCP連線,這增加了一些網路頻寬的使用,但是一些死掉的連線最終能被識別並清除。死的TCP連線是被撥號使用者存取的系統的一個特別的問題,因為使用者經常斷開modem而不正確的關閉活動的連線

net.inet.tcp.always_keepalive=1

#若看到net.inet.ip.intr_queue_drops這個在增加,就要調大net.inet.ip.intr_queue_maxlen,為0最好

net.inet.ip.intr_queue_maxlen=1000

#防止DOS攻擊,預設為30000

net.inet.tcp.msl=7500

#接收到一個已經關閉的埠發來的所有包,直接drop,如果設定為1則是隻針對TCP包

net.inet.tcp.blackhole=2

#接收到一個已經關閉的埠發來的所有UDP包直接drop

net.inet.udp.blackhole=1

#為網路資料連線時提供緩衝

net.inet.tcp.inflight.enable=1

#如果開啟的話每個目標地址一次轉發成功以後它的資料都將被記錄進路由表和arp資料表,節約路由的計算時間,但會需要大量的核心記憶體空間來儲存路由表

net.inet.ip.fastforwarding=0

#kernel編譯開啟options POLLING功能,高負載情況下使用低負載不推薦SMP不能和polling一起用

#kern.polling.enable=1

#併發連線數,預設為128,推薦在1024-4096之間,數字越大佔用記憶體也越大

kern.ipc.somaxconn=32768

#禁止使用者檢視其他使用者的程式

security.bsd.see_other_uids=0

#設定kernel安全級別

kern.securelevel=0

#記錄下任何TCP連線

net.inet.tcp.log_in_vain=1

#記錄下任何UDP連線

net.inet.udp.log_in_vain=1

#防止不正確的udp包的攻擊

net.inet.udp.checksum=1

#防止DOS攻擊

net.inet.tcp.syncookies=1

#僅為執行緒提供實體記憶體支援,需要256兆以上記憶體

kern.ipc.shm_use_phys=1

# 執行緒可使用的最大共享記憶體

kern.ipc.shmmax=67108864

# 最大執行緒數量

kern.ipc.shmall=32768

# 程式崩潰時不記錄

kern.coredump=0

# lo本地資料流接收和傳送空間

net.local.stream.recvspace=65536

net.local.dgram.maxdgram=16384

net.local.dgram.recvspace=65536

# 資料包資料段大小,ADSL為1452。

net.inet.tcp.mssdflt=1460

# 為網路資料連線時提供緩衝

net.inet.tcp.inflight_enable=1

# 資料包資料段最小值,ADSL為1452

net.inet.tcp.minmss=1460

# 本地資料最大數量

net.inet.raw.maxdgram=65536

# 本地資料流接收空間

net.inet.raw.recvspace=65536

#ipfw防火牆動態規則數量,預設為4096,增大該值可以防止某些病毒傳送大量TCP連線,導致不能建立正常連線

net.inet.ip.fw.dyn_max=65535

#設定ipf防火牆TCP連線空閒保留時間,預設8640000(120小時)

net.inet.ipf.fr_tcpidletimeout=864000


http://www.cnblogs.com/goodspeed/p/3587195.html

相關文章