網安等保-Linux服務器之最新Ubuntu-22.04-LTS系統內核優化與安全加固配置腳本使用分享
設為「特別關注」每天帶你玩轉網絡安全運維、應用開發、物聯網IOT學習!
希望各位看友【關注、點贊、評論、收藏、投幣】,助力每一個夢想。

本章目錄
首發地址: https://mp.weixin.qq.com/s/dO1bV0tfXKn4ZmqlMcUrrQ
原文地址: https://blog.weiyigeek.top/2022/8-13-683.html
0x00 前言簡述
描述: Ubuntu 22.04 LTS 是Canonical于2022年4月21日發布的操作系統,代號為Jammy Jellyfish(果醬水母), 其采用GNOME電源配置文件和流線型工作空間過渡,提高優化圖形驅動程序上的桌面幀速率,使用新的加密算法遷移到OpenSSL v3以提高安全性,并且為內存安全的系統級編程添加了Rus。
而又由于CentOS發行版在最近幾年時內將不在進行維護更新了,所以為了考慮到系統的安全性、可維護性、以及后期運維成本,我們企業內部在2020年時就已經將ubuntu作為主要的服務器系統,所以在我公司新上的業務系統基本采用debian系的發行版服務器來承載基礎應用業務,而使用最多當然是Ubuntu此發行版。
現在 Ubuntu 推出了22.04 , 想到原來每次都需要手動一臺一臺的進行主機安全加固以符合等保要求,所以了節約工作時間提高工作效率,有更多時間進行學習進步,則需要將將我們公司所使用的系統基線鏡像進行更新迭代,編寫適用于ubuntu 22.04系統的安全加固腳本,并且總結此篇文章并在文章末尾附上自動化安全加固腳本,謝謝大家支持。
此處我依據在我從前編寫的 Ubuntu 20.04 系統安全加固腳本中對其根據最新的22.04版本進行更新了等保相關規定策略,以及更新適用最新版本的 Ubuntu,針對腳本進行結構調整,更加方便大家一起參參與維護,若腳本有Bug請大家發送到我的郵箱 master@weiyigeek.top。
想要獲取該加固腳本的朋友可以在WX公眾號【WeiyiGeek】中回復【ubuntu系統加固】即可獲得,或者訪問【https://weiyigeek.top/wechat.html?key=ubuntu系統加固】
?
首發地址: https://mp.weixin.qq.com/s/dO1bV0tfXKn4ZmqlMcUrrQ
實踐視頻:https://www.bilibili.com/video/BV1fe4y1o7ov
0x01 加固實踐
描述: Ubuntu 22.04 主機系統安全加固的 Ubuntu22.04-InitializeReinforce.sh 腳本相關上的使用說明以及實踐。
??? 幫助文檔
描述: 本工具集主要針對于 Ubuntu 22.04 、20.04 LTS 操作系統進行安全加固以及系統初始化操作。
??? 腳本說明:
root@Ubuntu-Security:/home/ubuntu/Ubuntu# ./Ubuntu22.04-InitializeReinforce.sh
__ __ _ _ _____ _
\ \ / / (_) (_)/ ____| | |
\ \ /\ / /__ _ _ _ _| | __ ___ ___| | __
\ \/ \/ / _ \ | | | | | | |_ |/ _ \/ _ \ |/ /
\ /\ / __/ | |_| | | |__| | __/ __/ <
\/ \/ \___|_|\__, |_|\_____|\___|\___|_|\_\
__/ |
|___/
======================================================================
@ Desc: Ubuntu 22.04 Security Reinforce and System initialization
@ Mail bug reports: master@weiyigeek.top or pull request (pr)
@ Author : WeiyiGeek
@ Follow me on Blog : https://blog.weiyigeek.top/
@ Follow me on Wechat : https://weiyigeek.top/wechat.html?key=歡迎關注
@ Communication group : https://weiyigeek.top/visit.html
======================================================================
Usage: ./Ubuntu22.04-InitializeReinforce.sh [--start ] [--network] [--function] [--clear] [--version] [--help]
Option:
--start Start System initialization and security reinforcement.
--network Configure the system network and DNS resolution server.
--function PCall the specified shell function.
--clear Clear all system logs, cache and backup files.
--version Print version and exit.
--help Print help and exit.
Mail bug reports or suggestions to <master@weiyigeek.top> or pull request (pr).
current version : 1.0
WARNING: 溫馨提示:使用前先請配置機器上網環境,若沒有配置請在 Ubuntu22.04.conf 文件中進行網絡配置.

??腳本函數:
描述: 如下腳本將根據參數在 Ubuntu22.04-InitializeReinforce.sh 分別進行調用執行, 也可采用--function 參數進行指定調用。
? grep -r -n "函數名稱" -A 1 *
scripts/os-base.sh:26:# 函數名稱: base_hostname
scripts/os-base.sh-27-# 函數用途: 主機名稱設置
--
scripts/os-base.sh:55:# 函數名稱: ubuntu_mirror
scripts/os-base.sh-56-# 函數用途: ubuntu 系統主機軟件倉庫鏡像源
--
scripts/os-base.sh:126:# 函數名稱: ubuntu_software
scripts/os-base.sh-127-# 函數用途: ubuntu 系統主機內核版本升級以常規軟件安裝
--
scripts/os-base.sh:153:# 函數名稱: base_timezone
scripts/os-base.sh-154-# 函數用途: 主機時間同步校準與時區設置
--
scripts/os-base.sh:192:# 函數名稱: base_banner
scripts/os-base.sh-193-# 函數用途: 遠程本地登陸主機信息展示
--
scripts/os-base.sh:345:# 函數名稱: base_reboot
scripts/os-base.sh-346-# 函數用途: 是否進行重啟或者關閉服務器
--
scripts/os-clean.sh:27:# 函數名稱: system_clean
scripts/os-clean.sh-28-# 函數用途: 刪除安全加固過程臨時文件清理為基線鏡像做準備
--
scripts/os-exceptions.sh:26:# 函數名稱: problem_usercrond
scripts/os-exceptions.sh-27-# 函數用途: 解決普通用戶定時任務無法定時執行問題
--
scripts/os-exceptions.sh:45:# 函數名稱: problem_multipath
scripts/os-exceptions.sh-46-# 函數用途: 解決 ubuntu multipath add missing path 錯誤
--
scripts/os-network.sh:27:# 函數名稱: net_config
scripts/os-network.sh-28-# 函數用途: 主機IP地址與網關設置
--
scripts/os-network.sh:70:# 函數名稱: net_dns
scripts/os-network.sh-71-# 函數用途: 設置主機DNS解析服務器
--
scripts/os-optimize.sh:27:# 函數名稱: optimize_kernel
scripts/os-optimize.sh-28-# 函數用途: 系統內核參數的優化配置
--
scripts/os-optimize.sh:84:# 函數名稱: resources_limits
scripts/os-optimize.sh-85-# 函數用途: 系統資源文件打開句柄數優化配置
--
scripts/os-optimize.sh:115:# 函數名稱: swap_partition
scripts/os-optimize.sh-116-# 函數用途: 創建系統swap分區
--
scripts/os-security.sh:27:# 函數名稱: sec_usercheck
scripts/os-security.sh-28-# 函數用途: 用于鎖定或者刪除多余的系統賬戶
--
scripts/os-security.sh:65:# 函數名稱: sec_userconfig
scripts/os-security.sh-66-# 函數用途: 針對擁有ssh遠程登陸權限的用戶進行密碼口令設置。
--
scripts/os-security.sh:131:# 函數名稱: sec_passpolicy
scripts/os-security.sh-132-# 函數用途: 用戶密碼復雜性策略設置 (密碼過期周期0~90、到期前15天提示、密碼長度至少12、復雜度設置至少有一個大小寫、數字、特殊字符、密碼三次不能一樣、嘗試次數為三次)
--
scripts/os-security.sh:166:# 函數名稱: sec_sshdpolicy
scripts/os-security.sh-167-# 函數用途: 系統sshd服務安全策略設置
--
scripts/os-security.sh:194:# 函數名稱: sec_loginpolicy
scripts/os-security.sh-195-# 函數用途: 用戶登陸安全策略設置
--
scripts/os-security.sh:230:# 函數名稱: sec_historypolicy
scripts/os-security.sh-231-# 函數用途: 用戶終端執行的歷史命令記錄安全策略設置
--
scripts/os-security.sh:261:# 函數名稱: sec_grubpolicy
scripts/os-security.sh-262-# 函數用途: 系統 GRUB 安全設置防止物理接觸從grub菜單中修改密碼
--
scripts/os-security.sh:304:# 函數名稱: sec_firewallpolicy
scripts/os-security.sh-305-# 函數用途: 系統防火墻策略設置, 建議操作完成后重啟計算機.
--
scripts/os-security.sh:335:# 函數名稱: sec_ctrlaltdel
scripts/os-security.sh-336-# 函數用途: 禁用 ctrl+alt+del 組合鍵對系統重啟 (必須要配置我曾入過坑)
--
scripts/os-security.sh:355:# 函數名稱: sec_recyclebin
scripts/os-security.sh-356-# 函數用途: 設置文件刪除回收站別名(防止誤刪文件)(必須要配置,我曾入過坑)
--
scripts/os-security.sh:405:# 函數名稱: sec_supolicy
scripts/os-security.sh-406-# 函數用途: 切換用戶日志記錄和切換命令更改名稱為SU(可選)
--
scripts/os-security.sh:425:# 函數名稱: sec_privilegepolicy
scripts/os-security.sh-426-# 函數用途: 系統用戶sudo權限與文件目錄創建權限策略設置
--
scripts/os-service.sh:26:# 函數名稱: svc_apport
scripts/os-service.sh-27-# 函數用途: 禁用煩人的apport錯誤報告
--
scripts/os-service.sh:52:# 函數名稱: svc_snapd
scripts/os-service.sh-53-# 函數用途: 不使用snapd容器的環境下禁用或者卸載多余的snap軟件及其服務
--
scripts/os-service.sh:75:# 函數名稱: svc_cloud-init
scripts/os-service.sh-76-# 函數用途: 非云的環境下禁用或者卸載多余的cloud-init軟件及其服務
--
scripts/os-service.sh:101:# 函數名稱: svc_debugshell
scripts/os-service.sh-102-# 函數用途: 在系統啟動時禁用debug-shell服務
--
scripts/os-software.sh:26:# 函數名稱: install_chrony
scripts/os-software.sh-27-# 函數用途: 安裝配置 chrony 時間同步服務器
--
scripts/os-software.sh:79:# 函數名稱: install_java
scripts/os-software.sh-80-# 函數用途: 安裝配置java環境
--
scripts/os-software.sh:110:## 函數名稱: install_docker
scripts/os-software.sh-111-## 函數用途: 在 Ubuntu 主機上安裝最新版本的Docker
--
scripts/os-software.sh:201:## 函數名稱: install_cockercompose
scripts/os-software.sh-202-## 函數用途: 在 Ubuntu 主機上安裝最新版本的Dockercompose
??? 配置文件:
描述: 在 Ubuntu22.04.conf 配置文件中定義腳本所需的安全策略以及日志、歷史記錄存放路徑, 以模板的初始密碼與防火墻配置等,其中最主要的是一定要配置好IP地址,以成功拉取軟件倉庫中的工具。
$ vim Ubuntu22.04.conf
# Show Script Execute result (Y/N)
VAR_VERIFY_RESULT=Y
# Modify Script vertify timeout (unit s)
VAR_VERIFY_TIMEOUT=5
# Modify Script run time
VAR_RUNDATE=$(date +%Y%m%d-%s)
# Modify Path to logfile.
LOGFILE=/var/log/weiyigeek-${VAR_RUNDATE}.log
# Modify Path to Backup directory.
BACKUPDIR=/var/log/.backup/${VAR_RUNDATE}
# Modify Path to history record directory.
HISTORYDIR=/var/log/.history
# Modify su command execute log file path.
SU_LOG_FILE=${HISTORYDIR}/su.log
# Modify the hostname
VAR_HOSTNAME="Ubuntu-Security"
# Modify the IP/MASK and Gateway
VAR_IP=10.20.172.152/24
VAR_GATEWAY=10.20.172.1
# Modify the DNS server
# DNSPod: 119.29.29.29 Alidns: 223.5.5.5 223.6.6.6
# Google: 8.8.8.8 8.8.4.4 Cloudflare: 1.1.1.1 1.0.0.1
# Internal : Your intranet domain name resolution server
VAR_DNS_SERVER=("223.5.5.5" "223.6.6.6")
# Modify the SSHD server
VAR_SSHD_PORT=20221
# Modify the super user and normal user
# 建議將密碼設置最小長度10(最好設置為12以上,等保要求),數字、大寫字母、小寫字母、特殊符號,密碼包含三種及以上, 且無規律。
# 溫馨提示: 下面設置的密碼為初始密碼,在系統登陸后會要求更改。
VAR_SUPER_USER=root
VAR_SUPER_PASS=R2022.weiyigeek.top
# normal user
VAR_USER_NAME=ubuntu
VAR_USER_PASS=U2022.weiyigeek.top
# low privilege application users
VAR_APP_USER=app
VAR_APP_PASS=A2022.weiyigeek.top
# Modify the NTP server
VAR_NTP_SERVER=( "ntp.aliyun.com" "ntp.tencent.com" "192.168.10.254")
# Modify the timezone
VAR_TIMEZONE=Asia/Shanghai
# Modify Password policy
# 默認密碼最大使用為90天、過期前15天提示, 密碼最小長度為12
PASS_MIN_DAYS=1
PASS_MAX_DAYS=90
PASS_WARN_AGE=15
PASS_MIN_LEN=12
# 默認加密方式為SHA512, 重試次數為3, 新密碼與舊密碼至少有6個字符不同, 至少包含3種密碼類型,不限制密碼中包含大寫字母、小寫字母、數字、特殊符號的最大數量,記住三次舊密碼。
VAR_PASS_ENCRYPT=SHA512
VAR_PASS_RETRY=3
VAR_PASS_DIFOK=6
VAR_PASS_MINCLASS=3
VAR_PASS_UCREDIT=-1
VAR_PASS_LCREDIT=-1
VAR_PASS_DCREDIT=-1
VAR_PASS_OCREDIT=-1
VAR_PASS_REMEMBER=3
# 禁止沒有主目錄的用戶登錄
VAR_DEFAULT_HOME=no
# 刪除用戶時禁止同步刪除用戶組
VAR_USERGROUPS_ENAB=no
# 啟用成功登錄的日志記錄
VAR_LOG_OK_LOGINS=yes
# Modify file or Dirctory privilege policy
VAR_UMASK=022
# Modify user login failed count policy
# 默認在5分鐘之內登陸失敗次數超過6次將鎖定10分鐘,終端超時10分鐘
VAR_LOGIN_FAIL_COUNT=6
VAR_LOGIN_FAIL_INTERVAL=300
VAR_LOGIN_LOCK_TIME=600
VAR_LOGIN_TIMEOUT=300
# Modify history record count policy
VAR_HISTSIZE=128
# Modify firewall policy tcp or udp port .
VAR_ALLOW_PORT=("22,80,443,${VAR_SSHD_PORT}/tcp" "53/udp")
???? 腳本使用
- Step 1.上傳到需要加固的主機服務器中,此處我上傳到ubuntu用戶的家目錄。
OperatingSystem\Security> scp -r .\Ubuntu\ ubuntu@10.20.172.152:~
ubuntu@10.20.172.152\'s password:
Ubuntu22.04.conf 100% 2979 976.9KB/s 00:00
os-base.sh 100% 14KB 5.4MB/s 00:00
os-clean.sh 100% 2446 2.1MB/s 00:00
os-exceptions.sh 100% 2634 2.5MB/s 00:00
os-info.sh 100% 1169 1.3MB/s 00:00
os-manual.sh 100% 1860 2.0MB/s 00:00
os-network.sh 100% 3774 1.8MB/s 00:00
os-optimize.sh 100% 7752 3.7MB/s 00:00
os-security.sh 100% 23KB 5.7MB/s 00:00
os-service.sh 100% 3969 2.0MB/s 00:00
os-software.sh 100% 8007 3.3MB/s 00:00
Ubuntu22.04-InitializeReinforce.sh 100% 7989 5.0MB/s 00:00
- Step 2.登陸服務器并切換到root用戶, 查看
/home/ubuntu目錄下上傳的加固版本。
$ ssh -p 22 ubuntu@10.20.172.152
ubuntu@Ubuntu-Security:~$ tree Ubuntu/
Ubuntu/
├── Readme.assets
│ ├── image-20220823143235577.png
│ └── image-20220823143354742.png
├── Readme.md
├── Ubuntu22.04-InitializeReinforce.sh
├── config
│ └── Ubuntu22.04.conf
├── example
│ └── 22.04
│ ├── 00-custom-header
│ ├── common-auth
│ ├── common-password
│ ├── issue
│ ├── issue.net
│ ├── login.defs
│ ├── profile
│ ├── resolved.conf
│ ├── sshd_config
│ └── su
└── scripts
├── os-base.sh
├── os-clean.sh
├── os-exceptions.sh
├── os-info.sh
├── os-manual.sh
├── os-network.sh
├── os-optimize.sh
├── os-security.sh
├── os-service.sh
└── os-software.sh
ubuntu@Ubuntu-Security:~$ sudo -i
- Step 3.切換root用戶后進入
/home/ubuntu/Ubuntu,安全加固腳本存放目錄,首先將所有的sh文件賦予可執行去那些,其次需要在Ubuntu22.04.conf中進行相應配置,最后運行Ubuntu22.04-InitializeReinforce.sh --start即可,最后等待系統重啟即可。
cd /home/ubuntu/Ubuntu
chmod +x -R *
Ubuntu22.04-InitializeReinforce.sh --start

- Step 4.中途請根據需求輸入Y/N,然后等待重啟即可,在重啟后請注意sshd服務端口更改為20221所以此時你需要指定ssh連接端口。
ssh -p 20221 ubuntu@10.20.172.152 # Ubuntu22.04.conf 定義的 ubuntu 初始化密碼,登陸后會提示你進行更改。
su - root # 只能有ubuntu用戶切換到root用戶,其它低權限以及app用戶無法通過su進行用戶切換

溫馨提示: 如果執行到密碼更新策略時,選擇輸入了(N) 否將不會更新其在Ubuntu22.04.conf腳本中定義的密碼。
溫馨提示:腳本中默認root密碼為R2022.weiyigeek.top。
溫馨提示: 防火墻策略只開放了80,443,22,20221等端口。
??? 腳本視頻演示:
溫馨提示: 點擊上方圖像進行觀看視頻。
原文地址: https://blog.weiyigeek.top/2022/8-13-683.html
本文至此完畢,更多技術文章,盡情期待下一章節!
【WeiyiGeek Blog 個人博客 - 為了能到遠方,腳下的每一步都不能少 】
歡迎各位志同道合的朋友一起學習交流【點擊加入交流群】,如文章有誤請在下方留下您寶貴的經驗知識!
作者主頁: 【 https://weiyigeek.top】
博客地址: 【 https://blog.weiyigeek.top 】

專欄書寫不易,如果您覺得這個專欄還不錯的,請給這篇專欄 【點個贊、投個幣、收個藏、關個注,轉個發,留個言】(人間六大情),這將對我的肯定,謝謝!。
-
echo "【點個贊】,動動你那粗壯的拇指或者芊芊玉手,親!"
-
printf("%s", "【投個幣】,萬水千山總是情,投個硬幣行不行,親!")
-
fmt.Printf("【收個藏】,閱后即焚不吃灰,親!")
-
console.info("【轉個發】,讓更多的志同道合的朋友一起學習交流,親!")
-
System.out.println("【關個注】,后續瀏覽查看不迷路喲,親!")
-
cout << "【留個言】,文章寫得好不好、有沒有錯誤,一定要留言喲,親! " << endl;

更多網絡安全、系統運維、應用開發、物聯網實踐、網絡工程、全棧文章,盡在 https://blog.weiyigeek.top 之中,謝謝各位看又支持!
本文來自博客園,作者:全棧工程師修煉指南,轉載請注明原文鏈接:http://www.rzrgm.cn/WeiyiGeek/p/16626884.html。
歡迎關注博主【WeiyiGeek】公眾號以及【極客全棧修煉】小程序

Ubuntu 22.04 LTS 是Canonical于2022年4月21日發布的操作系統,代號為Jammy Jellyfish(果醬水母), 其采用GNOME電源配置文件和流線型工作空間過渡,提高優化圖形驅動程序上的桌面幀速率,使用新的加密算法遷移到OpenSSL v3以提高安全性,并且為內存安全的系統級編程添加了Rus。
現在 Ubuntu 推出了22.04 , 想到原來每次都需要手動一臺一臺的進行主機安全加固以符合等保要求,所以了節約工作時間提高工作效率,有更多時間進行學習進步,則需要將將我們公司所使用的系統基線鏡像進行更新迭代,編寫適用于ubuntu 22.04系統的安全加固腳本,并且總結此篇文章并在文章末尾附上自動化安全加固腳本,謝謝大家支持。
此處我依據在我從前編寫的 Ubuntu 20.04 系統安全加固腳本中對其根據最新的22.04版本進行更新了等保相關規定策略,以及更新適用最新版本的 Ubuntu,針對腳本進行結構調整,更加方便大家一起參參與維護,若腳本有Bug請大家發送到我的郵箱 master@weiyigeek.top。

浙公網安備 33010602011771號