Linux基礎優化與安全歸納總結
一名運維工程師在運維崗位上時間久了,就會發現 Linux 優化的重要性,同時會給運維工作帶來很多的便利性。本人逐漸認識到了這一點,所以特意在工作閒暇之餘,通過閱讀 Linux 相關書籍及向同事、同行高手諮詢,針對 Linux 系統的一些基本優化做了如下歸納總結,如有不足之處,還望大夥補充完善。
本文主要描述一些基本的系統優化知識點,並未涉及 Linux 深化優化,關於 Linux 的深化優化知識本人後期會更新。
第一點: Linux 的管理儘量不用 root 使用者,利用 sudo 命令來控制普通使用者對系統的管理
新建一個使用者,使用 sudo 命令新增許可權,詳細操作步驟如下:
( 1 )新增新的使用者: useradd 新的使用者名稱
( 2 )檢查是否已成功新增: id 新的使用者名稱
( 3 )設定該使用者的密碼: echo 123321|passwd --stdin 新的使用者名稱
接下來需將新的使用者新增管理員許可權,這個新的使用者就相當於管理員
( 4 )備份之前的許可權檔案: \cp /etc/sudoers{,.back}
( 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 (範圍 —— 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 )
第六點:適當調整檔案描述符的數量
鑑於程式及檔案的開啟都會消耗檔案描述符,所以在運維過程中我們要調整下檔案描述符的數量,表示形式為整數數字( —— 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 就該這麼學》 等及同行高手。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2642459/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux基礎命令歸納大全Linux
- MHA工具的優缺點歸納總結
- Java程式設計技巧:if-else優化實踐總結歸納Java程式設計優化
- pt-osc工具的優缺點歸納總結
- 安全基礎總結
- jQuery學習總結歸納jQuery
- 【PyQt5】QTableWidget 的總結與歸納(轉載)QT
- [PyQt5] QTableWidget 的總結與歸納(轉載)QT
- PTA7~9題目集總結與歸納
- 常用基礎Linux操作命令總結與hadoop基礎操作命令LinuxHadoop
- Vue 路由知識點歸納總結Vue路由
- Laravel-admin 問題歸納總結Laravel
- HTTP標頭學習總結歸納HTTP
- 物件導向知識點總結歸納物件
- Kotlin知識歸納(一) —— 基礎語法Kotlin
- 『心善淵』Selenium3.0基礎 — 10、使用Seleniun定位頁面元素歸納總結(超詳細)
- Spring歸納小結Spring
- Java獲取多執行緒執行結果方式的歸納與總結Java執行緒
- Linux命令補充及基礎優化。Linux優化
- 歸納從檔案中讀取資料的六種方法-JAVA IO基礎總結第2篇Java
- Linux基礎最佳化與安全有哪些重點?Linux學習規劃Linux
- React Fiber原始碼分析 第四篇(歸納總結)React原始碼
- Peer Dependency 一些使用場景的歸納總結
- JS基礎總結(2)——原型與原型鏈JS原型
- Java基礎 | Stream流原理與用法總結Java
- VUE基礎總結Vue
- jQuery基礎總結jQuery
- 【Python】基礎總結Python
- MongoDB基礎總結MongoDB
- JavaScript基礎總結JavaScript
- 動作遊戲戰鬥系統總結歸納&思考(中)遊戲
- 前端學習記錄 1:HTML 基礎知識點歸納前端HTML
- APP優化總結APP優化
- webpack優化總結Web優化
- XML與JSON學習歸納XMLJSON
- 連結串列基礎總結
- Linux基礎知識和基本操作語句總結Linux
- MySQL MHA工具的優缺點歸納MySql