歡迎關(guān)注「全棧工程師修煉指南」公眾號(hào)
點(diǎn)擊 ???下方卡片?即可關(guān)注我喲!
設(shè)為「星標(biāo)?」每天帶你?基礎(chǔ)入門?到?進(jìn)階實(shí)踐?再到?放棄學(xué)習(xí)!
專注?企業(yè)運(yùn)維實(shí)踐、網(wǎng)絡(luò)安全、系統(tǒng)運(yùn)維、應(yīng)用開發(fā)、物聯(lián)網(wǎng)實(shí)戰(zhàn)、全棧文章?等知識(shí)分享
“??花開堪折直須折,莫待無花空折枝。?”
作者主頁:[?https://www.weiyigeek.top?]??
博客:[?https://blog.weiyigeek.top?]
作者<安全開發(fā)運(yùn)維>答疑交流群,回復(fù)【學(xué)習(xí)交流群】即可加入
本章目錄:
本文為作者原創(chuàng)文章,為尊重作者勞動(dòng)成果禁止非授權(quán)轉(zhuǎn)載,若需轉(zhuǎn)載請?jiān)凇救珬9こ處熜逕捴改稀抗娞?hào)留言,或者發(fā)送郵件到 [master@weiyigeek.top] 中我將及時(shí)回復(fù)。
免責(zé)申明:本文分享旨在給網(wǎng)絡(luò)安全從業(yè)人員、網(wǎng)站開發(fā)人員以及運(yùn)維管理人員在日常工作中進(jìn)行安全攻防測試以及防范惡意攻擊, 請勿惡意使用下面介紹技術(shù)進(jìn)行非法網(wǎng)絡(luò)攻擊,作者不為此承擔(dān)任何責(zé)任,所有滲透都需獲取授權(quán),謹(jǐn)防從入門到入獄!
【中華人民共和國網(wǎng)絡(luò)安全法】: http://www.npc.gov.cn/npc/c30834/201611/270b43e8b35e4f7ea98502b6f0e26f8a.shtml
0x00 前言簡述
描述: 千呼萬喚始出來,網(wǎng)安等保系列之Linux系統(tǒng)主機(jī)安全加固文章又更新了,由于作者的【安全開發(fā)運(yùn)維】運(yùn)維學(xué)習(xí)答疑群(PS: 公眾號(hào)回復(fù)【微信交流群】即可進(jìn)入喲
)的小伙伴們企業(yè)中需要針對CentOS8服務(wù)器系統(tǒng)進(jìn)行安全加固,以通過等保3級的主機(jī)安全合規(guī)檢查,作為群主大大的我必須響應(yīng)群員們的號(hào)召,在工作之余,邊帶娃,邊編寫該系統(tǒng)加固腳本, 遂在昨日完成該腳本的編寫以及驗(yàn)證,可謂是真不容易呀。
原文地址:網(wǎng)安等保 | 主機(jī)安全之CentOS8服務(wù)器配置優(yōu)化與安全加固基線文檔腳本分享當(dāng)前企業(yè)中還有大量的服務(wù)器上使用了CentOS8服務(wù)器操作系統(tǒng),為滿足于企業(yè)中需要針對CentOS8系統(tǒng)進(jìn)行安全加固的道友,文章腳本中實(shí)現(xiàn)了CentOS8 系統(tǒng)基礎(chǔ)運(yùn)維配)、安全加固配置、系統(tǒng)優(yōu)化配置等方法,若不全之處也希望大佬們多多指正。https://mp.weixin.qq.com/s?__biz=MzIwNDA3ODg3OQ==&mid=2648002806&idx=1&sn=a449482c593bfa8f3915f1cd654095ca&chksm=8ee45a86b993d390cd9bd01ecc51ea4a82fd1395308fd295d15f1b7b08da75b024e740a09613#rd
當(dāng)前由于?CentOS Linux/Stream 8
?即將停止更新維護(hù)(EOL)了,作者已經(jīng)在2021年底基本將企業(yè)中CentOS服務(wù)器上的業(yè)務(wù)進(jìn)行遷移,我是遷移到了Ubuntu和KylinOS 銀河麒麟國產(chǎn)Linux系統(tǒng)之上, 當(dāng)然網(wǎng)上也有其他遷移方案,此處不再累述。
雖然 CentOS 8 生命周期即將結(jié)束了,但是企業(yè)中還是有大量的服務(wù)器機(jī)器上使用了CentOS8服務(wù)器操作系統(tǒng),所以本文也滿足于企業(yè)中需要針對CentOS8系統(tǒng)進(jìn)行安全加固的道友,也幫助Liunx初學(xué)者快速配置一個(gè)安全的CentOS8服務(wù)器(加固腳本也是值得學(xué)習(xí)借鑒的喲),文章腳本中實(shí)現(xiàn)了CentOS8 系統(tǒng)基礎(chǔ)運(yùn)維配、安全加固配置、系統(tǒng)優(yōu)化配置等方法,若不全之處也希望大佬們多多指正。
請?jiān)凇?code>全棧工程師修煉指南】公眾號(hào)中回復(fù)【CentOS8安全加固
】或【10006
】關(guān)鍵字,獲取演示視頻、CentOS8安全加固文檔和腳本(本文末尾獲取下載鏈接)。
溫馨提示: 此處為了防止伸手黨,以及尊重作者編寫腳本及實(shí)踐成果,象征性的設(shè)置為收費(fèi)合集(#網(wǎng)絡(luò)安全攻防等保?點(diǎn)擊查看?),付費(fèi)后可直接聯(lián)系作者發(fā)加固腳本或者文章末尾獲取下載鏈接,希望大家理解支持!
此處作者我,已經(jīng)將其寫成一個(gè)Shell項(xiàng)目,各位看官可以直接運(yùn)行加固,大大的節(jié)省了我們運(yùn)維人的時(shí)間,最后我會(huì)將CentOS8安全加固shell腳本,下載鏈接放在文章末尾, 以供各位看友使用實(shí)踐參考,若有錯(cuò)誤歡迎在【全棧工程師修煉指南】公眾號(hào)留言。
## 名稱: Start::Help
## 用途:程序執(zhí)行幫助命令
## 參數(shù): 無
Start::Help ()
{
echo -e "\nUsage: $0 [--start ] [--network] [--function] [--clear] [--version] [--help]"
echo -e "Option: "
echo -e " --start Start System initialization and security reinforcement."
echo -e " --network Configure the system network and DNS resolution server."
echo -e " --function PCall the specified shell function."
echo -e " --clear Clear all system logs, cache and backup files."
echo -e " --info Print System information and exit."
echo -e " --version Print version and exit."
echo -e " --help Print help and exit."
echo -e "\nMail bug reports or suggestions to <master@weiyigeek.top> or pull request (pr)."
echo -e "current version : ${VAR_VERSION}"
log::warning "溫馨提示:使用前先請配置機(jī)器上網(wǎng)環(huán)境及其在config文件夾中的CentOS8.conf配置進(jìn)行對應(yīng)配置."
exit 0
}
此加固腳本的使用方法,請參照演示視頻:
# 常用命令示例:
# 進(jìn)行自動(dòng)安全加固
./CentOS8-InitializeReinforce --start
# 使用function參數(shù)指定優(yōu)化加固
./CentOS8-InitializeReinforce --function
# 使用info參數(shù)打印系統(tǒng)相關(guān)信息
./CentOS8-InitializeReinforce --info
在實(shí)踐前,也請大家多多支持我的【#網(wǎng)絡(luò)安全攻防等保(點(diǎn)擊查看)】付費(fèi)合集,后續(xù)將推出更多網(wǎng)安入門學(xué)習(xí)、企業(yè)安全實(shí)踐與漏洞挖掘?qū)嵺`文章, 也將持續(xù)更新CentOS7安全加固實(shí)踐文章以及安全加固腳本。
溫馨提示: 針對于 Ubuntu 22.04 以及 KylinOS V10 服務(wù)器操作系統(tǒng),作者都編寫對應(yīng)安全加固實(shí)踐文章,有想了解的童鞋可以訪問如下文章鏈接:
-
網(wǎng)安等保-主機(jī)安全測評之Linux服務(wù)器Ubuntu-22.04-LTS操作系統(tǒng)安全加固制作基線系統(tǒng)腳本分享與實(shí)踐
-
網(wǎng)安等保-國產(chǎn)Linux操作系統(tǒng)銀河麒麟KylinOS-V10SP3常規(guī)配置、系統(tǒng)優(yōu)化與安全加固基線實(shí)踐文檔
好了廢話不多說,此處我將本文其分為三個(gè)章節(jié),沒小節(jié)包含了配置Shell腳本片段:
第一個(gè)章節(jié)主要針對 CentOS8 系統(tǒng)初始化運(yùn)維配置實(shí)踐,
第二個(gè)章節(jié)主要針對 CentOS8 系統(tǒng)內(nèi)核參數(shù)及服務(wù)優(yōu)化實(shí)踐,
第三個(gè)章節(jié)主要針對 CentOS8 系統(tǒng)安全加固實(shí)踐,
0x01 主機(jī)系統(tǒng)配置
重要提示:?在線上生產(chǎn)環(huán)境中,進(jìn)行系統(tǒng)安全加固操作時(shí),請注意備份操作文件,以便于異常時(shí)及時(shí)回退。
重要提示:?在線上生產(chǎn)環(huán)境中,進(jìn)行系統(tǒng)安全加固操作時(shí),請注意備份操作文件,以便于異常時(shí)及時(shí)回退。
重要提示:?在線上生產(chǎn)環(huán)境中,進(jìn)行系統(tǒng)安全加固操作時(shí),請注意備份操作文件,以便于異常時(shí)及時(shí)回退。
1.主機(jī)IP和網(wǎng)關(guān)地址設(shè)置
描述: 一臺(tái)新安裝的主機(jī)必須配置IP地址才能方便我們通過遠(yuǎn)程連接,所以第一步肯定是把網(wǎng)絡(luò)打通,主要根據(jù)配置的IP地址與網(wǎng)絡(luò)地址環(huán)境變量進(jìn)行對應(yīng)設(shè)置,例如下述部分腳本片段。
示例片段:
# Modify the IP/MASK and Gateway
VAR_NETINTERFACE=ens192
VAR_IP=192.168.4.201/24
VAR_GATEWAY=192.168.4.1
cp -a /etc/sysconfig/network-scripts/* /tmp
if [ ! -f /opt/init/ ];then
mkdir -vp /opt/init/
sudo tee /opt/init/network.sh <<'EOF'
#!/bin/bash
# @Author: WeiyiGeek
# @Description: Configure CentOS Linux/Stream 8 Server Network
# @E-mail: master@weiyigeek.top
# @Blog: https://www.weiyigeek.top
if [[ $# -lt 4 ]];then
echo "Usage: $0 NetInterface IP/NETMASK GATEWAY DNS"
echo "Example: $0 ens192 192.168.12.12/24 192.168.12.1 223.6.6.6"
echo "@Author: WeiyiGeek"
echo "@Blog: https://blog.weiyigeek.top"
exit
fi
echo "Setting Network interface card: ${1}, IP: ${2} , GATEWAY: ${3}"
CURRENT_IP=$(hostname -I | cut -f 1 -d " ")
CURRENT_GATEWAY=$(hostname -I | cut -f 1,2,3,4 -d ".")
CURRENT_FILE=/etc/sysconfig/network-scripts/ifcfg-${1}
CONFIG_IP=${2%%/*}
CONFIG_PREFIX=${2##*/}
echo "Original Network info: IP: ${CURRENT_IP} , GATEWAY: ${CURRENT_GATEWAY}"
echo "Setting Network interface card: ${1}, IP/NETMASK: ${2} , GATEWAY: ${3}, DNS: ${4}"
if [[ -f ${CURRENT_FILE} ]];then
# 已存在網(wǎng)卡配置文件的情況下
egrep -q "^\s*ONBOOT=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*ONBOOT=.*$/ONBOOT=yes/" ${CURRENT_FILE}|| echo "ONBOOT=yes" >> ${CURRENT_FILE}
egrep -q "^\s*BOOTPROTO=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*BOOTPROTO=.*$/BOOTPROTO=static/" ${CURRENT_FILE}|| echo "BOOTPROTO=static" >> ${CURRENT_FILE}
egrep -q "^\s*IPADDR=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*IPADDR=.*$/IPADDR=${CONFIG_IP}/" ${CURRENT_FILE}|| echo "IPADDR=${CONFIG_IP}" >> ${CURRENT_FILE}
egrep -q "^\s*PREFIX=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*PREFIX=.*$/PREFIX=${CONFIG_PREFIX}/" ${CURRENT_FILE}|| echo "PREFIX=${CONFIG_PREFIX}" >> ${CURRENT_FILE}
egrep -q "^\s*GATEWAY=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*GATEWAY=.*$/GATEWAY=${3}/" ${CURRENT_FILE}|| echo "GATEWAY=${3}" >> ${CURRENT_FILE}
egrep -q "^\s*DNS1=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*DNS1=.*$/DNS1=${4}/" ${CURRENT_FILE}|| echo "DNS1=${4}" >> ${CURRENT_FILE}
else
nmcli dev show ${1}
nmcli conn add connection.id ${1}-staic connection.interface-name ${1} connection.autoconnect yes type Ethernet ifname ${1} ipv4.method manual ipv4.address ${2} ipv4.gateway ${3} ipv4.dns ${4} ipv4.ignore-auto-dns true
fi
sudo nmcli c reload
read -t 5 -p "Heavy load network card, It is recommended to enter N during initialization (Y/N): " VERTIFY
if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
sudo nmcli c up ${1}
sudo nmcli d reapply ${1}
else
echo "Please reload the network card manually, run sudo nmcli d reapply ${1}."
fi
EOF
# 權(quán)限賦予
sudo chmod +x /opt/init/network.sh
/opt/init/network.sh ${VAR_NETINTERFACE} ${VAR_IP} ${VAR_GATEWAY} ${VAR_DNS_SERVER}
2.主機(jī)DNS服務(wù)器地址配置
描述: 在完成系統(tǒng)主機(jī)的IP地址的配置后,便需要為主機(jī)配置私有DNS服務(wù)器
或者公共的DNS服務(wù)器
,以便解析內(nèi)部或外部域名。
示例片段:
# Show Script Execute result (Y/N)
VAR_VERIFY_RESULT=Y
# 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
# Baidu: 114.114.114.114
# Internal : Your intranet domain name resolution server
VAR_DNS_SERVER=( "223.5.5.5" "114.114.114.114" "192.168.4.254")
cp /etc/systemd/resolved.conf /tmp
local flag
# 此處配置的是阿里云IPV4 DNS與阿里云IPV6 DNS
sed -i -e "s/^#FallbackDNS=.*/FallbackDNS=223.6.6.6 2400:3200::1 2400:3200:baba::1/" -e "s/^#DNSSEC=.*/DNSSEC=allow-downgrade/" -e "s/^#DNSOverTLS=.*/DNSOverTLS=opportunistic/" /etc/systemd/resolved.conf
# 此處配置DNSPod 以及 阿里云 DNS
for dns in ${VAR_DNS_SERVER[@]};do
grep -q "${dns}" /etc/systemd/resolved.conf
if [ $? != 0 ];then
echo -e "\033[32mnameserver ${dns} \033[0m]"
sed -i "/#DNS=/i DNS=${dns}" /etc/systemd/resolved.conf;
fi
done
# 重啟相關(guān)服務(wù)
systemctl restart systemd-resolved && systemctl enable systemd-resolved
# 創(chuàng)建解析文件映射
find /etc/resolv.conf -delete
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
echo "/etc/resolv.conf"
grep -Ev '^#|^$' /etc/resolv.conf | uniq
echo "/etc/systemd/resolved.conf"
grep -Ev '^#|^$' /etc/systemd/resolved.conf | uniq
fi
3.主機(jī)系統(tǒng)軟件鏡像源配置
描述: 使用國外的操作系統(tǒng),例如CentOS、Ubuntu、Debian、Alpine
等操作系統(tǒng),通常為了加快Linux系統(tǒng)中下載安裝軟件的速度,我們是需要配置軟件鏡像源,但此處為了防止小伙伴們更改過該鏡像源,我也將各發(fā)行版鏡像源配置羅列出來。
示例片段:
# 1.獲取操作系統(tǒng)發(fā)行版
local release
# release=$(grep -e "^VERSION=" /etc/os-release | cut -f 2 -d "=" | tr -d '[:punct:][:space:]')
release=$(cat /etc/redhat-release)
echo -e "\033[32m[${COUNT}] ${release} \033[0m"
# 2.驗(yàn)證CentOS8鏡像倉庫文件,由于其發(fā)行版本有差異此處將Stream版本以及原始版本都進(jìn)行驗(yàn)證。
# 注意:在2022年1月31日,CentOS 團(tuán)隊(duì)從官方鏡像中移除CentOS8的所有包,針對過期源設(shè)置如下。
# 直接使用yum下載會(huì)出現(xiàn)ERROR: Cannot prepare internal mirrorlist: No URLs in mirrorlist
# 故需要設(shè)置yum源,否則無法提供下載。
# CentOS 過期源(centos-vault):https://developer.aliyun.com/mirror/centos-vault
# CentOS arm源(centos-altarch):https://developer.aliyun.com/mirror/centos-altarch/
# CentOS Stream源(centos-stream):https://developer.aliyun.com/mirror/centos-stream
# CentOS debuginfo源(centos-debuginfo):https://developer.aliyun.com/mirror/centos-debuginfo/
local repo_name
if [ -f /etc/yum.repos.d/CentOS-Stream-BaseOS.repo ];then
repo_name="CentOS-Stream-BaseOS.repo"
echo -e "\033[32m[${COUNT}] 備份 /etc/yum.repos.d/${repo_name} 文件中...... \033[0m"
# rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
cp /etc/yum.repos.d/${repo_name} ${BACKUPDIR}
sed -i -e 's|mirrorlist=|#mirrorlist=|g' -e 's|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-*
fi
if [ -f /etc/yum.repos.d/CentOS-Base.repo ];then
repo_name="CentOS-Base.repo"
echo -e "\033[32m[${COUNT}] 備份 /etc/yum.repos.d/${repo_name} 文件中...... \033[0m"
rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
cp /etc/yum.repos.d/${repo_name}.bak ${BACKUPDIR}
# centos8(centos8官方源已下線,建議切換centos-vault源)
curl -o /etc/yum.repos.d/${repo_name} https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 刪除"mirrors.cloud.aliyuncs.com" 及 "mirrors.aliyuncs.com" 字符串所在的行.
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/${repo_name}
# sed -i 's/releasever\//releasever-stream\//g' /etc/yum.repos.d/${repo_name}
fi
# 清理緩存并創(chuàng)建倉庫元數(shù)據(jù)
sudo dnf clean all && sudo yum makecache
# Centos 8 - Epel 阿里云鏡像快速配置
yum install -y epel-release
sed -i -e 's|metalink=https://mirrors.fedoraproject.org|#metalink=https://mirrors.fedoraproject.org|g' -e 's|#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/epel.repo
dnf repolist epel -v
read -t ${VAR_VERIFY_TIMEOUT} -p "Please input, Perform system software update and upgrade. (Y/N) : " VERIFY
if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
sudo dnf update -y && sudo dnf upgrade -y
fi
PS: 在2022年1月31日,CentOS 團(tuán)隊(duì)從官方鏡像中移除CentOS8的所有包, 所以網(wǎng)上設(shè)置CentOS8的鏡像源地址有變化,建議通過鏡像站獲取,例如 阿里云的鏡像地址:https://developer.aliyun.com/mirror/centos文章來源:http://www.zghlxwxcb.cn/news/detail-757614.html
完整原文地址:網(wǎng)安等保 | 主機(jī)安全之CentOS8服務(wù)器配置優(yōu)化與安全加固基線文檔腳本分享文章來源地址http://www.zghlxwxcb.cn/news/detail-757614.html
到了這里,關(guān)于網(wǎng)安等保 | 主機(jī)安全之CentOS8服務(wù)器配置優(yōu)化與安全加固基線文檔腳本分享的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!