第六節 Linux系統基礎優化 標簽(空格分隔):Linux實戰教學筆記 陳思齊 第1章 基礎環境 ![QQ20161227 [email protected] 60.5kB][1] 第2章 使用網易163鏡像做yum源 預設國外的yum源速度很慢,所以換成國內的。 第一步:先備份 mkdir backup ...
第六節 Linux系統基礎優化
標簽(空格分隔):Linux實戰教學筆記-陳思齊
第1章 基礎環境
第2章 使用網易163鏡像做yum源
預設國外的yum源速度很慢,所以換成國內的。
第一步:先備份
mkdir backup
mv C* backup/
第二步:下載163yum源
第三步:清除舊緩存
yum clean all
第四步:創建新緩存
yum makecache
第五步:安裝必要的軟體包
yum -y install tree nmap sysstat gcc gcc-c++ make telnet
第3章 關閉SElinux功能
SELinux(Security-Enhanced Linux)是美國國家安全局(NSA)對於強制訪問控制的實現,這個功能讓系統管理員又愛又恨,這裡我們還是把它關閉了吧,至於安全問題,後面通過其他手段來解決,這也是大多數生產環境的做法,如果非要開啟也是可以的。關閉方式如下。
- 修改配置文件,使關閉SElinux永久生效:
/etc/selinux/config :selinux的配置文件
可以直接vi(vim)修改或者用sed -i直接對配置文件進行修改。
- 臨時關閉SElinux,可在命令行執行如下命令:
命令說明
- setenforce:用於命令行管理SELinux的級別,後面的數字表示設置對應的級別
- getenforce:查看SElinux當前的級別狀態
提示:修改配置SElinux後,要想使生效,必須要重啟系統。因此,可配合使用setenforce 0 這個臨時關閉的命令,這樣在重啟前後都可以使得SElinux關閉生效了,也就是說無需立刻重啟伺服器了,在生產環境下Linux機器是不能隨意重啟。
小結
- 備份/etc/selinux/config
- 修改配置文件(重啟伺服器生效)
sed -i '7 s/enforcing/enabled/g' /etc/selinux/coinfig - 命令行(臨時,重啟後失效)
setenforce 0
getenforce
第4章 關閉iptalbes防火牆
關閉防火牆的目的是為了讓初學者學習更方便,將來在學了iptables技術後可再統一開啟。在企業環境中,一般只有配置外網IP的linux伺服器才需要開啟防火牆,但即使是有外網IP,對於高併發高流量的業務伺服器仍是不能開的,因為會有較大性能損失,導致網站訪問很慢,這種情況下只能在前端加更好的硬體防火牆了。
- 關閉防火牆的具體操作過程如下:
第5章 設定linux運行級別為3(文本模式)
設定運行級別(runlevel)為3,即表示使用文本命令行模式管理Linux。
/etc/inittab :開機啟動模式配置文件
模式3:對系統資源的占用最低,所以改成3對系統進行優化
模式5:桌面模式,如果沒有裝桌面就進不去了
命令:init 0 可以直接關閉電腦
命令:init 6 可以直接重啟電腦
命令:init x(模式) 用來臨時切換linux運行模式
runlevel命令可以查看當前的運行模式
重點
必須掌握linux的啟動流程
必須掌握linux系統的7中運行級別
必須會臨時切換,永久修改linux的啟動模式
第6章 精簡開機系統啟動
系統必須開啟的5個服務
- sshd
- crond
- rsyslog
- sysstat
- network
一條命令關閉其他所有不必要的服務
----------
第7章 添加普通用戶賬號
- linux/unix是一個多用戶,多任務的操作系統。
- 超級管理員(root):root預設在unix/linux操作系統中擁有最高的管理全縣。
- 普通用戶:管理員或者具備管理許可權的用戶創建的。許可權:系統管理僅可以讀,看,不能增,刪,改。
許可權越大,責任越大
- 可以使用如下命令添加一個普通用戶賬號,併為其設置口令:
- 一般情況下,在企業環境中應儘量避免直接到root用戶下操作,除非有超越普通用戶許可權的系統維護需求,使用完後立刻退回到普通用戶。
- 還可通過下麵的命令一步到位的設置密碼(其中,chensiqi為用戶名,密碼為123456)
echo "123456" | passwd --stdin chensiqi && history -c
--stdin為免交互模式
必須先創用戶後,才能給用戶設置密碼,不然系統會找不到這個用戶的。
註意:這種方式雖然能免提示的直接創建用戶,但是密碼信息都被記錄在了命令的歷史記錄里,因此,在創建完成以後切記history
-c 清空命令的歷史記錄信息。
嘗試切換用戶角色:
說明:
- 超級用戶root切換到普通用戶下麵,無需輸入對應用戶密碼,這相當於“皇帝”去“大臣”家裡。
- 普通用戶切換到root或其他普通用戶下,需要輸入切換的對應用戶密碼
- 普通用戶的許可權比較小,只能進行基本的系統信息查看等操作,無法更改系統配置和管理服務
- $符號是普通用戶的命令提示符,#符號是超級管理員的提示符。示例如下:
- 提示符@前面的字元代表當前用戶(可用whoami查詢),後面的為主機名(可用hostname查詢),~所在的位置是視窗當前用戶所在的路徑。示例如下:
- Linux命令提示符由PS1環境變數控制。示例如下:
這裡的PS1=‘[\u@\h\W]\$’,可以通過全局變數配置文件/etc/profile來調整。
- 利用sudo控制用戶對系統命令的使用許可權
不用root賬號是安全了,但管理不方便了,為既安全又管理方便,可將需要root許可權的普通用戶加入sudo管理,這樣用戶就可以通過自己的普通賬戶登陸實現利用root的許可權來管理系統了,當然也就不需要有root賬號及密碼了。
====>用戶管理深度講解(企業案例)
執行如下visudo命令,即可打開sudo的配置文件進行編輯。
使用visudo命令等效於vim /etc/sudoers(sudo的配置文件)
在/etc/sudoers 文件大約91行的下邊添加需要提升為root許可權的普通用戶名及對應許可權,格式如下(下圖有誤,是91行那個):
- visudo或者vi /etc/sudoers,在91行下邊加入,或者其他位置加入皆可。
- root ALL=(ALL):此為91行
- chensiqi ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel :此為添加的行
- 這句話的意思是對任意主機名的chensiqi用戶授權使用useradd和userdel兩個命令。
提示:
如果chensiqi用戶被授予上述許可權,那麼它可在所有的機器上運行useradd,userdel命令
如果是針對用戶組,則對應的授權命令如下: % 用戶組 機器=(授權使用哪個角色的許可權) /usr/sbin/useradd
- 通過sudo進行授權管理系統的目的:即能讓運維人員幹活,又不能威脅系統安全,其實就是前面講的用戶許可權最小化原則,還可以審計用戶使用sudo的提權操作命令。
為了管理方便,這裡暫時給chensiqi授權all許可權,即可以管理整個系統
- 第一步,輸入visudo找到91行,在行下加入內容
- NOPASSWD:ALL:NOPASSWD表示提權執行命令免密碼,ALL表示可擁有所有許可權
- 也可以直接仿照91行樣例ALL=ALL,也是所有許可權,但是提權時會要求輸入密碼
- 第二步,修改完畢後,要進行檢查
也可以使用快速操作命令增加sudo許可權,僅限於批量管理的情況:
\cp /etc/sudoers /etc/sudoers.bak
echo "chensiqi ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers
visudo -c :直接追加沒有語法檢查,因此要單獨執行語法檢查
- 第三步,此時再登陸chensiqi用戶,就可以通過執行類似sudo ls -l /root (sudo後面追加正常命令)的命令來以root用戶的許可權管理系統了,如下:
說明
- 通過sudo授權管理後,所有用戶執行授權的特殊許可權格式為“sudo”命令
- 如果需要切換到root執行相關操作,可以通過“sudo su -”命令,註意,此命令提示的密碼為當前用戶的密碼,而不是root密碼。
執行“sudo -l”命令可以查看當前用戶被授權的sudo許可權集合。
- 對於linux系統bash的內置命令,一般無法進行sudo授權,例如:cd命令等。
- 在生產環境中,通常會禁止root遠程登錄,不過,會為每個運維人員建立一個普通賬號,然後根據運維人員的需求,通過sudo控制登陸系統的許可權2,事實證明這是一個不錯的許可權管理方式。當然,在有的生產環境里可能還會使用一種叫做ldap的統一認證登陸及授權管理的方式。即只要有一個賬號和密碼,全公司多個機房系統內通行無阻(系統登陸,svn,vpn等),有關這部分內容的講解,以後根據情況在另行添加。在此,先瞭解即可。
- 普通用戶的環境變數問題:在早期的Centos5系統中,普通用戶執行系統管理相關命令會遭遇到環境變數問題,導致找不到執行的命令(Centos6以後的系統不存在這個問題,這裡就不提了)
sudo授權對於bash的內置命令處理,是個難題,因為內置命令沒有實體文件和路徑,不過一般都有解決辦法例如可以使用sudo ls替代sudo cd,有的人使用sudo bash後在使用內置命令,這是很危險的,不推薦。
第8章 Linux系統安全最小化原則說明
最小化原則對Linux系統安全來說極其重要:即多一事不如少一事。具體包括如下幾個基本方面:
- 安裝Linux系統最小化,即選包最小化,yum安裝軟體包也要最小化,無用的包不裝
- 開機自啟動服務最小化,即無用的服務不開啟。
- 操作命令最小化。例如:能用“rm -f test.txt” 就不用“rm -fr test.txt”.
- 登陸linux用戶最小化。平臺沒有特殊需求不登陸root,用普通用戶登錄即可。
- 普通用戶授權許可權最小化,即只給用戶必須的管理系統的命令,不能啥都可以乾。
- Linux 系統文件及目錄的許可權設置最小化,禁止隨意創建,更改,刪除文件
- 程式服務運行最小化,即程式服務運行應儘量不用root身份運行。
第9章 更改SSH服務端遠程登錄的配置
windows伺服器的預設遠程登陸埠是3389,管理員用戶是administrator,普通用戶是guest。Linux的管理用戶是root,普通用戶預設有很多個,遠程連接預設埠port22.這些通常搞IT的人都知道。那麼黑客是否也知道呢?他們當然知道,甚至比我們更清楚,所以,為了系統安全要隱藏或更改上述預設的配置才行。更改配置的命令如下:
說明:
- Port:代表埠,後邊的數字代表sshd服務監聽的是哪個埠
- PermitRootLogin :yes代表允許root用戶遠程登錄,no代表不允許(如果是no則所有遠程登陸連接都不能用root用戶登陸,普通用戶可以正常連接)
- PermitEmptyPasswords:yes代表允許用戶輸入空的登陸密碼,no代表不允許
UseDNS:指定sshd是否應該對遠程主機名進行反向解析,以此檢查此主機名是否與IP地址真實對應。預設值“yes”
建議改成“no”,否則可能會導致SSH連接很慢
- 將以上信息更改後,保存退出
- 執行如下命令重啟sshd,使修改的配置生效
提示:reload為平滑重啟,不影響正在SSH連接的其他用戶,因此要好於restart。
除了前面介紹的安全知識外,還有更高級的SSH安全策略,具體如下:
- 更改SSH監聽的IP,使僅監聽內網IP
- 通過防火牆限制僅能使用內網IP去連接此伺服器
- 通過撥號到VPN伺服器然後從區域網訪問這些伺服器,提升安全。
- 工作中的系統安全重點就是互聯網TCP/IP連接,對外的Web服務埠http80和https443的安全控制
第10章 Linux中文顯示設置
此項優化為可選項,即調整Linux系統的字元集設置,那麼,什麼事字元集?
簡單的說,字元集就是一套字元號及其編碼。目前Linux下常用的字元集有:
- GBK:定長,雙位元組,不是國際標準,支持的系統不少,實際企業用的不多。
- UTF-8:非定長,1~4位元組,廣泛支持,MYSQL也使用UTF-8,企業廣泛用。可以通過快捷的命令方式在/etc/sysconfig/i18n中添加如下內容,使其支持中文顯示:
臨時支持中文:
永久支持中文
註意,還得source一下這個文件或者重啟電腦
小結:
echo $LANG:查看系統當前的字元集
/etc/sysconfig/i18n 系統字元集的配置文件
source 文件名,讓配置文件立刻生效
提示
- 亂碼的核心解決方法:
(1)系統字元集(UTF-8)
(2)xshell軟體的字元集保持一致(UTF-8) - 註意“zh-CN.UTF-8”的大小寫字母
- 這個中文顯示配置需要跟你自己的SSH客戶端的配置一致
第11章 linux特殊變數===調整歷史記錄以及終端超時
11.1 命令行臨時生效:
- export TMOUT=300:連接超時時間控制變數
- export TMOUT=3:3秒之後,沒有任何輸入,則自動退出。
- expoort HISTSIZE=5:history size 命令行歷史記錄數量,history命令顯示的條數
- export HISTFILESIZE=5:命令行命令對應的歷史記錄文件,文件中命令記錄數,
11.2 永久生效
- 放入到/etc/profile後
- source 生效
第12章 隱藏Linux版本信息顯示
- 在登陸到Linux主機本地(非CRT連接的視窗)前,會顯示系統的版本和內核。
- 我們登陸以後在/etc下找到issue這個文件以及issue.net這個文件,cat下。看看是不是很眼熟。
第13章 虛擬機VMware的克隆bug
- 我們在用虛擬機克隆多台機器,搭建集群環境的時候,可能會出各種各樣的bug,比如mac地址衝突,比如網卡無法啟動,再比如無法ping通,一切的罪魁禍首都是/etc/udev/rules.d/70-persistent-net.rules這個文件導致的
- 因此,**我們在克隆虛擬機之前一定要:
第一步:
先要清空這個文件。/etc/udev/rules.d/70-persistent-net.rules
第二步:
編輯你的網卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
刪除裡面兩句話,如下圖:
註意:有幾塊網卡就得刪掉幾塊的對應配置文件的HWADDR,UUID。
綜上,此時再克隆虛擬機就不會再出現任何問題。