Linux 安全加固

Linux 安全加固需要從??用戶權限、系統服務、網絡防護、日志審計、文件系統、訪問控制??等多個維度入手,目標是減少攻擊面、限制未授權訪問、提升系統健壯性。以下是??詳細步驟+實操示例??,覆蓋主流 Linux 發行版(如 CentOS/Ubuntu)。


??一、用戶與權限安全:最小權限原則??

用戶和權限是最基礎的安全防線,核心是“??最小權限原則??”(Least Privilege),即用戶僅擁有完成任務所需的最小權限。

1. 禁用或刪除冗余用戶/組
  • ??目標??:移除默認無用賬戶(如 nobodybin 等),避免被攻擊者利用。
  • ??操作??:
    # 查看所有用戶(關注 UID < 1000 的系統用戶)
    cat /etc/passwd | awk -F: '$3 < 1000 {print $1}'# 刪除冗余用戶(示例:刪除 games 用戶)
    sudo userdel -r games  # -r 同時刪除家目錄和郵件# 禁用用戶(不刪除,僅鎖定)
    sudo passwd -l username  # 鎖定
    sudo passwd -u username  # 解鎖
2. 強制密碼策略
  • ??目標??:防止弱密碼(如短密碼、常見密碼)被暴力破解。
  • ??操作(以 PAM 模塊為例)??:
    編輯 /etc/security/pwquality.conf(CentOS 7+/Ubuntu 18.04+):
    minlen = 12          # 最小長度 12 位
    dcredit = -1         # 至少 1 位數字(負數表示至少)
    ucredit = -1         # 至少 1 位大寫字母
    lcredit = -1         # 至少 1 位小寫字母
    ocredit = -1         # 至少 1 位特殊符號(如 !@#$)
    maxrepeat = 3        # 禁止連續 3 位重復字符
    生效后,新密碼必須滿足上述規則。
3. 限制 root 遠程登錄
  • ??目標??:避免 root 賬戶直接暴露在公網,降低被暴力破解風險。
  • ??操作(以 SSH 為例)??:
    編輯 /etc/ssh/sshd_config
    PermitRootLogin no   # 禁止 root 遠程登錄
    # 改為允許特定用戶通過 sudo 切換 root(更安全)
    AllowUsers user1 user2  # 僅允許 user1/user2 遠程登錄
    保存后重啟 SSH 服務:
    sudo systemctl restart sshd  # CentOS/Ubuntu 通用

??二、系統更新與補丁管理:修復已知漏洞??

未修復的系統/軟件漏洞是最常見的攻擊入口,需定期更新。

1. 自動更新配置(以 Ubuntu 為例)
  • 啟用無人值守更新(自動安裝安全補丁):
    sudo apt install unattended-upgrades
    sudo dpkg-reconfigure unattended-upgrades  # 圖形化配置
    關鍵配置文件 /etc/apt/apt.conf.d/50unattended-upgrades,啟用以下選項:
    Unattended-Upgrade::Allowed-Origins {"${distro_id}:${distro_codename}";"${distro_id}:${distro_codename}-security";  # 僅安全補丁
    };
2. 手動更新(CentOS 示例)
sudo yum update -y  # 升級所有包(生產環境建議先測試)
# 或僅升級安全補丁(需安裝 yum-plugin-security)
sudo yum update --security -y

??三、網絡服務與防火墻:最小化暴露面??

關閉不必要的網絡服務,僅開放需要的端口,并通過防火墻嚴格限制訪問。

1. 關閉冗余服務
  • ??目標??:減少攻擊面(如未使用的 FTP、Telnet、RPC 等)。
  • ??操作??:
    # 查看運行中的服務(CentOS 7+/Ubuntu 16.04+ 使用 systemd)
    systemctl list-units --type=service --state=running# 禁用并停止冗余服務(示例:禁用 telnet)
    sudo systemctl disable --now telnet.socket  # 禁用開機啟動并停止
2. 配置防火墻(以 firewalld 為例,CentOS)
  • ??目標??:僅允許必要的端口(如 SSH 22、HTTP 80、HTTPS 443)。
  • ??操作??:
    # 查看當前規則
    sudo firewall-cmd --list-all# 開放 HTTP/HTTPS 端口(永久生效)
    sudo firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --add-service=https --permanent# 禁止 ICMP(ping)請求(防掃描)
    sudo firewall-cmd --add-icmp-block=echo-request --permanent# 重載規則
    sudo firewall-cmd --reload
3. 高級防護:使用 fail2ban 防止暴力破解
  • ??目標??:自動封禁多次登錄失敗的 IP。

  • ??操作(以 SSH 為例)??:

    # 安裝 fail2ban(CentOS)
    sudo yum install fail2ban -y# 配置(編輯 /etc/fail2ban/jail.local)
    [sshd]
    enabled = true
    maxretry = 3       # 允許失敗次數
    findtime = 600     # 統計時間窗口(秒)
    bantime = 3600     # 封禁時間(秒,1小時)

    重啟服務生效:

    sudo systemctl start fail2ban && sudo systemctl enable fail2ban

??四、日志與審計:監控異常行為??

通過日志記錄和分析,及時發現入侵跡象。

1. 啟用詳細日志記錄
  • ??目標??:記錄關鍵操作(如 sudo、SSH 登錄、文件修改)。
  • ??操作??:
    編輯 /etc/rsyslog.conf(或 /etc/syslog.conf),調整日志級別:
    # 記錄所有 sudo 操作(需配合 auditd)
    local2.debug /var/log/sudo.log# 記錄 SSH 登錄成功/失敗
    authpriv.* /var/log/auth.log  # Ubuntu
    # 或 /var/log/secure (CentOS)
2. 使用 auditd 進行審計(高級)
  • ??目標??:監控敏感文件/目錄的訪問(如 /etc/passwd/root)。
  • ??操作??:
    # 安裝 auditd(CentOS)
    sudo yum install auditd -y# 添加審計規則(監控 /etc/passwd 的修改)
    sudo auditctl -w /etc/passwd -p wa -k passwd_changes  # wa=寫/屬性變更# 查看審計日志
    ausearch -k passwd_changes  # 按標簽過濾
3. 日志集中管理(可選)
  • ??目標??:避免日志被篡改,便于集中分析。
  • ??方案??:使用 ELK(Elasticsearch+Logstash+Kibana)或 Graylog 收集多臺服務器日志。

??五、文件系統與磁盤安全:保護數據完整性??

1. 設置文件/目錄權限
  • ??目標??:敏感文件(如 passwdshadow)僅允許 root 讀取。
  • ??操作??:
    # 查看 /etc/shadow 權限(應僅 root 可讀)
    ls -l /etc/shadow  # 正常輸出:-rw-r----- 1 root shadow ...# 修復權限(示例:設置 /etc/ssh/sshd_config 僅 root 可寫)
    sudo chmod 600 /etc/ssh/sshd_config  # 600=所有者讀寫,其他無權限
2. 掛載選項強化(防數據篡改)
  • ??目標??:防止關鍵分區(如 /home/var)被意外或惡意修改。
  • ??操作??:編輯 /etc/fstab,添加 noexec(禁止執行)、nosuid(禁止 SUID)選項:
    /dev/sda3  /home  ext4  defaults,noexec,nosuid  0 0

??六、高級防護:SELinux/AppArmor??

SELinux(Security-Enhanced Linux)是 Linux 內核的強制訪問控制(MAC)模塊,可限制進程的權限(即使 root 也無法越權)。

1. 啟用 SELinux(CentOS 默認啟用)
  • ??檢查狀態??:

    getenforce  # 輸出 Enforcing(啟用)、Permissive(警告模式)、Disabled(禁用)
  • ??臨時禁用(測試用)??:

    sudo setenforce 0  # 設為 Permissive 模式
  • ??永久啟用??:編輯 /etc/selinux/config,將 SELINUX=disabled 改為 SELINUX=enforcing,重啟生效。

2. SELinux 策略示例(限制 Apache 訪問)

假設 Apache(httpd)僅需訪問 /var/www/html,可設置自定義策略:

# 查看當前布爾值(是否允許 Apache 訪問外部網絡)
semanage boolean -l | grep httpd_can_network_connect# 禁止 Apache 訪問外部網絡(增強安全性)
sudo setsebool -P httpd_can_network_connect off

??七、其他關鍵加固項??

  1. ??禁用不必要的內核功能??:
    編輯 /etc/sysctl.conf,調整內核參數(如禁止 IP 轉發、限制 SYN 洪水攻擊):

    net.ipv4.ip_forward = 0          # 禁止 IP 轉發(非網關服務器)
    net.ipv4.tcp_syncookies = 1      # 啟用 SYN Cookie 防御洪水攻擊
    net.ipv4.icmp_echo_ignore_broadcasts = 1  # 忽略 ICMP 廣播請求(防 ping 掃描)

    生效:sudo sysctl -p

  2. ??定期備份??:
    使用 rsynctar 備份關鍵數據,結合 cron 定時任務(如每日凌晨備份):

    # 示例:每天 2 點備份 /etc 到 /backup/etc.tar.gz
    0 2 * * * tar -czf /backup/etc_$(date +\%F).tar.gz /etc
  3. ??禁用 USB 自動掛載??(防惡意設備):
    編輯 /etc/modprobe.d/disable-usb-storage.conf

    options usb-storage delay_use=1  # 延遲掛載(需手動觸發)
    # 或完全禁用(需重啟):
    blacklist usb-storage

??加固效果驗證??

完成上述步驟后,需驗證安全措施是否生效:

  • ??檢查開放端口??:ss -tlnpnetstat -tlnp(僅應顯示必要端口)。
  • ??測試 root 遠程登錄??:嘗試 ssh root@服務器IP(應拒絕連接)。
  • ??模擬暴力破解??:使用工具(如 hydra)嘗試登錄,觀察是否觸發 fail2ban 封禁。
  • ??查看日志??:檢查 /var/log/auth.log(Ubuntu)或 /var/log/secure(CentOS)是否有異常登錄記錄。

??總結??

Linux 安全加固是??持續過程??,需結合“最小權限、定期更新、網絡隔離、日志監控”四大原則。實際操作中需根據業務需求調整(如 Web 服務器需開放 80/443,數據庫服務器需限制 3306 僅內網訪問),并定期進行安全審計(如使用 lynis 工具掃描)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91675.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91675.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91675.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Docker#2】容器歷史發展 | 虛擬化實現方式

一、前言 – 容器技術發展史 容器技術是現今計算技術的重要組成部分&#xff0c;其發展歷程可以追溯到很早的計算機系統提供的進程隔離工具。以下是容器技術的發展歷程&#xff0c;其中涵蓋了從早期的進程隔離技術到現代云計算和云原生的演變&#xff1a; ① Jail 時代 1979 年…

React + Mermaid 圖表渲染消失問題剖析及 4 種代碼級修復方案

Mermaid 是一個流行的庫&#xff0c;它可以將文本圖表&#xff08;例如 graph LR; A-->B;&#xff09;轉換為 SVG 圖表。在靜態 HTML 頁面中&#xff0c;Mermaid 會查找 <pre class"mermaid"> 代碼塊&#xff0c;并在頁面加載時將它們替換為渲染后的圖表。它…

[Element]修改el-pagination背景色

[Element]修改el-pagination背景色 代碼 <el-pagination:current-page.sync"queryParams.current":page-size.sync"queryParams.size":page-sizes"[10, 20, 50, 100]"layout"prev, pager, next, jumper, sizes":total"queryP…

Docker 可用鏡像列表

Docker 鏡像源列表&#xff08;7月15日更新-長期&免費&#xff09;_dockerhub國內鏡像源列表-CSDN博客

低代碼可視化工作流的系統設計與實現路徑研究

一、背景分析在數字化轉型不斷深化的背景下&#xff0c;企業業務流程呈現出高度定制化與動態調整的趨勢&#xff0c;傳統信息系統在開發周期、實施成本與擴展能力上的局限性日益凸顯&#xff0c;已難以支撐快速響應和敏捷迭代的實際需求。面向這一現實挑戰&#xff0c;基于 BPM…

mac mlx大模型框架的安裝和使用

mlx是apple平臺的大模型推理框架&#xff0c;對mac m1系列處理器支持較好。 這里記錄mlx安裝和運行示例。 1 安裝mlx框架 conda create -n mlx python3.12 conda activate mlx pip install mlx-lm 2 運行mlx測試例 以下是測試程序&#xff0c;使用方法和hf、vllm等推理框架基…

JAVA 使用Apache POI合并Word文檔并保留批注的實現

一、需求背景 在實際工作中&#xff0c;我們經常需要將多個Word文檔合并成一個文件。但當文檔中包含批注&#xff08;Comments&#xff09;時&#xff0c;傳統的復制粘貼會導致批注丟失或引用錯亂。本文將介紹如何通過Java和Apache POI庫實現保留批注及引用關系的文檔合并功能。…

Linux的服務管理工具:`systemd`(`systemctl`)和`SysVinit ` 筆記250718

Linux的服務管理工具:systemd(systemctl)和SysVinit 筆記250718 Linux的服務管理工具 Linux 的服務管理工具隨著發行版和初始化系統的發展而演變。以下是主要的服務管理工具及其對應的初始化系統&#xff1a; 1. systemd (現代主流標準) 初始化系統&#xff1a; 是絕大多數…

Couchbase 可觀測性最佳實踐

Couchbase 介紹 Couchbase 是一個開源的分布式 NoSQL 數據庫&#xff0c;專為高性能和高可擴展性設計&#xff0c;適用于實時數據處理的企業應用。它結合鍵值存儲和文檔數據庫的優勢&#xff0c;支持 JSON 文檔存儲&#xff0c;并通過 N1QL&#xff08;類 SQL 查詢語言&#x…

構建基于MCP的LLM聊天機器人客戶端開發指南

引言 在當今人工智能技術快速發展的時代&#xff0c;大型語言模型(LLM)已成為構建智能應用的核心組件。MCP(Modular Conversational Platform)作為一個強大的對話平臺&#xff0c;為開發者提供了將LLM能力與自定義工具集成的標準化方式。本文將詳細介紹如何使用Python開發一個…

接口測試的原則、用例與流程詳解

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 一、接口的介紹軟件測試中&#xff0c;常說的接口有兩種&#xff1a;圖形用戶接口&#xff08;GUI&#xff0c;人與程序的接口&#xff09;、應用程序編程接口&am…

ubuntu 22.02 帶外進單用戶拯救系統

不停地按 F7 &#xff0c;然后進到 menu &#xff0c;選擇 ubuntu &#xff0c;然后按下 ESC &#xff0c;然后瞬間會刷一個 ubuntu 的選項&#xff08;默認是在第一的位置&#xff0c;直接快速按下 e&#xff09;即可進入單用戶模式。 找到類似 linux /boot/vmlinuz-xxx rootU…

Java-75 深入淺出 RPC Dubbo Java SPI機制詳解:從JDK到Dubbo的插件式擴展

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; AI煉丹日志-30-新發布【1T 萬億】參數量大模型&#xff01;Kim…

【橘子分布式】gRPC(編程篇-上)

一、簡介 我們之前學習了grpc的一些理論知識&#xff0c;現在我們開始正式進入編程環節。 我們的項目結構和之前的thrift結構還是一樣的&#xff0c;一個common,一個client&#xff0c;一個server。只不過在grpc這里common它一般叫做api模塊。還是放置一些公共的實體類&#x…

IOS 18下openURL 失效問題

突然有一天有玩家反饋說應用打開外部連接打不開了&#xff0c;于是查了一下&#xff0c;報錯&#xff1a;BUG IN CLIENT OF UIKIT: The caller of UIApplication.openURL(_:) needs to migrate to the non-deprecated UIApplication.open(_:options:completionHandler:). Force…

前端面試題(React 與 Vue)

目錄 一、React 函數組件 Fiber架構 組件重新渲染 組件通信 為什么不能在if中使用hook useEffect與useLayoutEffect區別 性能優化hooks 受控組件與非受控組件 redux與zustand區別 二、Vue vue2與vue3區別 生命周期 computed與watch區別 v-if與v-show區別 v-mod…

大模型格式

目錄 大模型格式&#xff1a; ollma 可以加載gguf ChatGPT 說&#xff1a; &#x1f50d; 什么是 GGUF&#xff1f; 大模型格式&#xff1a; Ollama 模型格式只能運行已打包成 .gguf 格式的模型&#xff0c;或通過其 Modelfile 方式構建 ModelScope 模型格式大多使用 Hug…

數據結構 棧(1)

1. 棧的概念和結構之前幾篇我們分別講解了順序表和單鏈表的內容&#xff0c;今天我們又來學習一個新的關于數據結構的內容--- 棧 。棧&#xff1a;棧也屬于線性表 , 但它是一種特殊的線性表&#xff0c;其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一…

【Android代碼】繪本翻頁時通過AI識別,自動通過手機/pad朗讀繪本

核心功能&#xff1a; 打開攝像頭&#xff08;可支持外接攝像頭&#xff09;檢測翻頁&#xff08;后續考慮添加圖像差異算法&#xff09;拍照后用 識圖自動用 TextToSpeech 朗讀文字內容 &#x1f4cc; 說明&#xff1a;使用了 CameraX&#xff08;Android Jetpack&#xff09;…

園區IPv6規劃與部署

?今天我將圍繞“園區IPv6規劃與部署”這一主題&#xff0c;結合行業趨勢、技術難點和實際案例&#xff0c;與大家分享一套可落地的規劃方法論。?在開始前&#xff0c;我想先問大家一個問題&#xff1a;?如果現在讓你給一個新建園區設計網絡&#xff0c;你會優先考慮IPv4還是…