Ssh配置優化
修改前需要備份/etc/ssh/sshd_config,如/etc/ssh/sshd_config.old,主要優化以下參數:
端口12011
PermitRootLogin登錄號
使用號碼
#防止ssh客戶端超時#
ClientAliveInterval 30
ClientAliveCountMax 99
GSSAuthentication編號
主要目的是更改ssh遠程端口,禁用root遠程登錄(本地root登錄仍然是可能的),禁用dns,防止ssh超時,解決ssh速度慢的問題,當然,啟用密鑰登錄,這是基於公司的要求。
註意:修改後ssh需要重啟才能生效,iptables需要釋放最新的ssh端口。
Iptables優化
原則:用的放,不用的禁。
我舉個簡單的例子:像mysql這樣由3306控制的敏感服務默認禁止遠程訪問。確需釋放自己指定的IP連接或通過vpn撥號進行跳板連接,不能直接放在公網上;如果公司有自己的公網IP或固定IP,最好只允許自己的公網IP連接ssh或指定服務端口。
用戶權限和系統安全優化
非根用戶添加和sudo權限控制
用戶配置文件鎖定
服務控制
默認情況下,所有不相關的服務被禁止運行,chkconfig xxx關閉,只有有用的服務被保留。如果這是由雲計算供應商提供的,則通常會進行優化。如果是自己安裝的虛擬機或托管的機器,則需要進行優化。默認情況下,只保留必要的服務,如network、sshd、iptables、crond和rsyslog,壹些不相關的服務可以關閉。
核參數優化
進程級文件和系統級文件句柄號的參數優化
默認情況下,ulinit -n會看到1024。如果系統文件銷售量很大,它會遇到各種錯誤,例如:
本地主機內核:VFS:達到file-maxlimit 65535或打開的文件太多等。,即打開的文件句柄數量已超過系統限制,需要優化。
我們針對該參數的流程級優化文件如下:
vim /etc/security/limits.conf
#文件結尾
*軟nofile 65535
*硬文件65535
*軟nproc 65535
*硬nproc 65535
好的,退出當前終端後再次登錄,可以看到ULMIT-N已更改為65535。此外,需要註意的是,過程級參數優化還需要修改文件:
/etc/security/limits . d/90-nproc . conf這將影響參數。可以通過cat /proc/pid/limits查看進程的限制。默認情況下,該文件參數推薦設置:
【root @ 21 yunwei 9001】# cat/etc/security/limits . d/90-nproc . conf
* ?軟nproc 65535
根?軟nproc無限制
系統級文件句柄優化
修改/etc/sysctl.conf並添加以下參數:
fs.file-max=65535
內核參數優化(這非常重要)。具體優化文件為/etc/sysctl.conf,優化參數添加在末尾:
net . IP v4 . neigh . default . GC _ stale _ time = 120
net.ipv4.conf.all.rp_filter=0
net . IP v4 . conf . default . RP _ filter = 0
net . IP v4 . conf . default . ARP _ announce = 2
net . IP v4 . conf . all . ARP _ announce = 2
net.core.netdev_max_backlog =?32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net . core . rmem _ max = 16777216
net . core . wmem _ max = 16777216
net . IP v4 . conf . lo . ARP _ announce = 2
net.ipv4.tcp_synack_retries = 2?
#參數的值決定了內核放棄連接之前發送的SYN+ACK數據包的數量。
net . IP v4 . TCP _ syn _ retries = 1?
#表示內核放棄建立連接之前發送的SYN數據包的數量。
net . IP v4 . TCP _ max _ syn _ backlog = 262144
#該參數表示TCP三次握手建立階段接受SYN請求隊列的最大長度,默認為1024。將其設置得更大可以使Linux在Nginx太忙而無法接受新連接時不會丟失客戶端發起的鏈接請求。
設置完成後,執行命令sysctl -p使新配置的內核參數生效。系統優化的內核對於系統本身的安全性和高並發性非常有效(可以解決大量TIME_WAIT、系統文件句柄數量超過等等導致的無法訪問使用的問題)。
net . IP v4 . TCP _ timestamp = 1?#開啟時間戳,配合tcp復用。如果局域網中的其他機器由於時間戳不同而無法連接到服務器,則可能是由該參數引起的。註意:阿裏的slb會清理tcp_timestamps。
網。ipv4.tcp _ tw _ recycle = 1 #該參數用於設置和啟用timewait快速回收。
網。ipv4.tcp _ max _ tw _ buckets = 6000 #參數設置為1,這意味著允許TIME_WAIT狀態的套接字重新用於新的tcp鏈接。該參數的默認值是180000,過多的TIME_WAIT套接字會降低Web服務器的速度。
net . IP v4 . TCP _ mem = 94500000 915000000 927000000
net . IP v4 . TCP _ FIN _ time out = 1 #當服務器主動關閉鏈接時,該選項確定套接字保持FIN-WAIT-2狀態的時間。默認值為60秒。
net . IP v4 . tcp _ keepalive _ time = 600 #啟動keepalive時,TCP發送keepalive消息的頻率;默認值為2小時,將其設置為10分鐘,這樣可以更快地清理無效鏈接。
網。IP v4 . IP _ local _ port _ range = 1024 65000 #定義了UDP和TCP鏈接的本地端口的取值範圍。
fs.file-max=65535?#表示可以打開的句子句柄的最大數量;
設置完成後,執行命令sysctl -p使新配置的內核參數生效。這個內核對於系統本身的安全性和高並發性非常有效(可以解決大量TIME_WAIT、系統文件句柄數量超過等等導致的無法訪問使用的問題)。