Linux運維學習筆記之四:安裝後的基本調優及安全設置(系統基礎優化)

一、更改遠程連接用戶和端口

ls -l /etc/ssh/sshd_config

cp /etc/ssh/sshd_config /etc/ssh/sshd_configbak

vi /etc/ssh/sshd_config

 :set nu  #vi的功能,顯示行號

    Port28888  #13行

    PermitRootLoginno #42行,禁止root用戶ssh遠程登錄

    PermitEmptyPasswordsno  #65行,禁止空密碼登錄

    GSSAPIAuthenticationno  #爲防止GSSAPI導致SSH連接變慢

    UseDNSno  #122行,禁止使用DNS

   

vimdiff /etc/ssh/sshd_config/etc/ssh/sshd_configbak  #對比修改的文件

/etc/init.d/sshd reload(或restart) #重新加載或重啓ssh

 

二、簡單優化Linux

1、關閉SELINUX

(1)查看配置文件

    cat/etc/selinux/config

    SELINUX=enforcing

       enforcing:激活

       permissive:打印警告,但沒激活

       disabled:關閉

(2)修改配置文件   

    vi/etc/selinux/config  

    SELINUX=disabled

   

    或者

   

    sed-i s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config

   

(3)檢查修改後的配置文件

    grep"disable" /etc/selinux/config

    SELINUX=disabled

   

(4)生效(重啓後才能生效)

    查看配置文件當前狀態

    getenforce

       Enforcing(原文件生效狀態)

       

    setenforce0 : 將 SELINUX改爲permissive狀態,相當於SeLinux不生效。

    getenforce

    permissive

   

    重啓:不重啓則SELINUX處於警告狀態,SELINUX不起作用,重啓則處於失效狀態。(生產系統不允許隨便重啓)

   

2、將系統啓動級別調成文本模式
(1)查看系統啓動級別

    cat/etc/inittab

    或

    runlevel

   

(2)修改

    vi/etc/inittab

    d:3:initdefault:   

    或者

    sed-i s#d:5:initdefault:#d:3:initdefault:#g /etc/inittab

   

(3)切換啓動級別

    init3  : 切換文本命令行模式

    init5  : 切換到x11模式

    init0  : 關機

    init6  : 重啓

   

3、精簡開機系統啓動服務
(1)只啓動需要的服務

目前只需啓動crond(計劃任務)、network、ssh、rsyslog(系統日誌)等4個服務

(2)查看隨機啓動服務

chkconfig --list

chkconfig --list | grep "3:on"

chkconfig --level 35 service_name on:在級別3和5上隨機啓動指定服務

ntsysv(等同於setup)

setup-system service

(3)腳本一鍵完成處理: onlythirdrunlevel.sh

    LANG=en

    for servername in `chkconfig --list | grep"3:on" | awk '{print $1}' | grep -vE"crond|network|ssh|rsyslog"`;do chkconfig $servername off;done

   

4、 關閉iptables防火牆
(1)臨時關閉:/etc/init.d/iptables stop

      service iptables stop

(2)永久關閉:chkconfig iptables off

      chkconfig ip6tables off(redhat6上 iptables關閉後 ip6tables會起來,所以一併關掉。)

(3)查看防火牆關閉狀態

    serviceiptables status

5、修改主機名
(1)首先臨時修改主機名

hostname myLinux

(2)修改/etc/sysconfig/network中的hostname

vi /etc/sysconfig/network

cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME= myLinux

(3)修改/etc/hosts文件

vi /etc/hosts

cat /etc/hosts

127.0.0.1   localhostlocalhost.localdomain localhost4 localhost4.localdomain4

::1         localhostlocalhost.localdomain localhost6 localhost6.localdomain6

192.168.1.18 myLinux

6、修改RedHat的yum源

RHEL的YUM源需要註冊用戶才能更新使用,由於CentOS和RHEL基本沒有區別,並且CentOS已經被REHL收購。所以將RHEL的YUM源替換爲CentOS即可。

(1)清除原有RHEL的YUM及相關軟件包。

rpm -qa | grep yum | xargs rpm -e --nodeps

rpm -qa |grep python-urlgrabber|xargs rpm -e --nodeps

(2)下載centos6的相關軟件包。

wgethttp://mirrors.163.com/centos/6/os/i386/Packages/yum-3.2.29-81.el6.centos.noarch.rpm

wgethttp://mirrors.163.com/centos/6/os/i386/Packages/yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm

wgethttp://mirrors.163.com/centos/6/os/i386/Packages/yum-metadata-parser-1.1.2-16.el6.i686.rpm

wget http://mirrors.163.com/centos/6/os/i386/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm

wgethttp://mirrors.163.com/centos/6/os/i386/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm

(3)安裝yum 軟件包

rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm

rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm

rpm -ivh yum-metadata-parser-1.1.2-16.el6.i686.rpm

#下面兩個一起安裝先後順序不要亂(中間50%正常)

rpm -ivhyum-3.2.29-81.el6.centos.noarch.rpmyum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm

如果按照遇到問題:發現錯誤,python-urlgrabber版本必須大於等於3.9.1-10

 # rpm -ivh yum-3.2.29-73.el6.centos.noarch.rpmyum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm

warning: yum-3.2.29-73.el6.centos.noarch.rpm: Header V3 RSA/SHA1Signature, key ID c105b9de: NOKEY

error: Failed dependencies:

    python-urlgrabber >=3.9.1-10 is needed by yum-3.2.29-73.el6.centos.noarch

查看系統的python信息

# rpm -qa|grep python

 

發現python-urlgrabber-3.9.1-9.el6.noarch 版本低於3.9.1-10

卸載:python-urlgrabber-3.9.1-9.el6.noarch

 rpm -epython-urlgrabber-3.9.1-9.el6.noarch

安裝:rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm

(4)更改yum源 #我們使用網易的CentOS鏡像源

a、清空yum倉庫

cd /etc/yum.repos.d/

rm -rf *

b、設置源

wget http://mirrors.163.com/.help/CentOS6-base-163.repo

vi CentOS6-base-163.repo

編輯文件,把文件裏面所有的$releasever全部替換爲你得版本號,即6.4 最後保存!或者直接把下面的內存拷貝到CentOS6-base-163.repo文件中即可(已經修改好)

vim替換命令

:%s/$releasever/6/g

退出保存

 

c、清理yum緩存

#yum clean all

b、將服務器軟件包信息緩存至本地,提高搜索安裝效率

#yum makecache

二、用戶角色切換

1、su- root:切換到root用戶
2、sudo:讓普通用戶可以擁有指定的root權限功能,需root用戶提前授權

   sudo su - : 切換到root

   sudo -l  : 查看當前用戶擁有的所有sudo權限

  

   visudo : 進入sudo配置信息,相當於vi/etc/sudoers,但不建議用此方法,visudo檢查語法,vi /etc/sudoers不檢查語法

   格式:

   用戶     機器      命令

   user     MACHINE=      COMMAND1,COMMAND2.....

   %groupname  MACHINE=      COMMAND1,COMMAND2.....  # 組名前必須加%

  

  

   91gg : vi編輯器功能,快速定位到91行

   yy   : vi編輯器功能,拷貝當前行

   p    : vi編輯器功能,粘貼

   修改:

     root   ALL=(ALL)       ALL

     oldboy  ALL=(ALL)       /usr/sbin/useradd

   

   su - oldboy

   sudo useradd kkk : 提示需oldboy密碼,輸入後執行完成

   

    修改

   oldboy  ALL=(ALL)       NOPASSWD: ALL     :表示oldboy有所有權限,並不提示輸入oldboy密碼

   sudo su - :此時可切換到root用戶

   

三、環境變量

PATH :環境變量大寫

全局生效    :/etc/profile

普通用戶生效:~/.bash_profile或~/.bashrc

 

四、中文字符集

1、配置文件 : /etc/sysconfig/i18n
2、cat/etc/sysconfig/i18n

    LANG="en_US.UTF-8"

    SYSFONT="latarcyrheb-sun16"

   

    echoLANG="zh_CN.GB18030" : 臨時調整字符集

    echo LANG="zh_CN.UTF-8" : 也可以

 

3、locate:查看本地字符集

 

五、時間同步ntp

1、配置文件 : /var/spool/cron/root
2、whichntpdate

    /usr/sbin/ntpdate

   

    /usr/sbin/ntpdate10.108.68.100

   

3、定時同步

    echo'#time sync by myLinux93.85 at 2017-01-05' >> /var/spool/cron/root

    echo'*/60 * * * * /usr/sbin/ntpdate 10.108.68.100 > /dev/null 2>&1'>> /var/spool/cron/root   #60分鐘同步一次時間 

   

六、加大服務器文件描述符

1、配置文件:/etc/security/limits.conf
2、查看當前文件描述符

    ulimit-n

3、加大文件描述符

    臨時加大 :

      ulimit HSn 65535

    永久加大:

     echo '*     -     nofile    65535' >>/etc/security/limits.conf 

     或用vi/etc/security/limits.conf

七、調整內核參數

1、配置文件:/etc/sysctl.conf
2、調優

#連接的超時,默認爲60秒,對應系統文件:/proc/sys/net/ipv4/tcp_fin_timout

net.ipv4.tcp_fin_timeout=2  

#連接重用,默認爲0,表示關閉,對應系統文件:/proc/sys/net/ipv4/tcp_tw_reuse

net.ipv4.tcp_tw_reuse = 1     

#連接回收,默認爲0,表示關閉,對應系統文件:/proc/sys/net/ipv4/tcp_tw_recycle

net.ipv4.tcp_tw_recycle=1  

#開啓SYN cookies功能,當SYN等待隊列溢出時啓用cookies來處理,默認爲1,表示開啓,可以不添加。

#對應系統文件:/proc/sys/net/ipv4/tcp_syncookies

net.ipv4.tcp_syncookies = 1 

#TCP連接保持的時間,默認爲7200秒(2小時),現改爲600秒(10分鐘)。

#對應系統文件:/proc/sys/net/ipv4/tcp_keepalive_time         

net.ipv4.tcp_keepalive_time = 600

#設定系統打開的端口範圍。即用於向外連接的端口範圍,默認爲32768 61000。

#對應系統文件:/proc/sys/net/ipv4/ip_local_port_range  

net.ipv4.ip_local_port_range = 4000   65000         

#SYN隊列的長度,表示可經容納等待連接的網絡連接數,默認爲1024。

#對應系統文件:/proc/sys/net/ipv4/tcp_max_syn_backlog

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

3、重新生效

    sysctl-p

4、其它可配置項

#Controls IP packet forwarding  控制IP包轉發

net.ipv4.ip_forward = 0   #0禁止,1允許

#控制ping命令。0表示可以ping能,1表示不能ping通

net.ipv4.icmp_echo_ignore_all = 0 

   

八、定時清理clientmqueue目錄下的垃圾文件,防止佔滿磁盤空間

1、郵件服務的郵件臨時存放地點:/var/spool/clientmqueue/sendmail

  CentOS5.8默認有sendmail,而CentOS6.4默認沒有。有時候該目錄下有許多小文件,將磁盤空間或文件inode的佔滿(每個文件對應一個inode,如果inode沒有了,就算有空間也不能寫文件了,df -i查看)

 

2、清理方法
(1)手動清理:

find /var/spool/clientmqueue/sendmail/ -type f | xargs rm -f

檢查:ll /var/spool/clientmqueue | wc -l   

(2)定時清理:

echo"/var/spool/clientmqueue/sendmail/ -type f|xargs rm -f">

/server/scripts/del_sys_file.sh

echo "00 00 * * * /bin/sh /server/scripts/del_sys_file.sh>/del/null2>&1" >>

/var/spool/cron/root

檢查:cat  /server/scripts/del_sys_file.sh

      crontab -l

          

九、隱藏或修改登陸的提示信息(系統、版本號)

1、說明:系統漏洞一般與系統版本號有關係統。
2、查看系統登錄時的提示信息

    cat/etc/issue

3、清空提示文件內容

    echo> /etc/issue  或 > /etc/issue 或 cat /dev/null > /etc/issue

   

十、鎖定系統關鍵文件

1、關鍵文件

    /etc/passwd:用戶文件

    /etc/shadow:用戶密碼文件

    /etc/group:用戶組文件

    /etc/gshadow:用戶組密碼文件

    /etc/inittab:開機啓動文件

   

2、鎖定

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

   

3、解鎖

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

   

4、將chattr命令刪除或改名

    whichchattr

    /usr/bin/chattr

    mv/usr/bin/chattr /usr/bin/oldboy

   

5、查看文件是否加鎖

    lsattr  /etc/passwd /etc/shadow /etc/group/etc/gshadow /etc/inittab

    ----i--------e-/etc/passwd      # i表示加鎖

    ----i--------e-/etc/shadow

    ----i--------e-/etc/group

    ----i--------e-/etc/gshadow

    ----i--------e-/etc/inittab

   

十一、小結

1、不用root,添加普通用戶,用sudo授權管理
2、更改默認的遠程連接ssh服務端口及禁止root用戶遠程連接
3、定時自動更新服務器時間
4、配置yum更新源,從國內更新源下載rpm包
5、關閉selinux及iptables(如聯互聯網則要打開,高併發除外)
6、加大服務器文件描述符
7、定時清理clientmqueue目錄下的垃圾文件
8、精簡開機自啓動服務(crond,sshd,network,rsyslog(CentOS5.8是syslog))
9、調整內核參數
10、更改字符集,以支持中文。但建議還是使用英文字符集,防止亂碼
11、鎖定系統關鍵文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章