歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux系統基礎優化

1.Linux系統基礎優化 一、關閉SELinux功能   Selinux是什麼? 安全工具,控制太嚴格,生產環境不用它,使用其他安全手段。   簡介:    SELinux帶給Linux的主要價值是:提供了一個靈活的,可配置的MAC機制。   Security-Enhanced Linux (SELinux)由以下兩部分組成:   1) Kernel SELinux模塊(/kernel/security/selinux)   2) 用戶態工具   SELinux是一個安全體系結構,它通過LSM(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社區的聯合項目。   SELinux提供了一種靈活的強制訪問控制(MAC)系統,且內嵌於Linux Kernel中。SELinux定義了系統中每個【用戶】、【進程】、【應用】和【文件】的訪問和轉變的權限,然後它使用一個安全策略來控制這些實體(用戶、進程、應用和文件)之間的交互,安全策略指定如何嚴格或寬松地進行檢查。   SELinux對系統用戶(system users)是透明的,只有系統管理員需要考慮在他的服務器中如何制定嚴格的策略。策略可以根據需要是嚴格的或寬松的。   關閉SElinux方式: 1)         通過vi /etc/selinux/config 進入配置文件進入修改 2)         通過sed 命令操作:   實現命令:sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 輸出: [root@oldboy ~]# cp /etc/selinux/config  /etc/selinux/config.ori  操作前的備份 [root@oldboy ~]# sed -i  's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config  直接修改源文件 [root@oldboy ~]# grep SELINUX=disabled /etc/selinux/config                 SELINUX=disabled  查看修改後的效果   查看對比修改後的文件: 實現命令:(vimdiff)diff /etc/selinux/config.ori /etc/selinux/config   輸出: 7c7 < SELINUX=enforcing --- > SELINUX=disabled SELINUX=disabled(永久生效)重啟系統 --------------- [root@bigboy ~]# getenforce(查看命令行是否關閉selinux) Enforcing [root@bigboy ~]# setenforce (設置selinux) usage:  setenforce [ Enforcing | Permissive | 1 | 0 ] [root@bigboy ~]# setenforce 0 (命令行關閉selinux) [root@bigboy ~]# getenforce  Permissive(臨時生效)   二、運行級別   什麼是運行級別:   runlevel linux運行時的一種狀態標示,這個標示用數字表示。 運行級別的其中狀態: 0 halt,關機狀態 1 single  user 單用戶,找回root密碼 2 multiuser  without nfs 多用戶沒有NFS網絡文件系統 3 文本模式(Full multiuser mode)*******工作模式 4 unused 5 圖形。桌面、X11 6 reboot  重啟   如何查看linux運行級級別:   實現命令:runlevel   輸出: [root@oldboy ~]# runlevel N(前一次) 3(當前)   更改運行級別:init   三、精簡開機系統啟動   為什麼要設置開機自啟動?   1、節省開機時間、加快啟動速度   2、節省資源開銷   3、減少安全隱患   需要保留的開機自啟動:   sshd:遠程連接linux服務器   rsyslog:是操作系統提供的一種機制,系統的守護程序通常會使用rsylog將各種信息系統日志文件中   network:激活關閉各個網絡接口   crond:用於周期性地執行系統及用戶配置的任務計劃(周期性的處理一些重復問題的計劃任務服務)   Sysstat:是一個軟件包,監測系統性能及效率的一組工具   Sysstat軟件包集成的主要工具為:   iostat工具提供CPU使用率及硬盤吞吐效率的數據   mpstat工具提供與單個或多個處理器相關的數據   sar工具負責收集、報告並存儲系統活躍的信息   如何實現?   第一種方法:通過setup來修改   第二種方法:通過ntsysv來修改   第三種方法:通過chkconfig來實現 a. [root@bigboy ~]# chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|network|rsyslog|crond|sysstat"|awk '{print "chkconfig " $1 " off"}'|bash [root@bigboy ~]# chkconfig --list|grep 3:on crond           0:off   1:off   2:on    3:on    4:on    5:on       6:off network         0:off   1:off   2:on    3:on    4:on    5:on       6:off rsyslog         0:off   1:off   2:on    3:on    4:on    5:on       6:off sshd            0:off   1:off   2:on    3:on    4:on    5:on       6:off sysstat         0:off   1:on    2:on    3:on    4:on    5:on       6:off   b. [root@bigboy ~]# chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|network|rsyslog|crond|sysstat"|sed -r 's#(.*)#chkconfig \1 off#g'|bash [root@bigboy ~]# chkconfig --list|grep 3:on crond           0:off   1:off   2:on    3:on    4:on    5:on       6:off network         0:off   1:off   2:on    3:on    4:on    5:on       6:off rsyslog         0:off   1:off   2:on    3:on    4:on    5:on       6:off sshd            0:off   1:off   2:on    3:on    4:on    5:on       6:off sysstat         0:off   1:on    2:on    3:on    4:on    5:on       6:off   c. [root@bigboy ~]# for name in `chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|network|rsyslog|crond|sysstat"`;do chkconfig $name off;done  [root@bigboy ~]# chkconfig --list|grep 3:on                           crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off network         0:off   1:off   2:on    3:on    4:on    5:on    6:off rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off   四.關閉iptables防火牆   查看防火牆:iptables -L -n 關閉防火牆: 實現命令:/etc/init.d/iptables stop 輸出:  [root@oldboy ~]# /etc/init.d/iptables stop iptables:將鏈設置為政策 ACCEPT:filter                    [確定] iptables:清除防火牆規則:                                 [確定] iptables:正在卸載模塊:                                   [確定] 查看防火牆狀態: 實現命令:/etc/init.d/iptables status 輸出: root@bigboy ~]# /etc/init.d/iptables status  [root@bigboy ~]# /etc/init.d/iptables status Table: filter Chain INPUT (policy ACCEPT) num  target     prot opt source               destination           Chain FORWARD (policy ACCEPT) num  target     prot opt source               destination           Chain OUTPUT (policy ACCEPT) num  target     prot opt source               destination     五.linux運維思想最小化原則   原則:多一事不如少一事!   1、安裝linux系統最小化,選包最小化,yum安裝軟件包也要最小化,無用的包不裝。   2、開機自啟動最小化   3、操作命令最小化   例如:用rm -f test.txt而不用rm -fr test.txt   4、登錄linux用戶最小化。   平時沒有需求不用root登錄,用普通用戶登錄即可   5、普通用戶授權權限最小化,   即只給必須的管理系統的命令。   6、linux系統文件及目錄的權限設置最小化,禁止隨意創建、更改、刪除。理論上限制掉。   六. 更改SSH服務端遠程登錄的配置(配置文件:/etc/ssh/sshd_config)   更改方法:   方法一:通過vi進入配置文件進行修改 vi /etc/ssh/sshd_config ####by oldboy#2011-11-24## Port 52113 PermitRootLogin no PermitEmptyPasswords no UseDNS no GSSAPIAuthentication no ####by oldboy#2011-11-24##   方法二:通過sed命令實現修改 sed -ir '13 i Port 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no'  sshd_config   重啟生效:/etc/init.d/sshd reload【平滑重啟不影響用戶】(restart)  Linux下SSH遠程連接服務慢的解決方案請見老男孩的博客: http://oldboy.blog.51cto.com/2561410/1300964   八、利用sudo管理文件描述   在visudo進入文件增加普通用戶的命令路徑使得普通用戶環境下利用sudo進行命令操作。 Allow root torun any commands anywhere root     ALL=(ALL)       ALL oldboy   ALL=           (ALL)   NOPASSWD: ALL  /bin/ls 用戶     用戶管理的機器  臨時擁有的用戶角色      /bin/ls 注意:內置命令無法用到sudo。   九.linux字符顯示設置:   字符集是一套文字符號及其編碼:GBK 、UTF-8(企業廣泛使用) 調整服務器端字符集:調整字符集路徑(/etc/sysconfig/i18n)記住 [root@bigboy/]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8"       英文字符 SYSFONT="latarcyrheb-sun16" [root@bigboy/]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" [root@bigboy/]#cp/etc/sysconfig/i18n /etc/sysconfig/i18n.oldboy.20151003    修改文件前的備份 [root@bigboy/]#sed-i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g'/etc/sysconfig/i18n    利用sed替換字符文件修改為中文字符 [root@bigboy/]# cat /etc/sysconfig/i18n LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" [root@bigboy/]# echo $LANG   查看修改字符後的效果 en_US.UTF-8 [root@bigboy/]# source /etc/sysconfig/i18n 使得修改後的文件生效 [root@bigboy/]# echo $LANG      zh_CN.UTF-8   十. 設置linux服務器時間同步   互聯網同步時間 [root@bigboy/]/usr/sbin/ntpdate time.nist.govov   互聯網同步時間 [root@bigboy/]# date -s "2015/10/3 9:34" 2015年 10月 03日星期六 09:34:00 CST [root@bigboy/]# ntpdate time.nist.gov   set the date and time viaNTP  3 Oct 09:35:21 ntpdate[28135]: adjust timeserver 132.163.4.103 offset 0.286494 sec [root@bigboy/]# date   date 查看時間  -s 修改時間 2015年 10月 03日星期六 09:48:46 CST  [root@bigboy /]# hwclock   query and set the hardwareclock 2015年10月03日星期六 08時59分12秒  -0.737654 seconds crond :定時任務 每5分鐘同步一次 [root@bigboy/]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov /dev/null2>&1" >>/var/spool/cron/root  [root@bigboy /]# crontab –l  定時生效 */5 * * * */usr/sbin/ntpdate time.nist.gov /dev/null 2>&1   十一、設置超時   臨時生效 [root@bigboy /]# export  TMOUT=300設置超時時間300S [root@bigboy/]# echo "export TMOUT=300" >>/etc/profile [root@bigboy/]# source /etc/profile  使得設置生效 [root@bigboy/]# echo $TMOUT 300   十二.history歷史記錄數   臨時生效 [root@bigboy /]# export  HISTSIZE=5  定義歷史記錄數5條 [root@bigboy /]# history  728  cat ~/.bash_history  729  HISTFILESIZE=5  730  cat ~/.bash_history  731  HISTSIZE=5  732  history [root@bigboy /]#export HISTFILESIZE=5 定義歷史記錄文件數5條 [root@bigboy /]# cat ~/.bash_history visudo su - oldboy su oldboy netstat -an|grep EST su oldboy   永久生效 [root@oldboy ~]# echo 'export TMOUT=300'>>/etc/profile [root@oldboy ~]# echo 'exportHISTSIZE=5' >>/etc/profile [root@oldboy ~]# echo 'exportHISTFILESIZE=5' >>/etc/profile [root@oldboy ~]# tail -3 /etc/profile export TMOUT=300 export HISTSIZE=5 export HISTFILESIZE=5 [root@oldboy ~]# source /etc/profile  使得文件生效 [root@oldboy ~]# echo $TMOUT    300 [root@oldboy ~]# echo $HISTSIZE 5   十三.調整linux系統文件描述符數量   文件描述符是由無符號整數表示的句柄,進程使用它來標示打開文件。   文件描述符概念:   1、表示形式為整數數字(0-65535)   2、會占用文件描述符(標示打開文件)   查看默認文件描述符 ulimit-n   3、調整文件描述符 [root@bigboy ~]# ulimit -SHn 65535  設置文件描述符數量 [root@bigboy ~]# ulimit -n 65535(32768)  [root@bigboy ~]#  echo '*       -    nofile      65535' >>/etc/security/limits.conf    將修改的描述符數量寫入文件 [root@bigboy ~]# tail -1/etc/security/limits.conf                   *        -    nofile     65535   十四.調整內核參數文件 (/etc/sysctl.conf)   vim/etc/sysctl.conf   linux內核優化參數: -------------------------------------------------------------------- net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000    65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 #以下參數是對iptables防火牆的優化,防火牆不開會提示,可以忽略不理。 net.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_max =25000000 net.netfilter.nf_conntrack_tcp_timeout_established= 180 net.netfilter.nf_conntrack_tcp_timeout_time_wait= 120 net.netfilter.nf_conntrack_tcp_timeout_close_wait= 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait= 120 ----------------------------------------------------------------------   網絡狀態說明及優化命令和優化細節參考資料請看: http://yangrong.blog.51cto.com/6945369/1321594老男孩教育的優秀學生博文 http://oldboy.blog.51cto.com/2561410/1336488 sysctl -p 使得加載的參數生效   十五.隱藏linux版本號:   [root@oldboy ~]# cat /etc/issue CentOS release 6.7 (Final) Kernel \r on an \m [root@oldboy ~]# cat /etc/issue.net CentOS release 6.7 (Final) Kernel \r on an \m [root@oldboy ~]# >/etc/issue [root@oldboy ~]# >/etc/issue.net [root@oldboy ~]# cat /etc/issue   十六.鎖定系統文件   相關的系統文件:/etc/passwd/etc/shadow /etc/group /etc/gshadow  /etc/inittab  [root@oldboy~]# chattr +i /etc/passwd /etc/shadow /etc/group  /etc/gshadow /etc/inittab   +i鎖定系統文件 [root@oldboy ~]# useradd dddd useradd: cannot open /etc/passwd [root@oldboy ~]# rm -f /etc/passwd Do not use rm command. -f /etc/passwd [root@oldboy ~]# \rm -f /etc/passwd rm: 無法刪除"/etc/passwd": 不允許的操作 [root@oldboy ~]# chattr -i /etc/passwd/etc/shadow /etc/group  /etc/gshadow/etc/inittab  -i解除系統文件 [root@oldboy ~]# useradd dddd      [root@oldboy ~]# chattr +i /etc/passwd/etc/shadow /etc/group  /etc/gshadow/etc/inittab [root@oldboy ~]# lsattr /etc/passwd  查看系統文件屬性 ----i--------e- /etc/passwd [root@oldboy ~]# chattr -i /etc/passwd/etc/shadow /etc/group  /etc/gshadow/etc/inittab [root@oldboy ~]# lsattr /etc/passwd -------------e- /etc/passwd   十七.禁止linux系統被ping   內核中修改禁止ping,缺點是禁止自己ping echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all  [root@www ~]# echo"net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf [root@www ~]# tail -1 /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 [root@www ~]# sysctl -p   生效: [root@www ~]# echo"net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf [root@www ~]# tail -1 /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 [root@www ~]# sysctl -p   還原禁ping: echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all 十八.定時清理郵件服務臨時目錄垃圾文件   centos5系列的系統默認安裝Sen時dmail服務,因此郵件臨時存放地點的路徑/var/spool/clientmqueue/.   centos6默認情況下沒有安轉Sendmail服務,而是改裝了Posfix服務,因此郵件存放地點的路徑為:/var/spool/postfit/maildrop/ 以上兩個目錄很容易被垃圾文件填滿導致系統的inode數量不夠用,從而導致無地方存放文件   手動清理的方法: find /var/spool/clientmqueue/ -typef|xargs rm -f適合centOS5的sendmail服務 find /var/spool/postfix/maildrop/ -typef|xargs rm -f適合Centos6的postfix服務 定時清理的方法為:將上述命令寫成腳本,然後做定時任務,每天晚上0點執行一次(定時任務再說)     小結:如何優化linux:   1、關閉SElinux 2、關閉防火牆,設定運行級別為3. 3、精簡開機自啟動服務 4、SSH安全控制(提前建立普通用戶) 5、sudo 管理用戶授權 6、調整文件描述符 7、更改合適的字符集 8、鎖定關鍵系統文件 9、禁止顯示內核版本及系統版本信息 10、設置會話的超時時間及歷史記錄數 11、禁止PING 12、優化LINUX內核參數 13、特定漏洞yum/rpm升級 14、清楚多余的系統虛擬賬號 15、服務器時間同步 16、打補丁下載軟件調整為國內的下載地址(調整yum源) 17、定時清理郵件服務臨時目錄垃圾文件 18、為grub菜單加密碼
Copyright © Linux教程網 All Rights Reserved