新的 Centos 伺服器初始化配置

来源:https://www.cnblogs.com/jojo-feed/archive/2018/12/24/10169769.html
-Advertisement-
Play Games

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


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 demo@SERVER_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 userName@host:/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 更加安全和可用,如果你不想每次創建伺服器都要做同樣的步驟,建議你上面的內容都寫都腳本中。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Win10的應用商店中,可以安裝喜馬拉雅,並下載感興趣的音頻文件。下載的音頻如下圖所示, 有兩個json文件(圖1),其中一個json文件(2677885list.json)包含了所下載音頻的詳細信息,包括id和title(文件真實名稱);音頻文件是一串純數字的id作為名稱,沒有顯示音頻的真實名稱( ...
  • C# -- 泛型的使用 1. 使用泛型 運行結果: 2. 泛型約束 運行結果: ...
  • Ssh登錄 Ssh是建立在應用層和傳輸層的安全協議,專門為遠程登錄回話和其他網路服務提供安全性。利用ssh可以有效的防止遠程管理中的信息泄露問題,同時ssh傳輸的數據是經過壓縮的,可以加快傳輸速度。 1、啟動sshd服務。Centos預設已經安裝了ssh,而且該服務預設是啟動的 [root@loca ...
  • 一 環境準備 1.1 Flannel概述 Flannel是一種基於overlay網路的跨主機容器網路解決方案,即將TCP數據包封裝在另一種網路包裡面進行路由轉發和通信,Flannel是CoreOS開發,專門用於docker多機互聯的一個工具,讓集群中的不同節點主機創建的容器都具有全集群唯一的虛擬ip ...
  • Mysql安裝和使用:點我有驚喜 ...
  • 環境 操作系統版本:Win7旗艦版64位系統 1、安裝FTP組件 ,打開過程可能會比較慢,大概3、4分鐘: 。勾選Internet信息服務下的 、`FTP服務 FTP擴展性 Web管理工具`全部項,如下圖: 2、添加FTP站點 在開始 程式中找到 ,並打開 右擊“網站”,選擇 : 在站點信息中,名稱 ...
  • 一 Docker Compose概述 Compose是一個用於定義和運行多容器Docker應用程式的工具。使用Compose,您可以使用YAML文件來配置應用程式的服務。然後,使用單個命令,您可以從配置中創建並啟動所有服務。 Compose適用於所有環境:生產,登臺,開發,測試以及CI工作流程。 使 ...
  • Linux seq_printf輸出內容不完整的問題 寫在前面的話:這是多年前在項目中遇到的問題,作為博客的開篇之作,有不足之處,請各位大俠斧正!謝謝! seq_file介面介紹 有許多種方法能夠實現設備驅動(或其它內核組件)提供信息給用戶或系統管理員。一個有用的技術是在debugfs,/proc或 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...