LINUX調優方法總結

LINUX調優方法總結 node

大多數 Linux 發佈版都定義了適當的緩衝區和其餘 Transmission Control Protocol(TCP)參數。能夠修改這些參數來分配更多的內存,從而改進網絡性能。設置內核參數的方法是經過 proc 接口,也就是經過讀寫 /proc 中的值。幸運的是,sysctl 能夠讀取 /etc/sysctl.conf 中的值並根據須要填充 /proc,這樣就可以更輕鬆地管理這些參數。清單 2 展現在互聯網服務器上應用於 Internet 服務器的一些比較激進的網絡設置。
# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000

將這些設置添加到 /etc/sysctl.conf 的現有內容中。第一個設置啓用 TCP SYN cookie。當從客戶機發來新的 TCP 鏈接時,數據包設置了 SYN 位,服務器就爲這個半開的鏈接建立一個條目,並用一個 SYN-ACK 數據包進行響應。在正常操做中,遠程客戶機用一個 ACK 數據包進行響應,這會使半開的鏈接轉換爲全開的。有一種稱爲 SYN 氾濫(SYN flood) 的網絡***,它使 ACK 數據包沒法返回,致使服務器用光內存空間,沒法處理到來的鏈接。SYN cookie 特性能夠識別出這種狀況,並使用一種優雅的方法保留隊列中的空間(細節參見 參考資料 一節)。大多數系統都默認啓用這個特性,可是確保配置這個特性更可靠。
啓用 TCP 窗口伸縮使客戶機可以以更高的速度下載數據。TCP 容許在未從遠程端收到確認的狀況下發送多個數據包,默認設置是最多 64 KB,在與延遲比較大的遠程客戶機進行通訊時這個設置可能不夠。窗口伸縮會在頭中啓用更多的位,從而增長窗口大小。
後面四個配置項增長 TCP 發送和接收緩衝區。這使應用程序能夠更快地丟掉它的數據,從而爲另外一個請求服務。還能夠強化遠程客戶機在服務器繁忙時發送數據的能力。最後一個配置項增長可用的本地端口數量,這樣就增長了能夠同時服務的最大鏈接數量。
在下一次引導系統時,或者下一次運行 sysctl -p /etc/sysctl.conf 時,這些設置就會生效。

----------------------------------------------------------------------------------------------------------------------------
磁盤子系統的調優
磁盤在 LAMP 架構中扮演着重要的角色。靜態文件、模板和代碼都來自磁盤,組成數據庫的數據表和索引也來自磁盤。對磁盤的許多調優(尤爲是對於數據庫)集中於避免磁盤訪問,由於磁盤訪問的延遲至關高。所以,花一些時間對磁盤硬件進行優化是有意義的。
首先要作的是,確保在文件系統上禁用 atime 日誌記錄特性。atime 是最近訪問文件的時間,每當訪問文件時,底層文件系統必須記錄這個時間戳。由於系統管理員不多使用 atime,禁用它能夠減小磁盤訪問時間。禁用這個特性的方法是,在 /etc/fstab 的第四列中添加 noatime 選項。

演示如何啓用 noatime 的 fstab 示例
               
/dev/VolGroup00/LogVol00 /                      ext3    defaults,noatime        1 1
LABEL=/boot             /boot                   ext3    defaults,noatime        1 2
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
LABEL=SWAP-hdb2         swap                    swap    defaults        0 0
LABEL=SWAP-hda3         swap                    swap    defaults        0 0


有多種磁盤硬件組合,並且 Linux 不必定可以探測出訪問磁盤的最佳方式。可使用 hdparm 命令查明和設置用來訪問 IDE 磁盤的方法。hdparm -t /path/to/device 執行速度測試,能夠將這個測試結果做爲性能基準。爲了使結果儘量準確,在運行這個命令時系統應該是空閒的。
在 /dev/hd 上執行的速度測試
# hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads:  182 MB in  3.02 seconds =  60.31 MB/sec
hdparm 的經常使用選項
選項 描述
-vi 向磁盤查詢它支持的設置以及它正在使用的設置。
-c 查詢/啓用 (E)IDE 32 位 I/O 支持。hdparm -c 1 /dev/hda 啓用這個設置。
-m 查詢/設置每中斷多扇區模式。若是設置大於零,設置值就是每一箇中斷能夠傳輸的最大扇區數量。
-d 1 -X 啓用直接內存訪問(DMA)傳輸並設置 IDE 傳輸模式。hdparm 手冊頁詳細說明了在 -X 後面能夠設置的數字。只有在 -vi 說明目前並未使用最快速的模式的狀況下,才須要進行這個設置。
linux

不幸的是,對於 Fiber Channel and Small Computer Systems Interface(SCSI)系統,調優依賴於具體的驅動器。
必須將有幫助的設置添加到啓動腳本中,好比 rc.local。

----------------------------------------------------------------------------------------------------------------------------
TCP/IP子系統的調優
全部的TCP/IP調優參數都位於/proc/sys/net/目錄. 例如, 下面是最重要的一些調優參數, 後面是它們的含義:
  1. /proc/sys/net/core/rmem_max — 最大的TCP數據接收緩衝
  2. /proc/sys/net/core/wmem_max — 最大的TCP數據發送緩衝
  3. /proc/sys/net/ipv4/tcp_timestamps — 時間戳在(請參考RFC 1323)TCP的包頭增長12個字節
  4. /proc/sys/net/ipv4/tcp_sack — 有選擇的應答
  5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 若是TCP窗口最大超過65535(64K), 必須設置該數值爲1
  6. rmem_default — 默認的接收窗口大小
  7. rmem_max — 接收窗口的最大大小
  8. wmem_default — 默認的發送窗口大小
  9. wmem_max — 發送窗口的最大大小
  /proc目錄下的全部內容都是臨時性的, 因此重啓動系統後任何修改都會丟失.
  建議在系統啓動時自動修改TCP/IP參數:
  把下面代碼增長到/etc/rc.local文件, 而後保存文件, 系統從新引導的時候會自動修改下面的TCP/IP參數:
  echo 256960 > /proc/sys/net/core/rmem_default
  echo 256960 > /proc/sys/net/core/rmem_max
  echo 256960 > /proc/sys/net/core/wmem_default
  echo 256960 > /proc/sys/net/core/wmem_max
  echo 0 > /proc/sys/net/ipv4/tcp_timestamps
  echo 1 > /proc/sys/net/ipv4/tcp_sack
  echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
  TCP/IP參數都是自解釋的, TCP窗口大小設置爲256960, 禁止TCP的時間戳(取消在每一個數據包的頭中增長12字節), 支持更大的TCP窗口和TCP有選擇的

應答.
  上面數值的設定是根據互連網鏈接和最大帶寬/延遲率來決定.
  注: 上面實例中的數值能夠實際應用, 但它只包含了一部分參數.
  另一個方法: 使用 /etc/sysctl.conf 在系統啓動時將參數配置成您所設置的值:
  net.core.rmem_default = 256960
  net.core.rmem_max = 256960
  net.core.wmem_default = 256960
  net.core.wmem_max = 256960
  net.ipv4.tcp_timestamps = 0
  net.ipv4.tcp_sack =1
  net.ipv4.tcp_window_scaling = 1
----------------------------------------------------------------------------------------------------------------------------
文件子系統的調優

ulimit -a 用來顯示當前的各類用戶進程限制。
Linux對於每一個用戶,系統限制其最大進程數。爲提升性能,能夠根據設備資源狀況,
設置各linux 用戶的最大進程數,下面我把某linux用戶的最大進程數設爲10000個:
    ulimit -u 10000
    對於須要作許多 socket 鏈接並使它們處於打開狀態的 Java 應用程序而言,
    最好經過使用 ulimit -n xx 修改每一個進程可打開的文件數,缺省值是 1024。
    ulimit -n 4096 將每一個進程能夠打開的文件數目加大到4096,缺省爲1024
    其餘建議設置成無限制(unlimited)的一些重要設置是:
    數據段長度:ulimit -d unlimited
    最大內存大小:ulimit -m unlimited
    堆棧大小:ulimit -s unlimited
   CPU 時間:ulimit -t unlimited
    虛擬內存:ulimit -v unlimited
    暫時地,適用於經過 ulimit 命令登陸 shell 會話期間。
    永久地,經過將一個相應的 ulimit 語句添加到由登陸 shell 讀取的文件中, 即特定於 shell 的用戶資源文件,如:
1)、解除 Linux 系統的最大進程數和最大文件打開數限制:
       vi /etc/security/limits.conf
       # 添加以下的行
       * soft noproc 11000
       * hard noproc 11000
       * soft nofile 4100
       * hard nofile 4100
   說明:* 表明針對全部用戶
                   noproc 是表明最大進程數
                   nofile 是表明最大文件打開數
2)、讓 SSH 接受 Login 程式的登入,方便在 ssh 客戶端查看 ulimit -a 資源限制:
       a、vi /etc/ssh/sshd_config
         把 UserLogin 的值改成 yes,並把 # 註釋去掉
       b、重啓 sshd 服務:
             /etc/init.d/sshd restart
3)、修改全部 linux 用戶的環境變量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited

/**************************************
有時候在程序裏面須要打開多個文件,進行分析,系統通常默認數量是1024,(用ulimit -a能夠看到)對於正常使用是夠了,可是對於程序來說,就太少了。
修改2個文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/login
session required /lib/security/pam_limits.so
**********
另外確保/etc/pam.d/system-auth文件有下面內容
session required /lib/security/$ISA/pam_limits.so
這一行確保系統會執行這個限制。
***********
3.通常用戶的.bash_profile
#ulimit -n 1024
從新登錄ok

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

內存子系統的調優
  內存子系統的調優不是很容易,須要不停地監測來保證內存的改變不會對服務器的其餘子系統形成負面影響。若是要改變虛擬內存參數
(在/proc/sys/vm),建議您每次只改變一個參數而後監測效果。對與虛擬內存的調整包括如下幾個項目:
  配置Linux內核如何更新dirty buffers到磁盤。磁盤緩衝區用於暫存磁盤的數據。相對於內存來說,磁盤緩衝區的速度很慢。所以,若是服務器使用這類內存,性能會成問題。當緩衝區內的數據徹底dirty,使用:sysctl -w vm.bdflush="30 500 0 0 500 3000 60 20 0"
  vm.bdflush有9個參數,可是建議您只改變其中的3個:
  1 nfract, 爲排隊寫入磁盤前,bdflush daemon容許的緩衝區最大百分比
  2 ndirty, 爲bdflush即刻寫的最大緩衝區的值。若是這個值很大,bdflush須要更多的時間完成磁盤的數據更新。
  7 nfract_sync, 發生同步前,緩衝區變dirty的最大百分比
  配置kswapd daemon,指定Linux的內存頁數量
  sysctl -w vm.kswapd="1024 32 64"
  三個參數的描述以下:
  – tries_base 至關於內核每次所的「頁」的數量的四倍。對於有不少交換信息的系統,增長這個值能夠改進性能。
  – tries_min 是每次kswapd swaps出去的pages的最小數量。
  – swap_cluster 是kswapd 即刻寫如的pages數量。數值小,會提升磁盤I/O的性能;數值大可能也會對請求隊列產生負面影響。
  若是要對這些參數進行改動,請使用工具vmstat檢查對性能的影響。其它能夠改進性能的虛擬內存參數爲:
  _ buffermem
  _ freepages
  _ overcommit_memory
  _ page-cluster
  _ pagecache
  _ pagetable_cache

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

網絡子系統的調優
  操做系統安裝完畢,就要對網絡子系統進行調優。對其它子系統的影響:影響CPU利用率,尤爲在有大量TCP鏈接、塊尺寸又很是小時,內存的使用會明顯增長。
  如何預防性能降低
  以下的sysctl命令用於改變安全設置,可是它也能夠防止網絡性能的降低。這些命令被設置爲缺省值。
  ◆關閉以下參數能夠防止***對服務器IP地址的***
sysctl -w net.ipv4.conf.eth0.accept_source_route=0
sysctl -w net.ipv4.conf.lo.accept_source_route=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.all.accept_source_route=0
◆開啓TCP SYN cookies,保護服務器避免受syn-flood***,包括服務取決denial-of-service (DoS) 或者分佈式服務拒絕distributed denial-of-

service (DDoS) (僅適用Red Hat Enterprise Linux AS)
sysctl -w net.ipv4.tcp_syncookies=1
◆如下命令使服務器忽略來自被列入網關的服務器的重定向。因重定向能夠被用來進行***,因此咱們只接受有可靠來源的重定向。
sysctl -w net.ipv4.conf.eth0.secure_redirects=1
sysctl -w net.ipv4.conf.lo.secure_redirects=1
sysctl -w net.ipv4.conf.default.secure_redirects=1
sysctl -w net.ipv4.conf.all.secure_redirects=1

另外,你能夠配置接受或拒絕任何ICMP重定向。ICMP重定向是器傳輸信息的機制。好比,當網關接收到來自所接網絡主機的Internet數據報時,網關能夠

發送重定向信息到一臺主機。網關檢查路由表得到下一個網關的地址,第二個網關將數據報路由到目標網絡.關閉這些重定向得命令以下:
sysctl -w net.ipv4.conf.eth0.accept_redirects=0
sysctl -w net.ipv4.conf.lo.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.all.accept_redirects=0
◆若是這個服務器不是一臺路由器,那麼它不會發送重定向,因此能夠關閉該功能:
sysctl -w net.ipv4.conf.eth0.send_redirects=0
sysctl -w net.ipv4.conf.lo.send_redirects=0
sysctl -w net.ipv4.conf.default.send_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
◆配置服務器拒絕接受廣播風暴或者smurf ***attacks:
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
◆忽略全部icmp包或者pings:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
◆有些路由器針對廣播禎發送無效的迴應,每一個都產生警告並在內核產生日誌.這些迴應能夠被忽略:
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
針對TCP和UDP的調優
  下邊的命令用來對鏈接數量很是大的服務器進行調優.
  ◆對於同時支持不少鏈接的服務器,新的鏈接能夠從新使用TIME-WAIT套接字. 這對於Web服務器很是有效:
sysctl -w net.ipv4.tcp_tw_reuse=1
若是你使用該命令,還要啓動TIME-WAIT 套接字狀態的快速循環功能:
sysctl -w net.ipv4.tcp_tw_recycle=1
圖Figure 10-7顯示出將這些功能啓用,鏈接數量明顯下降.由於每一個TCP傳輸都包含遠程客戶端的信息緩存,因此有利於提升性能.緩存中存放round-trip時間、最大segment大小、擁塞窗口的信息。
◆參數tcp_fin_timeout 是套接字關閉時,保持FIN-WAIT-2狀態的時間。一個TCP鏈接以three-segment SYN序列開始, 以three-segment FIN序列結束.均不保留數據.經過改變tcp_fin_timeout的值, 從FIN序列到內存能夠空閒出來處理新鏈接的時間縮短了,使性能獲得改進.改變這個值的前要通過認真的監測,避免由於死套接字形成內存溢出.
sysctl -w net.ipv4.tcp_fin_timeout=30
◆服務器的一個問題是,同一時刻的大量TCP鏈接裏有不少的鏈接被打開可是沒有使用. TCP的keepalive功能檢測到這些鏈接,缺省狀況下,在2小時以後丟掉. 2個小時的可能致使內存過分使用,下降性能.所以改爲1800秒(30分鐘)是個更好的選擇:
sysctl -w net.ipv4.tcp_keepalive_time=1800
◆對於全部的隊列,設置最大系統發送緩存(wmem) 和接收緩存(rmem)到8MB
sysctl -w net.ipv4.core.wmem_max=8388608
sysctl -w net.ipv4.core.rmem_max=8388608
這些設置指定了建立TCP套接字時爲其分配的內存容量. 另外,使用以下命令發送和接收緩存.該命令設定了三個值:最小值、初始值和最大值:
sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608"
sysclt -w net.ipv4.tcp.wmem="4096 87380 8388608"
第三個值必須小於或等於wmem_max和rmem_max。
  ◆(SUSE LINUX Enterprise Server適用) 經過保留路徑驗證來源數據包。缺省狀況下,路由器轉發全部的數據包,即使是明顯的異常網絡流量。經過啓動和是的過濾功能,丟掉這些數據包:
sysctl -w net.ipv4.conf.eth0.rp_filter=1
sysctl -w net.ipv4.conf.lo.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.conf.all.rp_filter=1
◆當服務器負載繁重或者是有不少客戶端都是超長延時的鏈接故障,可能會致使half-open鏈接數量的增長。這對於Web服務器很來說很日常,尤爲有不少撥號客戶時.這些half-open鏈接保存在 backlog connections 隊列中.將這個值最少設置爲4096 (缺省爲1024). 即使是服務器不接收這類鏈接,設置這個值還能防止受到denial-of-service (syn-flood)的***.
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
◆設置ipfrag參數,尤爲是NFS和Samba服務器。這裏,咱們能夠設置用於從新組合IP碎片的最大、最小內存。當ipfrag_high_thresh值被指派,碎片會被丟棄直到達到ipfrag_low_thres值。
當TCP數據包傳輸發生錯誤時,開始碎片整理。有效的數據包保留在內存,同時損壞的數據包被轉發。例如,設置可用內存範圍從256 MB到384 MB
sysctl -w net.ipv4.ipfrag_low_thresh=262144
sysctl -w net.ipv4.ipfrag_high_thresh=393216
----------------------------------------------------------------------------------------------------------------------------
網絡安全設置:
TCP SYN Flood 攻擊
TCP SYN Flood是一種常見,並且有效的遠端(遠程)拒絕服務(Denial of Service)攻擊方式,它透過必定的操做破壞TCP三次握手創建正常連接,佔用並耗費系統資源,使得提供TCP服務的主機系統無法正常工做。 由於TCP SYN Flood是透過網路底層對服務器Server進行攻擊的,它能夠在任意改變本身的網路IP地址的同時,不被網路上的其餘設備所識別,這樣就給防範網路犯罪部門追查犯罪來源形成很大的困難。
系統檢查
  通常情況下,能夠一些簡單步驟進行檢查,來判斷系統是否正在遭受TCP SYN Flood攻擊。
  一、 服務端無法提供正常的TCP服務。連接請求被拒絕或超時。
  二、透過 netstat -an 命令檢查系統,發現有大量的SYN_RECV連接狀態。
    3. iptables的設置,引用自CU
  防止同步包洪水(Sync Flood)
  # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
  也有人寫做
  #iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
  --limit 1/s 限制syn併發數每秒1次,能夠根據本身的須要修改
防止各類端口掃描
  # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
  Ping洪水***(Ping of Death)
  # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


----------------------------------------------------------------------------------------------------------------------------
暫定步驟:
修改/etc/profile文件,加入:
ulimit -u 10240
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
修改/etc/rc.d/rc.local,加入:
echo ‘131072′ > /proc/sys/fs/file-max
echo ‘131072′ > /proc/sys/fs/inode-max
(1G內存值修改爲:65535 2G內存值修改爲:131072    4G內存值修改爲:262144)
修改/etc/sysctl.conf文件,加入:
net.core.rmem_default = 8388608
net.core.rmem_max = 8388608
net.core.wmem_default = 8388608
net.core.wmem_max = 8388608
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
net.core.netdev_max_backlog=3000
#Modify i-node
sys.fs.file-max= 65535
sys.fs.inode-max= 65535
#Set System Memory
vm.bdflush="30 500 0 0 500 3000 60 20 0"
vm.kswapd="1024 32 64"
#Disable HackAttack!
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.lo.secure_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.eth0.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.eth0.send_redirects=0
net.ipv4.conf.lo.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.tcp_syncookies=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
#Web Servers
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1800
net.ipv4.core.wmem_max=16777216
net.ipv4.core.rmem_max=16777216
net.ipv4.tcp_rmem="4096 87380 8388608"
net.ipv4.tcp.wmem="4096 87380 8388608"
net.ipv4.tcp_max_syn_backlog=8192
防火牆安全:
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人寫做
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn併發數每秒1次,能夠根據本身的須要修改
防止各類端口掃描
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水***(Ping of Death)
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
備註說明:(相對比較激進的網絡參數調整)
# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000
----------------------------------------------------------------------------------------------------------------------------
LINUX安全設置步驟:
刪除全部那些不能在你係統上使用的默認用戶和組帳戶:  lp,sync,shutdown,halt, news, uucp, operator, games, gopher
ROOT自動從shell註銷
編輯你的配置文件」vi /etc/profile」,在某個地方加入以下行,
「HISTFILESIZE=」
TMOUT=3600
咱們爲變量」TMOUT=」輸入的這個值使用秒錶示的、表明一個小時(60*60=3600秒)。若是你將此行加入你的 「/etc/profile」 文件,那麼在一小時的非活動狀態以後將要系統裏的全部用戶自動註銷。你能夠在用戶私人的」.bashrc」文件裏面
設置這個變量,能夠在一個肯定的時間之後自動註銷他們。
禁止而且卸載全部沒有用的服務
你必須禁止別切卸載全部你不用的的服務,那樣的話,你就能少擔憂一些。看看你的」/etc/inetd.conf」文件, 用註釋的方法禁用(在一行的開始加個#),而後給inetd進程發送一個SIGHUP命令去更新到當前的」inetd.conf」文件。這樣作:
第一步把」/etc/inetd.conf」更改許可權限成600,那樣的話,就只有root能夠讀和寫。
[Root@kapil /]# chmod 600 /etc/inetd.conf
第二步確保」/etc/inetd.conf」的全部者是root。
第三步編輯inetd.conf文件(vi /etc/inetd.conf),而且禁止一些服務,就像:ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth等等,除非你打算用它。關閉這些服務就下降一些風險。
第四步給你的inetd進程發送一個HUP信號[root@kapil /]# killall -HUP inetd
第五步設置」/etc/inetd.conf」文件爲不可更改,使用 chattr 命令,這樣的話,沒人能修改那個文件。*簡單的設置文件爲不可更改,執行以下命令:
[root@kapil /]# chattr +i /etc/inetd.conf
這將防止對」inetd.conf」文件的任何更改(意外的更改或者其餘更改)。只有超級用戶root能設置或者清除這個文件屬性。修改inetd.conf  *簡單的取

消不可更改的設置,執行以下命令:
[root@kapil /]# chattr -i /etc/inetd.conf
免疫」/etc/services」文件
你必須免疫 「/etc/services」 文件,防止未經受權的刪除、增長服務。
免疫 「/etc/services」 文件,使用命令:
[root@kapil /]# chattr +i /etc/services
禁止Control-Alt-Deletc鍵盤關機命令
在你的」/etc/inittab」文件裏面註釋掉以下的行(用一個」#」)。
這樣作,編輯inittab文件(vi /etc/inittab),更換:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
讀入:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
如今,按照以下提示輸入,讓更改生效:
[root@kapil /]# /sbin/init q
爲腳本文件整理」/etc/rc.d/init.d」下的權限
整理腳本文件的許可權限,可靠的開始和結束全部你須要在引導時運行的常態進程,這樣作:
[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*
這意味着只有root能夠被容許讀,寫,和執行目錄裏面的腳本文件。
隱藏你的系統信息
默認狀態下,當你登陸到linux機器時,他告訴你Linux分佈商的名字,版本,核心版本和服務器名字。這對一個駭客來講從你的服務器獲得這些信息足夠了以必須馬上用一個」Login:」提示符提示用戶。
第一步
這樣作,編輯」/etc/rc.d/rc.local」文件,放置」#」在以下行的前面。
# This will overwrite /etc/issue at every boot.  So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo 「」 >; /etc/issue
#echo 「$R」 >;>; /etc/issue
#echo 「Kernel $(uname -r) on $a $(uname -m)」 >;>; /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >;>; /etc/issue
第二步
而後,刪除以下文件:在」/etc/」目錄下的」issue.net」 和 「issue」:
[root@kapil /]# rm -f /etc/issue
[root@kapil /]# rm -f /etc/issue.net
禁止未用的 SUID/SGID 程序
一個常規用戶若是設置爲SUID root,將可以做爲root運行程序。一個系統管理員必須最小化使用這些 SUID/GUID程序, 並且禁止那些不須要的程序。
第1步
從root擁有的程序裏發現全部有`s’ 位的程序,用此命令:
[root@kapil]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;
* 在被選中的程序上禁止suid 位,鍵入以下命令:
[root@kapil /]# chmod a-s [program]
關閉ipv6
vi /etc/modprobe.conf,在文件中添加如下兩行
alias net-pf-10 off
alias ipv6 off

shell

相關文章
相關標籤/搜索