CentOS停服遭替代,這些操作差異,你瞭解了嗎?

Linksla發表於2023-10-09

背景

隨著 CentOS停服,各個行業的運維都在尋找各自的替代方案,考慮的出發點有:

  • 新作業系統是否相容CentOS,避免太大的操作差異;
  • 新作業系統是否為信創,其具體收費情況如何;
  • 新作業系統是否支援基礎工具、中介軟體、資料庫等整套開源方案;

除了以上幾點,現在的CentOS7.9 由於不再維護,很多元件新特性已經不再支援,如cgroupsv2、rootless container,因此我們要提前去適應新作業系統,為接下來的作業系統替換做好儲備。
在此,我將Ubuntu22.04 、Anolis8.6 和 CenOS7.9 差異較大的配置習慣進行整理總結。

Ubuntu22.04

DNS設定

1.檢視當前DNS配置

DNS 全域性配合和網路卡區域性配置 systemd 239中 systemd-resolve 已被重新命名為  resolvectl
    $ resolvectl status Global(全域性配置)       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub
    Link 2 (enp1s0)(某網路卡區域性配置)    Current Scopes: DNS         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 8.8.8.8       DNS Servers: 8.8.8.8 8.4.4.8

    2.臨時設定DNS

    # vim /etc/resolv.confnameserver 1.1.1.2nameserver 1.0.0.2

    3.設定DNS

    1、最簡單的方法
    使用 resolvconf 命令設定,透過此命令設定dns

      # 1.安裝resolvconf # apt install resolvconf
      # 2. 修改head檔案(此檔案由resolvconf生成) # vim /etc/resolvconf/resolv.conf.d/head nameserver 1.1.1.2 nameserver 1.0.0.2
      # 4.配置shengxiao # resolvconf -u
      # 3.開機啟動服務 systemctl enable --now resolvconf.service

      注意:

      • 修改完成後,必須透過 resolvconf -u 生效,此時會在 /etc/resolv.conf 中新增 dns 配置並生效。
      • 生效後,透過 resolvectl status 查詢不到此配置生效情況,但是透過 netplan apply 生效可在全域性配置中找到。

      最終以 /etc/resolv.conf 中的 dns 配置生效為準。
      2、非簡單方法
      修改 /etc/netplan/ 目錄下的 yml 檔案

        # 1.修改相關配置檔案 # vim /etc/netplan/xxx.yml network:  ethernets:    enp1s0:      dhcp4: true      nameservers:        addresses: [8.8.8.8, 8.4.4.8]  version: 2
        # 2.配置生效 # netplay apply

        注意 :由於此配置是針對 enp1s0 網路卡,因此 dns 只針對網路卡區域性生效。另外透過 netplay apply 生效後,dns 配置不會載入到  /etc/resolv.conf 中。
        3、配置生效總結
        netplay apply應用後,resolvconf 和 netplan 的配置透過 resolvectl status 查到,但是隻有 resolvconf 的配置會寫入  /etc/resolv.conf

          $ resolvectl status Global(全域性配置)       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: foreign Current DNS Server: 1.1.1.2        DNS Server: 1.0.0.2
          Link 2 (enp1s0)(某網路卡區域性配置)    Current Scopes: DNS         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 8.8.8.8       DNS Servers: 8.8.8.8 8.4.4.8
          $ cat /etc/resolv.conf nameserver 1.1.1.2 nameserver 1.0.0.2

          時間同步

          Ubuntu22.04 :

          • timedatectl 替代了老舊的 ntpdate。 預設情況下,timedatectl 在系統啟動的時候會立刻同步時間,並在稍後網路連線啟用後透過 socket 再次檢查一次。
          • timesyncd 替代了 ntpd 的客戶端的部分。 預設情況下 timesyncd 會定期檢測並同步時間。它還會在本地儲存更新的時間,以便在系統重啟時做時間單步調整。

          timesyncd  和 ntpd 區別:

          • ntpd是步進式平滑的逐漸調整時間
          • timesyncd是斷點式更新時間,也就是時間不同會立即更新

          注意 :斷點式更新會對某些服務產生影響,所以在生產環境要慎用!

            # 1. 配置時間同步 # vi /etc/systemd/timesyncd.conf [Time] # 一個空格分隔的NTP伺服器列表 # NTP=     # 一個空格分隔的NTP伺服器列表,用作備用NTP伺服器 # FallbackNTP=ntp.ubuntu.com # 最大可接受的"root distance"秒數(最大誤差),預設值為 5 秒 # RootDistanceMaxSec=5 # NTP訊息的 最小/最大輪詢間隔秒數 # PollIntervalMinSec=32 # PollIntervalMaxSec=2048
            # 2.檢視時間同步 # timedatectl

            安全基線

            1、設定過期時間

            # vim /etc/login.defsPASS_MAX_DAYS 90PASS_MIN_DAYS 0PASS_WARN_AGE 10

            密碼長度已不在此處,而是在相關pam中進一步設定。

            2、設定密碼複雜度、長度、過期時間、密碼嘗試次數

            透過 pwquality 控制,Ubuntu22.04預設沒有此模組,需要提前安裝。

              # 安裝libpam-pwquality apt install libpam-pwquality
              # 設定密碼複雜度 vim /etc/security/pwquality.conf minlen = 8 dcredit = -1 lcredit = -1 ocredit = -1 ucredit = -1
              # 設定密碼嘗試3次 vim /etc/pam.d/common-password password requisite pam_pwquality.so try_first_pass retry=3
              # 禁止重複使用舊密碼 vim /etc/pam.d/common-password password  [success=1 default=ignore]  pam_unix.so obsecure use_authtok try_first_passs yescrypt  remember=5

              3、防暴力破解

              Ubuntu22.04中, pam_tally2  已被移除,可以使用  pam_faillock  代替。

                # faillock 包含在libpam-modules中,無需安裝
                # faillock引數配置 # grep -v '#' /etc/security/faillock.conf dir = /var/run/faillock audit silent deny = 3 fail_interval = 900 unlock_time = 120

                關於 faillock 的配置,涉及以下兩個 pam 檔案

                • /etc/pam.d/common-auth
                • /etc/pam.d/common-account
                  # 使用者賬戶鎖定時連續身份驗證失敗必須達到的間隔長度預設為 900 秒 # 使用者賬戶鎖定時間預設為 600 秒, root使用者不受管控
                  # vim /etc/pam.d/common-auth auth    required pam_faillock.so preauth audit silent deny=5 unlock_time=900 auth    [success=1 default=ignore]      pam_unix.so nullok auth    [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900 auth    sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900 auth    requisite                       pam_deny.so auth    required                        pam_permit.so auth    optional                        pam_cap.so
                  # vim /etc/pam.d/common-account account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so account requisite                       pam_deny.so account required                        pam_permit.so account    required pam_faillock.so

                  Selinux

                  Ubuntu22.04 預設沒有安裝 Selinux,進一步操作:

                    # 1.安裝selinux apt update apt install policycoreutils selinux-utils selinux-basics
                    # 2.啟動selinux selinux-activate
                    # 3.enforce selinux,需重啟生效 selinux-config-enforcing
                    # 4.檢視selinux 狀態 setstatus SELinux status:  disabled
                    # 5.關閉selinux,需重啟生效 vim /etc/selinux/config SELINUX=enforcing SELINUX=disabled
                    # 6.臨時設定selinux setenforce 0 setenforce 1

                    防火牆

                    Ubuntu22.04 預設使用 ufw 管理防火牆,預設處於禁用狀態。

                      # 1.安裝ufw apt install ufw
                      # 2.防火牆狀態 ufw status verbose

                      核心

                      在做核心引數最佳化時,提示報錯:
                      sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: No such file or directory。
                      Ubuntu22.04 使用 5.15.0-60-generic,經過進一步瞭解到從 4.10 核心開始,官方修改了時間戳的生成機制,在此我們參考小米技術的總結的建議:

                      • tcp_tw_recycle  選項在4.10核心之前還只是不適用於NAT/LB的情況(其他情況下,我們也非常不推薦開啟該選項),但4.10核心後徹底沒有了用武之地,並且在4.12核心中被移除.
                      • tcp_tw_reuse  選項仍然可用。
                        在伺服器上面,啟用該選項對於連入的TCP連線來說不起作用,但是對於客戶端(比如伺服器上面某個服務以客戶端形式執行,比如nginx反向代理)等是一個可以考慮的方案。
                      • 修改  TCP_TIMEWAIT_LEN  是非常不建議的行為。

                      Anolis8.6

                      由於Anolis8.6 雖相容Centos7.9,但在時間同步方面有點差異。

                      時間同步

                      Anolis8.6預設不再支援ntp軟體包,時間同步將由 chrony 來實現。

                        # 透過配置檔案實現時間同步 vim /etc/chrony.conf server 192.168.20.17 iburst # 重啟服務 systemctl restart chronyd.service
                        # 檢查chrony是否同步,其中"Update interval"引數, 說明最後兩次更新的時間間隔 chronyc tracking
                        # 顯示所有 NTP 源伺服器的資訊 chronyc sources -v
                        # 檢視 NTP 伺服器的線上和離線狀態 chronyc activity
                        # 手動新增一臺新的 NTP 伺服器 chronyc add server XXXX
                        # 強制同步系統時間 chronyc -a makestep

                        總結

                        Ubuntu22.04 和 Anolis8.6 只是眾多替代方案中的兩種,大家有興趣的話還可以考慮其他方案:

                        • Oracle  Linux
                        • OpenEuler
                        • 統信UOS
                        • 中標麒麟
                        • 銀河麒麟
                        • Rocky Linux

                        來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2987457/,如需轉載,請註明出處,否則將追究法律責任。

                        相關文章