<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      網安等保-國產Linux操作系統銀河麒麟KylinOS-V10SP3常規配置、系統優化與安全加固基線實踐文檔

      [ 點擊 ?? 關注「 全棧工程師修煉指南」公眾號 ]

      設為「?? 星標」帶你從基礎入門全棧實踐 再到 放棄學習
      涉及 網絡安全運維、應用開發、物聯網IOT、學習路徑 、個人感悟 等知識分享。

      希望各位看友多多支持【關注、點贊、評論、收藏、投幣】,助力每一個夢想。

      WeiyiGeek Blog's - 花開堪折直須折,莫待無花空折枝 】
      作者主頁: 【 https://weiyigeek.top
      博客地址: 【 https://blog.weiyigeek.top 】
      作者答疑學習交流群:歡迎各位志同道合的朋友一起學習交流【點擊 ?? 加入交流群】, 或者關注公眾號回復【學習交流群】。


      • 3.遠程登錄sshd服務安全策略配置
      • 4.系統賬戶安全策略配置
      • 5.系統賬戶密碼更改及過期策略配置
      • 6.系統用戶密碼復雜性策略配置
      • 7.系統用戶登錄失敗策略配置
      • 8.系統用戶su/sudo權限策略配置
      • 8.系統文件權限策略配置
      • 9.系統grub引導安全策略配置
      • 10.系統用戶歷史命令記錄策略配置
      • 11.系統安全日志事件記錄策略配置
      • 12.系統審計規則安全策略配置
      • 13.配置禁用系統非必須別名策略
      • 14.配置禁用桌面系統策略
      • 15.配置禁用Ctrl+Alt+Del重啟系統
      • 16.配置rm刪除回收站策略
      • 17.配置清除臨時文件策略
      • 18.配置系統防火墻策略
      • 19.配置重啟服務器策略

      0x00 前言簡述

      描述: 隨著國家要求各政府部門及事企業單位服務器系統國產化,越來越多的的企業單位逐步引進國產化Linux操作系統(大趨勢),在眾多國產操作系統中銀河麒麟(KylinOS)、中科方德、統信UOS,此三家持續版本迭代超15年的其生態市場及占有率最高, 除此之外紅旗Linux、共創Linux、凝思磐石、新支點、深度Linux、Start OS、思普操作系統、云針OS、鴻蒙OS、YunOS、OpenCloudOS等國產操作系統。

      此處由于我們企業中是試用的銀河麒麟(KylinOS)V10 SP3 版本的國產系統,為了試用該系統是否可以承載現有業務,以及滿足網絡安全等保2.0主機安全配置要求,遂針對該系統進行安全加固及常規初始化操作,設置安全基線鏡像,以保證基礎業務運行環境安全。

      這里作者就不在針對銀河麒麟(KylinOS)的國產系統進行詳細介紹與下載安裝講解,有興趣的朋友可以參照【1.國產銀河麒麟V10服務器操作系統基礎知識與安裝實踐】( https://blog.weiyigeek.top/2023/3-21-725.html ) 此文。

      好的廢話不多說,此處我將其分為三個章節,第一個章節是初始化運維常規配置,第二個章節是系統內核優化,第三個章節安全加固,此處我已經將其寫成shell腳本可以直接運行加固大大的節省了我們運維人的時間,最后我會將安全加固shell腳本(部分適用于CentOS7操作系統)放在文章末尾, 以供各位看友使用實踐參考,若有錯誤歡迎在【全棧工程師修煉指南】公眾號留言。

      若需觀看視頻實踐演示,請在【全棧工程師修煉指南】公眾號中回復【kylinos安全加固】或【10002】關鍵字獲得腳本下載鏈接。

      溫馨提示: 在進行操作時請注意備份操作文件,以便于異常時及時回退。

      溫馨提示: 此處為了防止伸手黨,以及尊重作者編寫腳本及實踐成果,象征性的設置為?收費文章,希望大家理解支持!

      首發地址: https://mp.weixin.qq.com/s/eBF_Q-WkiZHKGdEG1MODNQ


      0x01 常規配置

      1.主機IP地址與網關設置

      描述: 一臺新安裝的主機必須配置IP地址才能方便我們通過遠程連接,所以第一步肯定是把網絡打通,主要根據配置的IP地址與網絡地址環境變量進行對應設置,例如下述部分腳本片段。

      # Modify the IP/MASK and Gateway
      VAR_NETINTERFACE=ens192
      VAR_IP=192.168.4.201/24
      VAR_GATEWAY=192.168.4.1
      
      if [ ! -f /opt/init/ ];then 
        mkdir -vp /opt/init/
      sudo tee /opt/init/network.sh <<'EOF'
      #!/bin/bash
      # @Author: WeiyiGeek
      # @Description: Configure KylinOS / CentOS Linux 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
        # 已存在網卡配置文件的情況下
        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
      
      # 權限賦予
      sudo chmod +x /opt/init/network.sh
      /opt/init/network.sh ${VAR_NETINTERFACE} ${VAR_IP} ${VAR_GATEWAY} ${VAR_DNS_SERVER}
      

      2.主機DNS配置

      描述: 完成IP地址的配置后,我便需要為主機配置私有DNS或者公共的DNS,以便可以解析外部域名。

      # 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")
      
      local flag
      # 此處配置的是百度IPV4 DNS與阿里云IPV6 DNS
      sed -i -e "s/^#FallbackDNS=.*/FallbackDNS=114.114.114.114 2400:3200::1 2400:3200:baba::1/" -e "s/^#DNSSEC=.*/DNSSEC=allow-downgrade/" -e "s/^#DNSOverTLS=.*/DNSOverTLS=opportunistic/" /etc/systemd/resolved.conf
      
      for dns in ${VAR_DNS_SERVER[@]};do 
        grep -q "${dns}" /etc/systemd/resolved.conf 
        if [ $? != 0 ];then  
          echo "nameserver ${dns}"
          sed -i "/#DNS=/i DNS=${dns}" /etc/systemd/resolved.conf;
        fi
      done
      
      systemctl restart systemd-resolved && systemctl enable systemd-resolved
      
      find /etc/resolv.conf -delete
      ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
      
      if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
        grep -Ev '^#|^$' /etc/resolv.conf | uniq
        echo
        grep -Ev '^#|^$' /etc/systemd/resolved.conf | uniq
      fi
      

      3.鏡像源配置

      描述: 使用國外的操作系統,例如CentOS、Ubuntu、Debian、Alpine等操作系統,通常為了加快Linux系統中下載安裝軟件的速度,我們是需要配置軟件鏡像源,此處由于我們是國產操作系統,其軟件更新源也肯定是在國內,所以通常無需調整。

      但此處為了防止小伙伴們更改過該鏡像源,我也將各發行版鏡像源配置羅列出來。

       local release
        cp /etc/yum.repos.d/kylin_x86_64.repo ${BACKUPDIR}
        # 1.根據主機發行版設置
        # (Tercel) 版本是 麒麟 V10 SP1 版本,
        # (Sword)  版本是 麒麟 V10 SP2 版本,
        # (Lance)  版本是 麒麟 V10 SP3 版本,
        release=$(grep -e "^VERSION=" /etc/os-release | cut -f 2 -d "=" | tr -d '[:punct:][:space:]')
      
      if [ ${release} == "V10Lance" ];then
      sudo tee /etc/yum.repos.d/kylin_x86_64.repo <<'EOF'
      ### Kylin Linux Advanced Server 10 (SP3) - os repo ###
      [ks10-adv-os]
      name = Kylin Linux Advanced Server 10 - Os
      baseurl = https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/base/$basearch/
      gpgcheck = 1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
      enabled = 1
      
      [ks10-adv-updates]
      name = Kylin Linux Advanced Server 10 - Updates
      baseurl = https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/updates/$basearch/
      gpgcheck = 1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
      enabled = 1
      
      [ks10-adv-addons]
      name = Kylin Linux Advanced Server 10 - Addons
      baseurl = https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/addons/$basearch/
      gpgcheck = 1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
      enabled = 0
      EOF
        # echo "7" > /etc/yum/vars/centos_version
        # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        elif [ ${release} == "V10Sword" ];then
          echo "暫未使用麒麟 V10 Sword SP2 版本,請自行百度搜索,鏡像源!"
        elif [ ${release} == "V10Tercel" ];then
          echo "暫未使用麒麟 V10 Tercel SP1 版本,請自行百度搜索,鏡像源!"
        else
          echo "暫未使用麒麟除 V10 以外的系統版本,請自行百度搜索,鏡像源!"
        fi
        sudo yum clean all -y && sudo yum makecache
      
        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 yum update -y && sudo yum upgrade -y
        fi
      

      PS: 雖然銀河麒麟(KylinOS)V10 SP3 系統中可以使用CentOS7的鏡像源,但是并不建議這樣否則在鏡像軟件更新安裝時,將會出現莫名錯誤。


      4.常規運維工具安裝及系統升級

      描述: 完成軟件鏡像源配置后我們便可進行系統更新以及,常規的運維工具安裝了。

      # 1.系統更新
      echo "[-] 系統軟件源更新."
      sudo yum update && sudo yum upgrade -y && dnf repolist
      
      # 2.安裝系統所需的常規軟件
      echo "[-] 安裝系統所需的常規軟件."
      sudo dnf install -y gcc make
      sudo dnf install -y nano vim git unzip unrar ftp wget ntpdate dos2unix net-tools tree htop sysstat psmisc bash-completion jq rpcbind dialog nfs-utils 
      
      # 補充:代理方式進行更新
      # echo "proxy=http://127.0.0.1:8080/" >> /etc/yum.conf
      # sudo yum clean all -y && sudo yum update -y && sudo yum upgrade -y
      # sudo yum install -y 軟件包
      

      5.系統時間時區同步配置

      描述: 更新系統及對應工具后,我們需要針對系統時間時區做同步配置,此步驟非常重要往往會影響應用程序時間,建議在服務器中必須進行配置。

      # Show  Script Execute result (Y/N)
      VAR_VERIFY_RESULT=Y
      # Modify the NTP server 
      # PS: "192.168.4.254" 為內部NTP服務器,若需要搭建NTP服務器請參考,此篇文章: https://blog.weiyigeek.top/2020/1-29-112.html
      VAR_NTP_SERVER=( "ntp.aliyun.com" "ntp.tencent.com"  "192.168.10.254")
      
      # 安裝配置 chrony 時間同步服務器
      # 方式1.安裝 Chrony 客戶端配置
      if [[ $(rpm -qa | grep -c "chrony") -eq 0 ]];then
        dnf install -y chrony
      fi
      cp /etc/chrony.conf ${BACKUPDIR}
      grep -E -q "^server" /etc/chrony.conf | sed -i 's/^server/# server/g' /etc/chrony.conf 
      grep -E -q "^pool" /etc/chrony.conf | sed -i 's/^pool/# pool/g' /etc/chrony.conf 
      for ntp in ${VAR_NTP_SERVER[@]};do 
        echo "ntp server => ${ntp}"
        if [[ ${ntp} =~ "ntp" ]];then
          echo "pool ${ntp} iburst maxsources 4" >> /etc/chrony.conf;
        else
          echo "pool ${ntp} iburst maxsources 1" >> /etc/chrony.conf;
        fi
      done
      systemctl enable chronyd.service && systemctl restart chronyd.service
      
      # chrony.conf 配置示例
      # sudo tee /etc/chrony.conf <<'EOF'
      # confdir /etc/conf.d
      # server ntp.aliyun.com iburst maxsources 4
      # server ntp.tencent.com iburst maxsources 4
      # pool 192.168.10.254 iburst maxsources 1
      # pool 192.168.12.254 iburst maxsources 2
      # pool 192.168.4.254 iburst maxsources 3
      # sourcedir /run/chrony-dhcp
      # sourcedir /etc/sources.d
      # keyfile /etc/chrony.keys
      # driftfile /var/lib/chrony/chrony.drift
      # ntsdumpdir /var/lib/chrony
      # logdir /var/log/chrony
      # maxupdateskew 100.0
      # rtcsync
      # makestep 1 3
      # leapsectz right/UTC
      # EOF
      
      # 方式2.使用 ntpdate 工具定時同步
      # sudo ntpdate 192.168.10.254 || sudo ntpdate 192.168.12.254 || sudo ntpdate ntp1.aliyun.com
      
      # 方式3.使用系統 systemd-timesyncd
      # echo 'NTP=192.168.10.254 192.168.4.254' >> /etc/systemd/timesyncd.conf
      # echo 'FallbackNTP=ntp.aliyun.com' >> /etc/systemd/timesyncd.conf
      # systemctl restart systemd-timesyncd.service
      if [[ ${VAR_VERIFY_RESULT} == "Y" ]];then systemctl status chronyd.service -l --no-pager;fi
      

      主機時間同步校準與時區設置

      # Modify the timezone
      VAR_TIMEZONE=Asia/Shanghai
      
      # 1.時區設置
      sudo timedatectl set-timezone ${VAR_TIMEZONE}
      # sudo dpkg-reconfigure tzdata  # 修改確認
      # sudo bash -c "echo 'Asia/Shanghai' > /etc/timezone" # 與上一條命令一樣
      
      # 2.將當前的 UTC 時間寫入硬件時鐘 (硬件時間默認為UTC)
      sudo timedatectl set-local-rtc 0
      
      # 3.啟用NTP時間同步:
      sudo timedatectl set-ntp yes
      
      # 4.校準時間服務器-時間同步(推薦使用chronyc進行平滑同步)
      sudo chronyc tracking
      
      # 5.手動校準-強制更新時間
      # chronyc -a makestep
      
      # 6.系統時鐘同步硬件時鐘
      # sudo hwclock --systohc
      sudo hwclock -w
      echo "設置時間同步與時區后: $(date)"
      
      # 7.重啟依賴于系統時間的服務
      sudo systemctl restart rsyslog.service crond.service
      

      腳本執行效果:

      WeiyiGeek.主機時間同步校準與時區設圖


      0x02 系統優化

      1.創建swap系統分區配置

      描述: 當服務器系統內存過小時,我們可以劃分一塊磁盤空間作為swap交換分區以補充內存過小,無法運行某些程序,通常情況下會出現在VPS上,針對于企業中的服務器基本都是在64G以上,請根據業務需求劃分,我們由于使用了K8S云原生通常情況下需要禁用SWAP交換分區,不過此處作者還是將方法其羅列出來以供需要的朋友使用。

      # Show  Script Execute result (Y/N)
      VAR_VERIFY_RESULT=Y
      # Modify Script vertify timeout (unit s)
      VAR_VERIFY_TIMEOUT=8
      
      echo "[${COUNT}] Create system swap partition."
      read -t ${VAR_VERIFY_TIMEOUT} -p "Please input, Create swap partition. (Y/N) : " VERIFY
      if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
          # 1.驗證當前內存大小
        MEM=$(free -m | awk '/Mem:/{print $2}')
        if [ "$MEM" -le 1280 ]; then
          MEM_LEVEL=1G
        elif [ "$MEM" -gt 1280 ] && [ "$MEM" -le 2500 ]; then
          MEM_LEVEL=2G
        elif [ "$MEM" -gt 2500 ] && [ "$MEM" -le 3500 ]; then
          MEM_LEVEL=3G
        elif [ "$MEM" -gt 3500 ] && [ "$MEM" -le 4500 ]; then
          MEM_LEVEL=4G
        elif [ "$MEM" -gt 4500 ] && [ "$MEM" -le  8000 ]; then
          MEM_LEVEL=6G
        elif [ "$MEM" -gt 8000 ]; then
          MEM_LEVEL=8G
        fi
      
        # 2.根據內存大小劃分對應的swap分區并自動掛載
        if [ "$(free -m | awk '/Swap:/{print $2}')" == '0' ]; then
          fallocate -l "${MEM_LEVEL}" /swapfile
          chmod 600 /swapfile
          mkswap /swapfile >/dev/null 2>&1
          swapon /swapfile
          sed -i "/swap/d" /etc/fstab
          echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
        fi
      
        # 3.swap分區內核參數調整
        egrep -q "^\s*vm.swappiness.*$" /etc/sysctl.conf && sed -ri "s/^\s*vm.swappiness.*$/vm.swappiness = 10/" /etc/sysctl.conf || echo "vm.swappiness = 10" >> /etc/sysctl.conf
        egrep -q "^\s*vm.vfs_cache_pressure.*$" /etc/sysctl.conf && sed -ri "s/^\s*vm.vfs_cache_pressure.*$/vm.vfs_cache_pressure = 501/" /etc/sysctl.conf || echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
      
        sysctl -p >/dev/null 2>&1
      
        if [[ $VAR_VERIFY_RESULT == "Y" ]]; then
          swapon --show 
          echo .
          free -h
          echo .
          grep -Ev '^#|^$' /etc/fstab | uniq
        fi
      fi
      

      2.系統資源句柄數優化配置

      描述: 為了提高系統的高并發以及防止程序報 Too many open file 錯誤,通常需要針對系統資源句柄數進行優化配置。

      echo "[-] Linux 系統的最大進程數和最大文件打開數限制."
      cp -a /etc/security/limits.conf ${BACKUPDIR}
      egrep -q "^\s*ulimit -HSn\s+\w+.*$" /etc/profile && sed -ri "s/^\s*ulimit -HSn\s+\w+.*$/ulimit -HSn 655350/" /etc/profile || echo "ulimit -HSn 655350" >> /etc/profile
      egrep -q "^\s*ulimit -HSu\s+\w+.*$" /etc/profile && sed -ri "s/^\s*ulimit -HSu\s+\w+.*$/ulimit -HSu 655350/" /etc/profile || echo "ulimit -HSu 655350" >> /etc/profile
      if ! grep -qi "# OS Resources Limits Config" /etc/security/limits.conf; then
        sed -i 's/^# End of file*//' /etc/security/limits.conf
        {
          echo '# OS Resources Limits Config'
          echo '* soft nofile 655350'
          echo '* hard nofile 655350'
          echo '* soft nproc  unlimited'
          echo '* hard nproc  unlimited'
          echo '* soft core   unlimited'
          echo '* hard core   unlimited'
          echo '# End of file'
        } >> /etc/security/limits.conf
      fi
      
      if [[ $VAR_VERIFY_RESULT == "Y" ]]; then grep -Ev '^#|^$' /etc/security/limits.conf | uniq;fi
      

      3.系統常規內核參數優化配置

      描述: 服務器內核參數的優化有助于系統以及應用程序提供更好的性能,但是通常需要針對應用程序特點以及應用場景進行相應配置,下述只是常規配置有側重點的朋友們,可根據實際情況進行調整。

      # Show  Script Execute result (Y/N)
      VAR_VERIFY_RESULT=Y
      # Modify Script vertify timeout (unit s)
      VAR_VERIFY_TIMEOUT=8
      
      # 1.系統內核參數的配置文件/etc/sysctl.conf
      echo "[-] 系統內核參數的優化配置 /etc/sysctl.conf"
      # 啟用IPV4數據包轉發(業務需要)
      egrep -q "^(#)?net.ipv4.ip_forward.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|g"  /etc/sysctl.conf || echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
      # egrep -q "^(#)?net.bridge.bridge-nf-call-ip6tables.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.bridge.bridge-nf-call-ip6tables.*|net.bridge.bridge-nf-call-ip6tables = 1|g" /etc/sysctl.conf || echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf 
      # egrep -q "^(#)?net.bridge.bridge-nf-call-iptables.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.bridge.bridge-nf-call-iptables.*|net.bridge.bridge-nf-call-iptables = 1|g" /etc/sysctl.conf || echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
      egrep -q "^(#)?net.ipv6.conf.all.disable_ipv6.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.ipv6.conf.all.disable_ipv6.*|net.ipv6.conf.all.disable_ipv6 = 1|g" /etc/sysctl.conf || echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
      egrep -q "^(#)?net.ipv6.conf.default.disable_ipv6.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.ipv6.conf.default.disable_ipv6.*|net.ipv6.conf.default.disable_ipv6 = 1|g" /etc/sysctl.conf || echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
      egrep -q "^(#)?net.ipv6.conf.lo.disable_ipv6.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.ipv6.conf.lo.disable_ipv6.*|net.ipv6.conf.lo.disable_ipv6 = 1|g" /etc/sysctl.conf || echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
      egrep -q "^(#)?net.ipv6.conf.all.forwarding.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.ipv6.conf.all.forwarding.*|net.ipv6.conf.all.forwarding = 1|g" /etc/sysctl.conf || echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf
      
      
      # 2.系統內核參數擴展優化配置
      if ! grep -qi "# OS Resources Limits Config" /etc/sysctl.conf; then
      tee -a /etc/sysctl.conf <<'EOF'
      # Configuration of system kernel parameters
      # 禁止 icmp 重定向報文
      net.ipv4.conf.all.accept_redirects = 0
      net.ipv4.conf.default.accept_redirects = 0
      # 忽略 icmp echo 請求廣播
      net.ipv4.icmp_echo_ignore_broadcasts = 1
      # 禁止 icmp 源路由
      net.ipv4.conf.all.accept_source_route = 0
      net.ipv4.conf.default.accept_source_route = 0
      
      # 禁止發送重定向 (若非必須建議設置 0)
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      
      # 禁止對主機進行 IP 偽裝
      net.ipv4.conf.all.rp_filter = 1
      net.ipv4.conf.default.rp_filter = 1 
      
      # 限制一個進程可以擁有的VMA(虛擬內存區域)的數量
      vm.max_map_count = 262144
      
      # 設置內存分配策略,使用0表示內核將檢查是否有足夠的可用內存。
      vm.overcommit_memory = 0
      
      # 調整提升服務器負載能力之外,還能夠防御小流量的Dos、CC和SYN攻擊
      net.ipv4.tcp_syncookies = 1
      net.ipv4.tcp_tw_reuse = 1
      # net.ipv4.tcp_tw_recycle = 1
      net.ipv4.tcp_fin_timeout = 60
      net.ipv4.tcp_synack_retries = 1
      net.ipv4.tcp_syn_retries = 1
      net.ipv4.tcp_fastopen = 3
      
      # 優化TCP的可使用端口范圍及提升服務器并發能力(注意一般流量小的服務器上沒必要設置如下參數)
      net.ipv4.tcp_keepalive_time = 7200
      net.ipv4.tcp_max_syn_backlog = 8192
      net.ipv4.tcp_max_tw_buckets = 16384
      net.ipv4.ip_local_port_range = 1024 65535
      
      # 優化核套接字TCP的緩存區
      net.core.netdev_max_backlog = 8192
      net.core.somaxconn = 32768
      net.core.rmem_max = 12582912
      net.core.rmem_default = 6291456
      net.core.wmem_max = 12582912
      net.core.wmem_default = 6291456
      
      # 內存緩存IO優化
      vm.dirty_background_ratio = 5
      vm.dirty_ratio = 10
      EOF
      fi
      if [[ ${VAR_VERIFY_RESULT} == "Y" ]];then sysctl -p;fi
      

      4.系統服務優化配置

      描述: 針對我們新安裝的KylinOS服務器中往往存在許多非必須服務,此處我們可以根據需求禁用相關服務。

      # 1.用于關閉與禁用某些服務端口
      echo "[-] 用于關閉與禁用某些服務端口。."
      local VAR_APP_SERVICE VAR_SYSTEM_SERVICE
      VAR_APP_SERVICE="telnet.socket printer sendmail nfs kshell lpd tftp ident time ntalk bootps klogin ypbind daytime nfslock echo discard chargen debug-shell.service"
      VAR_SYSTEM_SERVICE="chargen-dgram daytime-stream echo-streamklogin tcpmux-server chargen-stream discard-dgram eklogin krb5-telnet tftp cvs discard-stream ekrb5-telnet kshell time-dgram daytime-dgram echo-dgram gssftp rsync time-stream"
      
      for i in ${VAR_APP_SERVICE};do
        echo "Status and Disable APP ${i} Service!"
        # systemctl status ${i}
        systemctl stop ${i};systemctl disable ${i};
      done
      
      for i in ${VAR_SYSTEM_SERVICE};do
        echo "Status and Disable System ${i} Service!"
        # systemctl status ${i}
        systemctl stop ${i};systemctl disable ${i};
      done
      
      # 2.禁用煩人的apport錯誤報告
      if [ -f /etc/default/apport ]; then
        cp /etc/default/apport ${BACKUPDIR}
        sed -i 's/enabled=.*/enabled=0/' /etc/default/apport
        systemctl stop apport.service
        systemctl disable apport.service
        systemctl mask apport.service >/dev/null 2>&1
      fi
      
      read -t ${VAR_VERIFY_TIMEOUT} -p "Please input, is service verificating (Y/N) : " VERIFY
      if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
        systemctl status apport.service --no-pager
      else
        log::success "[${COUNT}] This operation is completed!"
      fi
      
      # 3.非云的環境下禁用或者卸載多余的cloud-init軟件及其服務
      sudo systemctl stop cloud-init.target cloud-init.service cloud-config.service cloud-init-local.service cloud-final.service
      sudo systemctl disable cloud-init.target cloud-init.service cloud-config.service cloud-init-local.service cloud-final.service
      sudo systemctl mask cloud-init.service cloud-config.service cloud-init-local.service cloud-final.service >/dev/null 2>&1
      
      # 禁用 Ubuntu 中的 cloud-init, 在 /etc/cloud 目錄下創建 cloud-init.disable 文件(重啟后生效)
      if [ ! -f /etc/cloud/cloud-init.disable ];then sudo touch /etc/cloud/cloud-init.disable;fi
      read -t ${VAR_VERIFY_TIMEOUT} -p "Please input, is Remove cloud-init related files and their directories (Y/N) : " VERIFY
      if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
        sudo apt purge cloud-init -y
        sudo rm -rf /etc/cloud && sudo rm -rf /var/lib/cloud/   
      fi
      sudo systemctl daemon-reload
      
      # 4.在系統啟動時禁用debug-shell服務
      systemctl stop debug-shell.service
      systemctl mask debug-shell.service >/dev/null 2>&1
      if [[ $VAR_VERIFY_RESULT == "Y" ]]; then
        systemctl status debug-shell.service --no-pager
      fi
      

      0x03 安全加固

      1.遠程登錄主機提示信息

      描述: 配置提示信息可以提示運維人員以及惡意人員,在非權限授權時禁止訪問。

      # 1.設置SSH登錄前警告Banner提示
      egrep -q "^\s*(banner|Banner)\s+\W+.*$" /etc/ssh/sshd_config && sed -ri "s/^\s*(banner|Banner)\s+\W+.*$/Banner \/etc\/issue.net/" /etc/ssh/sshd_config || echo "Banner /etc/issue.net" >> /etc/ssh/sshd_config
      
      sudo tee /etc/issue <<'EOF'
      ************************* [ 安全登陸 (Security Login) ] ************************
      Authorized users only. All activity will be monitored and reported.By WeiyiGeek Security Center.
      Author: WeiyiGeek
      blog: https://blog.weiyigeek.top
      
      EOF
      
      sudo tee /etc/issue.net <<'EOF'
      ************************* [ 安全登陸 (Security Login) ] *************************
      Authorized users only. All activity will be monitored and reported.By WeiyiGeek Security Center.
      Author: WeiyiGeek
      blog: https://blog.weiyigeek.top
      
      EOF
      
      # 2.本地控制臺與SSH登錄后提示自定義提示信息
      tee /etc/motd <<'EOF'
      Welcome to KylinOS Private Cloud Computer Service!
      If the server is abnormal, please add WX weiyigeeker (WeiyiGeek-Security-Center)
      
                         _ooOoo_
                        o8888888o
                        88" . "88
                        (| -_- |)
                        O\  =  /O
                     ____/`---'\____
                   .'  \\|     |//  `.
                  /  \\|||  :  |||//  \
                 /  _||||| -:- |||||-  \
                 |   | \\\  -  /// |   |
                 | \_|  ''\---/''  |   |
                 \  .-\__  `-`  ___/-. /
               ___`. .'  /--.--\  `. . __
            ."" '<  `.___\_<|>_/___.'  >'"".
           | | :  `- \`.;`\ _ /`;.`/ - ` : | |
           \  \ `-.   \_ __\ /__ _/   .-` /  /
      ======`-.____`-.___\_____/___.-`____.-'======
                         `=---='
       
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 佛祖保佑       永不死機
                 心外無法       法外無心
      EOF
      

      腳本執行效果:

      WeiyiGeek.本地控制臺與SSH登錄后提示自定義提示信息圖


      2.遠程登錄主機系統信息

      描述: 在登錄到系統后及時的顯示服務器系統相關信息,包括但不限于系統資源信息、登錄時間、失敗信息,以及各分區磁盤使用率。

      WeiyiGeek.主機資源信息圖

      后續完整文章請訪問獲取,https://mp.weixin.qq.com/s/eBF_Q-WkiZHKGdEG1MODNQ

      溫馨提示: 此處為了防止伸手黨,以及尊重作者編寫腳本及實踐成果,象征性的設置為?收費文章,希望大家理解支持!

      后續作者也會更新 CentOS 安全加固的腳本及其實踐視頻。


      原文地址: https://blog.weiyigeek.top/2023/4-25-734.html

      本文至此完畢,更多技術文章,盡情期待下一章節!


      專欄書寫不易,如果您覺得這個專欄還不錯的,請給這篇專欄 【點個贊、投個幣、收個藏、關個注,轉個發,留個言】(人間六大情),這將對我的肯定,謝謝!。

      點擊 ?? 關注「 全棧工程師修煉指南」公眾號
      微信溝通交流: weiyigeeker (點擊添加)
      交流溝通群:629184198 或 關注公眾號回復【學習交流群】

      溫馨提示: 由于作者水平有限,本章錯漏缺點在所難免,希望讀者批評指正,并請在文章末尾留下您寶貴的經驗知識,聯系郵箱地址 master@weiyigeek.top 或者關注公眾號 WeiyiGeek 聯系我。

      帥哥(靚仔)、美女,點個關注后續不迷路

      posted @ 2023-04-28 14:43  全棧工程師修煉指南  閱讀(2565)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品白嫩初高生免费视频| 国产成人亚洲日韩欧美| 一 级做人爱全视频在线看| 久久综合亚洲鲁鲁九月天| 句容市| 亚洲国产一区二区三区| 国产精品小粉嫩在线观看| 亚洲久悠悠色悠在线播放| 天堂一区二区三区av| 又爽又黄又无遮挡的激情视频| 成人综合人人爽一区二区| 不卡一区二区国产在线| www插插插无码免费视频网站| 亚洲热线99精品视频| 94人妻少妇偷人精品| 亚洲精品tv久久久久久久| 狠狠色噜噜狠狠狠狠2021| 亚洲乱熟乱熟女一区二区| 五月天天天综合精品无码| 国产超碰无码最新上传| 亚洲精品一区二区三区免| 亚洲女初尝黑人巨| 国产精品午夜福利在线观看| 国产成人久久精品流白浆| 久久成人国产精品免费软件| 成人国产一区二区三区精品| 亚洲欧美日本久久网站| 精品一区二区三区女性色| 色噜噜亚洲男人的天堂| 四虎成人在线观看免费| 亚洲深深色噜噜狠狠网站| 麻花传媒在线观看免费| 99久久成人亚洲精品观看| 无码精品人妻一区二区三区老牛| 免费人成在线观看网站| 国产成人av电影在线观看第一页 | 日本一区二区三区东京热| 国产精品午夜无码AV天美传媒 | 亚洲成亚洲成网| 国产三级精品福利久久| 国产欧美一区二区精品久久久|