1. 程式人生 > >新的 Centos 伺服器初始化配置

新的 Centos 伺服器初始化配置

centos
當你初次建立新的 Centos 伺服器的時候, Centos 預設的配置安全性和可用性上會存在一點缺陷(運維人員往往會有初始化的指令碼)。為了增強伺服器的安全性和可用性,有些配置你應該儘快地完成。 這篇文章大致從這方面去講 - 賬號安全 - ssh 安全 - 防火牆 - 交換區檔案(swap file)

使用者密碼安全

關於 root 使用者

root 使用者是在linux環境下擁有非凡許可權的的超級管理員。因為root使用者的許可權很高,所以在日常使用中不建議使用。這是因為 root 使用者能做出一些非常有破壞性的行為,甚至是事故。(比如是臭名昭彰的rm -rf /,或者你會對這篇文章

《Linux 中如何避免 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 更加安全和可用,如果你不想每次建立伺服器都要做同樣的步驟,建議你上面的內容都寫都指令碼中。