CentOS優化

 

CentOS系統的優化

   優化以前,首先查看版本信息node

# cat /etc/redhat-release  
CentOS release 6.7 (Final)                    # 系統版本信息
# uname –r
2.6.32-573.el6.x86_64                           # 內核版本信息
# uname -m
x86_64                                                  #表示爲64位系統
# uname –a                                          # 顯示所有信息
Linux hostname2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux                        
Linux基礎優化與安全重點小結
 1  不用root登陸管理系統,而以普通用戶登陸經過sudo受權管理
 2  更改默認的遠程鏈接SSH服務端口,禁止root用戶遠程鏈接,甚至要更改SSH服務只監聽內網IP 3  定時自動更新服務器時間,使其和互聯網同步 4  配置yum更新源,從國內更新源下載安裝軟件包 5  關閉SELinux及iptables 6  定時自動清理郵件臨時目錄垃圾文件,防止磁盤inodes數被小文件佔滿 7  調整文件描述符的數量,進程及文件的打開都會消耗文件描述符的數量 8 精簡併保留必要的開機啓動服務 9 Linux內核參數優化/etc/sysctl.config,執行sysetl –p生效 10 更改系統字符集, 爲「zh_CN.UTF-8」,使其支持中文,防止出現亂碼問題。 11 鎖定關鍵文件,如: passwd、/etc/shadow/、/etc/group/、/etc/gshadow、/etc/inittab,處理以上內容後把chattr、lsattr、更名爲root,轉移走,這樣就安全多了。 12 清空/etc/issue /etcissue.net,去除系統及內核版本登陸前的屏幕顯示 13 清除多餘的系統虛擬用戶帳號 14 爲grub引導菜單加密碼 15 禁止主機被ping 16 打補丁並升級有已知漏洞的軟件

 拓展linux

掌握Linux系統的7種運行級別vim

1 運行級別0:系統停機狀態,系統默認運行級別不能設爲0,不然不能正常啓動
2 運行級別1:單用戶工做狀態,root權限,用於系統維護,禁止遠程登錄 3 運行級別2:多用戶狀態(沒有NFS) 4 運行級別3:徹底的多用戶狀態(有NFS),登錄後進入控制檯命令行模式 5 運行級別4:系統未使用,保留 6 運行級別5:X11控制檯,登錄後進入圖形GUI模式 7 運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,不然不能正常啓動

 掌握Linux系統從開機到登陸以前的啓動流程。是由etc/inittab控制windows

1.    使用阿里雲鏡像作樣本源

默認國外的yum源比較慢,因此換成國內的。centos

1 #  cd /etc/yum.repos.d/
2 #  ls
3 CentOS-Base.repo       CentOS-Media.repo
4 CentOS-Debuginfo.repo  CentOS-Vault.repo
5 CentOS-fasttrack.repo
6 # cp CentOS-Base.repo CentOS-Base.repo.ori                    更改配置文件以前進行備份
7 # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo                         centos6系統
8 # echo "192.168.14.200 mirrors.aliyun.com" >>/etc/hosts    公網地址換成內網地址 
9 # yum -y install tree nmap sysstat lrzsz dos2unix telnet                                        安裝必要的軟件包(tree)

2.    關閉SELinux功能

1)  修改配置文件,使關閉SELinux永久生效:

l        第一種方法安全

1 # vim /etc/selinux/config
2 而後找到SELINUX=enforcing改爲SELINUX=disabled
3 ESC:wq結束

l        第二種方法bash

1 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2 sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config

2)  臨時關閉SELinux,可在命令行執行以下命令:

 1 [root@rootedu ~]# getenforce                  <--查看如今狀態
 2 
 3 Enforcing
 4 
 5 [root@rootedu ~]# setenforce 
 6 
 7 usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
 8 
 9 [root@rootedu ~]# setenforce 0          <-- 臨時將selinux調成下面的狀態
10 
11 [root@rootedu ~]# getenforce 
12 
13 Permissive

命令說明:setenforce:用於命令行管理SELinux的級別,服務器

                  getenforce:查看SELinux當前級別cookie

提示:修改配置SELinux後,要想其生效,必需要重啓系統。再生產場景中不能隨意重啓系統。  網絡

3)    關閉iptables防火牆

l        臨時關閉,關機以後會從新啓動

1 /etc/init.d/iptables status                <-- 查看看是否開啓
2 /etc/init.d/iptables stop                   <-- 關閉防火牆

l        關閉開機自啓動的防火牆

第一種方法

1 [root@rootedu ~]# chkconfig --list|grep ipt        <-- 查看狀態
2 iptables        0:off   1:off   2:on    3:on    4:on    5:on     6:off
3 [root@rootedu ~]# chkconfig iptables off          <--下一次系統開啓不運行防火牆
4 [root@rootedu ~]# chkconfig --list|grep ipt
5 iptables        0:off   1:off   2:off   3:off   4:off   5:off    6:off

第二種方法  

1        /etc/init.d/iptables stop            <--當前關閉防火牆
2        chkconfig iptables off               <--關閉開機自啓動命令 

 

4)    設置運行級別爲3(文本模式)

1 設定運行級別(runlevel)爲3(通常安裝系統後默認爲3)即表示使用文本命令模式管理linux
2 
3 grep 3:initdefault /etc/inittab      <-- 檢查命令
4 runlevel                                      <--另外一種簡單方法
5 init 3                                           <--切換運行級別

 

5)    精簡開機系統啓動

1)系統開機必需要開啓的服務

l        sshd

遠程鏈接linux服務器時須要用到這個服務程序,因此必須開啓

l        rsyslog

日誌相關軟件,

l        network

網絡服務

l        crond

會週期的執行系統和用戶配置的任務計劃。

l        sysstat

sysstat是一個軟件包,包含檢測系統性能及效率的一組工具.\

 

2)設置開啓自啓動服務的方法

手動關閉用setup

chkconfig --list|grep 3:on   <--查看開機自啓動的項目
第一種快速處理方法:先全關閉,再開啓須要保留的。
操做思路:先將3級別文本模式下默認開啓的服務都關閉,而後開啓須要開啓的服務。
操做命令以下:
1 LANG=en
2 for root in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $root off;done 
3 for root in crond network rsyslog sshd sysstat ;do chkconfig --level 3 $root on;done
4 chkconfig --list|grep 3:on
第二種快速處理方法
1 for root in `chkconfig --list|grep "3:on"|awk '{print $1}'|grep -vE "crond|network|sshd|rsyslog|sysstat"`;do chkconfig $root off;done
第三種快速處理方法(逼格最高)
chkconfig --list|grep 3:on|grep -vE "crond|sshd|network|rsyslog|sysstat " |awk '{print "chkconfig " $1 " off"}'|bash

6)    添加普通用戶帳號

linux/unix是一個多用戶,多任務的操做系統

超級管理員(root):擁有最高權限

普通用戶

l     一條命令設置密碼

echo '123456'|passwd --stdin root       <--root用戶名,密碼爲123456

|    使用命令添加一個普通用戶,命令以下: 

1 useradd  root                           <--添加用戶
2 passwd  root                            <--設置用戶密碼

l    嘗試切換用戶角色,命令以下:

1 [root@hostname ~]# su – root                  <--由root管理員,切換到普通用戶root
2 [root@hostname ~]$ whoami            <--查看當前用戶
3 root                                 
4 [root@hostname ~]$ su -                   <--切到root用戶
5 Password:

l        linux命令提示符由PS1環境變量

查看環境變量:    echo $PS1  

7)    利用sudo控制用戶的使用權限

爲了方便管理,能夠給用戶受權,過程:輸入vi sudoers找到98行,在下面放入以下內容:

oldboy   ALL=(ALL)   NOPASSWD: ALL      <--all表示徹底的系統權限,NOPASSWD表示提示權限命令時不須要密碼

配置完成後要進行檢查,命令以下:

[oldboy@hostname ~]# grep root /etc/sudoers
oldboy    ALL=(ALL)   NOPASSWD: ALL

此時再以oldboy用戶登陸系統時,就能夠經過執行sudo ls –l  /root (sudo後面跟正常命令)的命令以root用戶的權限管理系統了,以下:

[oldboy@hostname ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[oldboy@hostname ~]$ sudo ls /root/
HostKeyDB.txt       test.txt      12345                         install.log         woaini

8)    Linux系統安全最小化原則說明

a)         安裝Linux系統最小化,即選包最小化。

b)        開機自啓動服務最小化,即不用的服務不開啓。

c)         操做命令最小化。

d)        登陸Linux用戶最小化。平時沒有特殊須要就用普通用戶登陸便可。

e)         普通用戶受權權限最小化。只給用戶必要的管理系統的命令。

f)         Linux系統文件及目錄的權限設置最小化。禁止隨意建立,更改,刪除文件。

g)        程序服務運行最小化,即程序服務運行儘可能不用root身份進行。

9)    更改SSH服務端遠程登陸的配置

windows服務器的默認遠程管理端口是3389,管理員用戶是administrator,普通用戶guest。Linux管理用戶是root,遠程鏈接默認端口port22。

1 [root@hostname ~]#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori <--備份配置文件,簡單寫法cp /etc/ssh/sshd_config{,.ori}
2 [root@hostname ~]# vim /etc/ssh/sshd_config
3
進入17行加入:
4
####by root#2011-11-24##
5
rt 52113
6
PermitRootLogin no
7
PermitEmptyPasswords no
8
UseDNS no
9
GSSAPIAuthentication no
10 ####by root#2011-11-24##
11 /etc/init.d/sshd reload     <--reload爲平滑重啓,不會影響正在SSH鏈接的其餘用戶,restart直接斷開生效

而後就連不上了,由於端口改了。

而後更改會話選項裏的SSH2裏的端口還有用戶名。就OK了

10)         Linux中文顯示設置

此選項爲優化可選項,即調整Linux系統的字符集設置。

簡單的說,字符集就是一套文字符號及其編碼。目前linux下經常使用的字符集有:

  GBK:定長雙字節

  UTF-8:非定常,1~4字節,普遍支持

臨時生效,命令:LANG=」zh_CN.UTF-8’

永久生效,能夠經過快捷的命令方式在/etc/sysconfig/i18n中添加以下內容,使其支持中文顯示:

 1 [root@hostname ~]# echo $LANG
 2 en_US.UTF-8
 3 [root@hostname ~]# cat /etc/sysconfig/i18n
 4 LANG="en_US.UTF-8"
 5 SYSFONT="latarcyrheb-sun16"
 6 [root@hostname ~]# cp /etc/sysconfig/i18n  /etc/sysconfig/i18n.ori
 7 [root@hostname ~]#echo ‘LANG=」zh_CN.UTF-8」’>/etc/sysconfig/i18n
 8 [root@hostname ~]#source /etc/sysconfig/i18n  <--使其生效
 9 [root@hostname ~]#echo $LANG
10 zh_CN.UTF-8

11)         設置linux服務器時間同步

 1 ntpdate time.nist.gov<--時間同步
 2 ntpdate ntp1.aliyun.com<--國內阿里雲時間同步服務器
 3 利用定時任務crond把上述命令每5分鐘自動執行一次,命令以下:
 4 
 5 echo '#time sync by root at 2010-2-1' >>/var/spool/cron/root
 6 echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
 7 crontab –l
 8 [root@rootedu ~]# crontab -l
 9 #time sync by root at 2010-2-1
10 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

12)  歷史記錄數及登陸超時環境

1.設置閒置帳號超時時間,命令以下,此處爲臨時生效

export TMOUT=10  <--設置鏈接會話的超時時間

2.設置Linux的命令行歷史記錄數, 命令以下,此處爲臨時生效

1    export HISTSIZE=5
2    export TMOUT=10               鏈接的超時時間控制變量。
3 
4    export HISTSIZE=5              命令行的歷史記錄數量變量。
5    export  HISTFILESIZE=10   歷史記錄文件的命令數量變量(~/.bash_history)。

13)  調整Linux系統描述符數量和最大進程數

系統描述符

先用ulimit –n查看有幾個描述符,規則是「軟(soft)」或「硬(hard)」

對於高併發的業務Linux服務器來講,默認的設置值是不夠的,須要調整

調整方法:

執行vim /etc/security/limits.conf再文件結尾加上以下一行(全局)
*               -       nofile          65535

或者直接執行下面的命令

1 echo '*               -       nofile          65535 ' >>/etc/security/limits.conf
2 tail -4 /etc/security/limits.conf              <--查看文件最後4行
3 [root@rootedu tmp]# ulimit –n            <--查看是否生效
4 65535

總結:

1 臨時生效  ulimit -SHn 65535
2 永久生效 echo '*               -       nofile          65535 ' >>/etc/security/limits.conf
3  或者:
4 cat /etc/security/limits.conf
5        *                               soft    nofile  65536
6        *                               hard    nofile  65536

最大線程數

ulimit -a

max user processes              (-u) #系統限制某用戶下最多能夠運行多少進程或線程

root 帳號下 ulimit -u 出現的max user processes 的值默認是 # cat /proc/sys/kernel/threads-max的值/2,即系統線程數的一半

普通帳號下 ulimit -u  出現的max user processes的值 默認是 /etc/security/limits.d/20-nproc.conf(centos6 是90-nproc.conf)   文件中的

1.在/etc/security/limits.conf文件裏添加以下內容:

* soft nproc 65535   # 打開進程數  
* hard nproc 65535   # 打開進程數
操做方法:
1 echo "* soft nproc 65535"  >> /etc/security/limits.conf
2 echo "* hard nproc 65535"  >> /etc/security/limits.conf

注意:修改這裏,普通用戶 max  user process值是不生效的,須要修改/etc/security/limits.d/20-nproc.conf文件中的值。或者90-nproc.conf

若是使用*號讓全局用戶生效是受文件/etc/security/limits.d/20-nproc.conf中nproc值大小制約的,而若是僅僅是針對某個用戶,那麼就不受該文件nproc值大小的影響。

2.修改 /etc/security/limits.d/20-nproc.conf

由於普通用戶受這個文件裏的值影響

修改成:

*          soft    nproc     65535

3.系統總限制

其實上面的 max user processes  65535 的值也只是表象,普通用戶最大進程數沒法達到65535 ,由於用戶的max  user processes的值,最後是受全局的kernel.pid_max的值限制。也就是說kernel.pid_max=1024  ,那麼你用戶的max user processes的值是127426 ,用戶能打開的最大進程數仍是1024。

查看全局的pid_max方法:
方法一:
cat /proc/sys/kernel/pid_max
方法二:
# sysctl kernel.pid_max
kernel.pid_max = 32768

修改這個值方法:

echo 65535 > /proc/sys/kernel/pid_max
因此以上都操做完成後,纔算是正確修改了max user processes 的值
上面只是臨時生效,重啓機器後會失效
永久生效方法:
在/etc/sysctl.conf中添加kernel.pid_max = 65535
1 # vim /etc/sysctl.conf
2 kernel.pid_max = 65535
3 或者:
4 echo "kernel.pid_max = 65535" >> /etc/sysctl.conf
而後重啓機器。

 

14)linux服務器內核參數優化

優化的方法

 1 cat>>/etc/sysctl.conf<<EOF
 2 net.ipv4.tcp_fin_timeout = 2
 3 net.ipv4.tcp_tw_reuse = 1
 4 net.ipv4.tcp_tw_recycle = 1
 5 net.ipv4.tcp_syncookies = 1
 6 net.ipv4.tcp_keepalive_time = 600
 7 net.ipv4.ip_local_port_range = 4000    65000
 8 net.ipv4.tcp_max_syn_backlog = 16384
 9 net.ipv4.tcp_max_tw_buckets = 36000
10 net.ipv4.route.gc_timeout = 100
11 net.ipv4.tcp_syn_retries = 1
12 net.ipv4.tcp_synack_retries = 1
13 net.core.somaxconn = 16384
14 net.core.netdev_max_backlog = 16384
15 net.ipv4.tcp_max_orphans = 16384
16 net.nf_conntrack_max = 25000000
17 net.netfilter.nf_conntrack_max = 25000000
18 net.netfilter.nf_conntrack_tcp_timeout_established = 180
19 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
20 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
21 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
22 EOF

而後用sysctl –p使其生效

而後vimdiff /etc/sysctl.conf /etc/sysctl.conf.ori      更改的文件與拷貝的文件對比

15)  隱藏Linux版本信息顯示

登陸後執行以下命令,顯示其實際存放內容

1 [root@rootedu ~]# cat /etc/issue            <--查看當前主機信息
2 CentOS release 6.7 (Final)
3 Kernel \r on an \m
4 [root@rootedu ~]# uname  -r
5 2.6.32-573.el6.x86_64
6 [root@rootedu ~]# uname  -m
7 x86_64

執行如下命令清除系統版本及內核信息(清空就好,不用刪除)

 >/etc/issue              <--清空
 >/etc/issue.net        <--清空
cat /etc/redhat-release(須要的狀況,能過內部其它文件仍是能夠查到)

16)  鎖定關鍵系統文件,防止提權被篡改(可選)

 要鎖定關鍵系統文件,必須對帳號密碼及啓動文件加鎖,防止被篡改。上鎖命令以下

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

提示:上鎖後,全部用戶都不能對文件進行修改

解鎖:chattr -i

17)  清除多餘的系統虛擬帳號(可選)

操做前要先根據公司系統提供的服務肯定那些帳號不須要使用,若是不肯定就不要操做了,通常狀況下,一個規範的系統提供的服務都比較少,所以,系統中默認的絕大多數虛擬用戶都是能夠刪除掉的(不直接刪除,註釋便可)。

18)  爲grub菜單加密碼(可選)

爲grup菜單加密碼的目的是防止他人修改grup作內核等啓動設置,以及用單用戶模式啓動破解root密碼等作操做。也能夠在安裝系統過程當中設定。 
流程: 
1)先用/sbin/grup-crypt產生一個MD5密碼串 
2)修改grup.conf文件 
3)重啓生效

能夠在安裝過程當中設定.

 

19)  禁止Linux系統被ping(可選)

此優化項從安全角度,禁止ping會增長系統安全,可是咱們本身也會經過ping來檢查服務器是否異常,因此這不是一個好方法,不建議使用。 
比較好一點的是經過iptabies設置讓特定的IP能夠ping.

禁止ping的命令以下:

1 echo 「net.ipv4.icmp_echo_ignore_all=1」 >> /etc/sysctl.conf    <--禁止ping
2 tail -1 / etc/sysctl.conf                                                                <--查看
3 sysctl -p                                                                                     <--生效
4 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all                   <--臨時ping不通
5 echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all                   <--臨時還原的方法

20)  升級具備典型漏洞的軟件版本

步驟 
1)查看相關軟件的版本號

[root@rootedy ~]# rpm -qa openssl
openssl-1.0.1e-42.el6_7.4.x86_64

2)執行升級已知漏洞的軟件版本到最新

 [root@rootedy ~]# yum install openssl -y 
Loaded plugins: fastestmirror, security
Setting up Install Process
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                      | 3.7 kB     00:00     
extras                                                    | 3.4 kB     00:00     
updates                                                 | 3.4 kB     00:00     
updates/primary_db                              | 5.2 MB     00:22     
Package openssl-1.0.1e-42.el6_7.4.x86_64 already installed and latest version
Nothing to do
相關文章
相關標籤/搜索