新的 Centos 伺服器初始化配置
當你初次建立新的 Centos 伺服器的時候, Centos 預設的配置安全性和可用性上會存在一點缺陷(運維人員往往會有初始化的指令碼)。為了增強伺服器的安全性和可用性,有些配置你應該儘快地完成。 這篇文章大致從這方面去講 - 賬號安全 - ssh 安全 - 防火牆 - 交換區檔案(swap file)
使用者密碼安全
關於 root 使用者
root 使用者是在linux環境下擁有非凡許可權的的超級管理員。因為root使用者的許可權很高,所以在日常使用中不建議使用。這是因為 root 使用者能做出一些非常有破壞性的行為,甚至是事故。(比如是臭名昭彰的rm -rf /
,或者你會對這篇文章
建立一個新的使用者
這個例子會建立一個使用者叫 demo,你可以替換成你喜歡的使用者名稱:
adduser demo
下一步,為新的使用者分配密碼(再次說明,用你剛建立的使用者替換demo)
passwd demo
輸入一個強密碼,然後再重複輸入以完成驗證。
使用者許可權
現在,我們已經有了一個普通許可權的使用者。然而我們有時需要執行一些管理員任務。 為了避免要登出普通使用者,然後用 root 使用者重新登入,Linux 中有個優雅的解決方式,系統授權特定使用者或使用者組作為 root 或他使用者執行某些(或所有)命令系統。在這個使用者組的使用者在每條命令前加個單詞 sudo,就可以用管理員許可權執行命令。
安裝 sudo
有些版本會沒有 sudo
命令的,所以首先要安裝 sudo
yum install -y sudo
屬於wheel
使用者組的使用者可以使用sudo
命令。 在 RedHat 系只需我們需要新增使用者到那個wheel
組。屬於wheel
組的使用者可以使用sudo
命令。 以root
的身份執行以下命令,會將新使用者新增到wheel
組中(將 demo 替換成你的新使用者)
gpasswd -a demo wheel
ssh 安全
保護你的伺服器的下一步是為你的新使用者設定公鑰認證。通過使用 SSH 私鑰登入來會提高伺服器的安全性。
生成金鑰對
如果你沒有包含公鑰和私鑰的金鑰對,你需要生成一個。如果你已經有了想要使用的金鑰,請跳到複製公鑰的步驟。 要生成新的金鑰對,請在本地機器
ssh-keygen
假設你的本地使用者叫 localuser
,你會看到的輸出如下所示
ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
按回車鍵以接受這檔名和路徑(或者輸入新的名稱) 下一步,系統會提示你輸入密碼確保金鑰的安全。你可以輸入密碼或者將密碼留空。 注意:如果你將密碼留空,你可以用私鑰進行身份驗證,不輸入再輸入密碼。如果你輸入密碼了,你需要私鑰和密碼才能登陸。使用密碼保護密碼會更加安全,但兩者都有自己的用途,並且都比基本密碼驗證更安全。 這會在 localuser 的Home
(主)目錄的 .ssh
資料夾 中生成一個私鑰 id_rsa
和一個公鑰 id_rsa.pub
。記住私鑰不要和任何不該訪問你伺服器的人共享。
複製公鑰
生成 ssh
金鑰對後,你需要將你的公鑰複製到新的伺服器上。我們將介紹兩種簡單的方法來做到這點。
方案一: 使用 ssh-copy-id
如果您的本地計算機安裝了 ssh-copy-id ,則可以使用它將你的公鑰安裝到你擁有登入憑據的任何使用者。 執行 ssh-copy-id指令碼需要指定要安裝金鑰的伺服器的使用者名稱和 IP 地址來,如下所示:
ssh-copy-id [email protected]_IP_ADDRESS
在提示符處輸入密碼後,你的公鑰用會被新增到遠端使用者的.ssh/authorized_keys
的檔案中。現在可以使用相應的私鑰登入到伺服器了。
方案二:手動配置金鑰
1.如果伺服器上沒有.ssh/authorized_keys
檔案, 要先建立.ssh
資料夾以及.ssh/authorized_keys
檔案
cd ~
mkdir .ssh
chmod 700 ~/.ssh
cd ssh
touch authorized_keys
chmod 600 authorized_keys
2.複製公鑰內容到伺服器上
scp id_rsa.pub [email protected]:/home/userName/.ssh/wait_to_authorized_key
3.將公鑰字串新增到authorized_keys
檔案中
cat wait_to_authorized_key >> authorized_keys
禁止 root 使用者登入
現在我們有了新使用者,通過修改 SSH 的守護程序(允許我們遠端登入的程式)的配置來禁止遠端SSH訪問 root 使用者,這樣可以更好第保護我們的伺服器。 /etc/ssh/sshd_config
中
#PermitRootLogin yes
改成
PermitRootLogin no
- (可選) 禁止密碼登入: 把
PasswordAuthentication yes
修改為PasswordAuthentication no
然後過載一下ssh
的配置
sudo systemctl reload sshd
現在,在我們退出伺服器之前,我們應該測試我們的新配置。直到我們確認可以成功建立新的連線。
更多
你可以看我這篇文章 提高-ssh-安全性
防火牆設定
防火牆能控制埠、應用程式的流量,讓伺服器更加安全。在 Centos 7 中引進 firewalld 作為 iptables 的前端。firewalld 對比 iptables,有區域(zones)劃分, 更簡單,能動態配置等特點。 下面主要介紹雜在新伺服器中 Firewalld 的基本配置 啟動
sudo systemctl start firewalld
設定預設區域
sudo firewall-cmd --set-default-zone=public
檢視啟用區域
sudo firewall-cmd --get-active-zones
如果啟用區域中沒有public
的話,可能是沒有為public
區域設定介面,你需要用id addr
檢視網絡卡介面(其中 lo 是本地迴環介面),再使用設定
sudo firewall-cmd --permanent --zone=public --change-interface=eth0
給防火牆新增允許通過的服務
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=ssh
檢視更多可以新增的服務
sudo firewall-cmd --get-services
檢視你的 firewalld 資訊
sudo firewall-cmd --list-all
過載配置
sudo firewall-cmd --reload
開機啟動
sudo systemctl enable firewalld
更多
更多的你可以看官方文件
設定交換分割槽(可選)
當你伺服器記憶體不夠用的時候,就會被訪問頻率較低暫時放在交換分割槽的磁碟檔案中。現在設定交換分割槽的公司應該不多,因為不夠用還不如直接加記憶體。分割槽檔案執行效率肯定比記憶體低很多。 為何還是會有人用分割槽檔案呢? 窮。比如我(逃 下面來講下如何設定分割槽檔案。 交換分割槽的大小大概等於或者是實體記憶體的2倍。 比如說,如果我們需要建立一個4千兆位元組的檔案,我們可以通過輸入以下內容建立在 /swapfile
的交換檔案
sudo fallocate -l 4G /swapfile
我們需要限制對檔案的訪問,要讓其他使用者或其他程序無法看到寫入的內容
sudo chmod 600 /swapfile
格式化分割槽檔案
sudo mkswap /swapfile
告訴系統可以用這個檔案可以用於交換
sudo swapon /swapfile
開機自動執行
sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'
可以用free -m
檢視使用的情況
最後
以上幾個步驟會讓你的 Linux 更加安全和可用,如果你不想每次建立伺服器都要做同樣的步驟,建議你上面的內容都寫都指令碼中。