一名運維工程師在運維崗位上時間久了,就會發現Linux優化的重要性,同時會給運維工做帶來不少的便利性。本人逐漸認識到了這一點,因此特地在工做閒暇之餘,經過閱讀Linux相關書籍及向同事、同行高手諮詢,針對Linux系統的一些基本優化作了以下概括總結,若有不足之處,還望大夥補充完善。node
本文主要描述一些基本的系統優化知識點,並未涉及Linux深化優化,關於Linux的深化優化知識本人後期會更新。linux
第一點:Linux的管理儘可能不用root用戶,利用sudo命令來控制普通用戶對系統的管理vim
新建一個用戶,使用sudo命令添加權限,詳細操做步驟以下:bash
(1)添加新的用戶: useradd 新的用戶名服務器
(2)檢查是否已成功添加:id 新的用戶名cookie
(3)設置該用戶的密碼:echo 123321|passwd --stdin 新的用戶名運維
接下來需將新的用戶添加管理員權限,這個新的用戶就至關於管理員ssh
(4)備份以前的權限文件:\cp /etc/sudoers{,.back}tcp
(5)將新的用戶添加管理員權限:工具
echo "新的用戶名 ALL=(ALL) NOPASSWD: ALL " >> /etc/sudoers
(6)檢查是否已成功添加:tail -1 /etc/sudoers
(7)配置生效:visudo -c
待以上操做完畢,那麼此時的新的用戶權限等同於root用戶。
第二點:更改默認的遠程鏈接SSH服務端口
(1)修改配置文件/etc/ssh/sshd_config
Port 22,改成Port 52113(範圍0——65535);##默認端口爲22
ListenAddress 0.0.0.0,改成ListenAddress 內網IP地址;##監聽內網ip地址
PermitRootLogion yes,改成PermitRootLogion no;##root用戶遠程鏈接)
(2)重啓生效:/etc/init.d/sshd reload
(3)查看端口狀態:netstat -lntup|grep sshd
第三點:定時自動更新服務器時間,使其和互聯網時間同步
(1)配置
echo '#time sync by 新的用戶名 at 2019-04-01' >> /var/spool/cron/root
echo '/5 /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >> /var/spool/cron/root
###每5分鐘執行一次同步
###至於以哪一個時間服務器爲基準,如下地址可本身選擇:
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
(2)查看是否已更新:crontab -l
(3)最後備份下:\cp /var/spool/cron/root{,.back}
第四點:配置yum配置源
(1)建立備份文件存放目錄
Mkdir -p /etc/yum.repos.d/{default,back}
(2)備份全部默認的配置文件
\mv /etc/yum.repos.d/repo /etc/yum.repos.d/default
(3)從阿里雲獲取yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
(4)備份yum源
\cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/default
第五點:關閉selinux及iptables
(1)關閉iptables:/etc/init.d/iptables stop
(2)檢查是否已關閉:/etc/init.d/iptables status
(3)設置開機不自動啓動:chkconfig iptables off
(4)確認配置:chkconfig --list iptables
(5)關閉selinux:
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
(6)查看並確認配置:cat /etc/selinux/config
備註:永久生效,須要重啓計算機。(在工做場景中,若是有外部IP通常要打開iptables)
第六點:適當調整文件描述符的數量
鑑於進程及文件的打開都會消耗文件描述符,因此在運維過程當中咱們要調整下文件描述符的數量,表示形式爲整數數字(0——65535)。
查看默認文件描述符:ulimit –n ###通常默認爲1024
在/etc/sercurity/limits.conf裏面配置:
echo '* - nofile 65535' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
第七點:定時自動清理郵件目錄垃圾文件
防止inodes節點被佔滿。
第八點:精簡併保留必要的開機自啓動服務
(1)只保留重要的基礎服務,其他所有關閉
chkconfig --list|egrep -v "sysstat|crond|sshd|network|rsyslog"|awk '{print "chkconfig "$1,"off"}'|bash
(2)確認配置:chkconfig --list|grep 3:on
第八點:優化Linux內核參數
(1)配置文件/etc/sysctl.conf,添加以下命令(可直接複製粘貼)
cat >>/etc/sysctl.conf<<EOF
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
EOF
(2)配置生效命令:sysctl -p
第九點:配置字符集
(1)查看配置文件:cat /etc/sysconfig/i18n
裏面默認應該有如下2行內容:
LANG="en_US.UTF-8" ###默認提示爲英文
(2)先備份配置文件:cp /etc/sysconfig/i18n{,.back}
(3)修改配置文件:
說明:此項可將字符集修改成中文,也可不作修改。
echo 'LANG="zn_CN.UTF-8"' > /etc/sysconfig/i18n
echo 'SYSFONT="latarcyrheb-sun16"' >> /etc/sysconfig/i18n
(4)配置生效:source /etc/sysconfig/i18n
(5)確認配置是否成功:echo $LANG
第十點:鎖定關鍵性系統文件,防止被篡改
配置命令:
chattr +i /etc/{passwd,shadow,group,gshadow}
lsattr -a /etc/{passwd,shadow,group,gshadow}
解除鎖定命令:chattr -i
第十一點:禁止系統被ping
配置命令:echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
配置生效命令:sysctl -p
第十二點:升級漏洞軟件
查看相關軟件的版本號:rpm -qa openssl openssh bash
執行升級:yum install openssl openssh bash
第十三點:優化SSH遠程鏈接
(1)先備份配置文件:cp /etc/ssh/sshd_config{,.back}
(2)編輯ssh服務配置文件
編輯ssh服務的配置文件(vim /etc/ssh/sshd_config),在第12行下面添加以下內容:
Port 52113 #使用大於10000的端口號
PermitRootLogin no #禁止root遠程登陸
PermitEmptyPasswords no #禁止空密碼登陸
UseDNS no #不使用dns解析
GSSAPIAuthentication no #鏈接慢的解決配置
(3)確認配置:grep -A 5 -i 'Start by 新的用戶名' /etc/ssh/sshd_config
(4)重啓ssh服務:/etc/init.d/sshd restart
(5)確認配置是否成功:netstat -lntup | grep ssh
以上關於Linux系統的基礎優化,因爲本人能力及知識點有限,總結概括的不夠全面,還請你們多參考Linux工具書,如《Linux就該這麼學》等及同行高手。