Linux 系統日誌是記錄系統活動和事件的重要依據,對於系統維護和安全稽核至關重要。系統管理員需要了解如何組態日誌、設定優先順序以及使用工具如 logrotate 進行日誌輪替和清理。除了日誌管理,系統服務的管理和應用也是系統管理員的核心職責。這包括 Web 伺服器(如 Apache)、遠端登入服務(如 OpenSSH)以及資料函式庫服務(如 MySQL 和 PostgreSQL)的安裝、組態、啟動、停止和重啟。熟練掌握這些服務的管理技巧,才能確保系統的正常執行和資料的安全性。此外,瞭解如何建立簡單的網頁、設定遠端登入以及管理資料函式庫,更是提升系統管理效率的關鍵。

系統日誌管理:深入理解與實務操作

在Linux系統中,日誌管理是維護系統安全與穩定性的關鍵步驟。本文將探討Linux系統中的日誌機制,並提供實務操作,幫助讀者更好地管理與維護系統日誌。

日誌組態與優先順序設定

Linux系統中的日誌組態通常由/etc/rsyslog.conf/etc/syslog.conf檔案控制。這些檔案定義了日誌的收集、處理及儲存規則。以下是一些基本概念:

  • 設施(Facility):這是日誌來源的分類別,例如kern(核心)、mail(郵件)、user(使用者等級)等。使用萬用字元*可以指定所有設施。
  • 優先順序(Priority):這告訴系統需要記錄哪種型別的訊息。優先順序從最低到最高依序為debuginfonoticewarningerrorcritalertemergpanic。當指定某個優先順序時,該優先順序及更高優先順序的訊息都會被記錄。

以下是一些常見的優先順序範例:

  • debug: 除錯訊息
  • info: 一般資訊
  • notice: 重要資訊
  • warning: 警告訊息
  • error: 錯誤訊息
  • crit: 關鍵錯誤
  • alert: 需立即處理的問題
  • emerg: 緊急情況

日誌規則範例

以下是一些日誌規則的範例:

mail.* /var/log/mail

這條規則會將所有郵件相關事件記錄到 /var/log/mail

kern.crit /var/log/kernel

這條規則會將核心事件中優先順序為 crit 或更高的記錄到 /var/log/kernel

*.emerg *

這條規則會將所有緊急事件記錄到所有已登入的使用者。

自動清理日誌:使用logrotate

日誌檔案會隨著時間增加而佔用大量磁碟空間,因此需要定期清理或壓縮。這裡介紹一個強大的工具——logrotate。

logrotate 組態檔案

logrotate 的組態檔案通常位於 /etc/logrotate.conf。以下是一些常見的組態選項:

# 設定每週旋轉日誌
weekly

# 保留四週的備份
rotate 4

# 旋轉後建立新的空白日誌檔案
create

# 壓縮備份檔案(取消註解以啟用)
# compress

# 包含其他組態檔案
include /etc/logrotate.d

logrotate 的操作原理

logrotate 會根據組態檔案中的設定,定期地將舊的日誌檔案移動並重新命名,並建立新的空白日誌檔案。例如,若每週旋轉一次且保留四週備份,則 /var/log/auth.log.4 會被刪除,而 /var/log/auth.log.1~4 則依序向後移動。

日誌管理實務應用

在實際操作中,日誌管理需要考慮多方面因素,包括儲存空間、安全性及可稽核性。以下是一些實務建議:

  1. 定期檢查:定期檢查日誌檔案,確保沒有異常情況發生。
  2. 壓縮備份:對於不常檢視的舊日誌,可以壓縮備份以節省儲存空間。
  3. 安全清理:避免使用簡單的刪除方法來清理敏感日誌,應該使用專業工具來確保資料安全。

點透技術選型及未來趨勢

在選擇日誌管理工具時,需要考慮系統需求、安全性及可擴充套件性。目前市面上有多種工具可以選擇,例如 ELK Stack(Elasticsearch, Logstash, Kibana),它們提供強大的日誌收集、分析及視覺化功能。

未來趨勢

未來隨著大資料技術的發展,日誌管理將更加智慧化與自動化。例如,AI 和機器學習技術可以用來自動識別異常行為,提高系統安全性。此外,雲端技術也將進一步改變日誌管理方式,提供更靈活與可擴充套件的解決方案。

圖示1:logrotate 工作流程
  graph TD;
    C[C]
    A[日誌產生] --> B[Logrotate 檢測];
    B --> C{時間到達};
    C -- 是 --> D[舊日誌歸檔];
    C -- 否 --> E[繼續監控];
    D --> F[建立新日誌檔案];
    F --> E;

此圖示展示了 logrotate 的工作流程。當時間到達預設週期時,logrotate 會將舊的日誌檔案進行壓縮或移動並建立新的空白日誌檔案。

小段落標題1:logrotate 工作流程解析

logrotate 的工作流程可以分為以下幾個步驟:

  1. 日誌產生:系統執行過程中會不斷產生各種型別的日誌。
  2. Logrotate 檢測:logrotate 會根據組態檔案中的設定,定期檢查是否需要進行日誌旋轉。
  3. 時間到達:當時間達到預設週期時(例如每週或每月),logrotate 會進行後續操作。
  4. 舊日誌歸檔:logrotate 會將舊的日誌檔案進行壓縮或移動並重新命名。
  5. 建立新日誌檔案:在完成舊日的志旋轉後,logrotate 會建立一個新的空白日的志檔案。
  6. 持續監控:logrotate 再次進入監控狀態,等待下一次時間到達。

希望透過以上解說能夠讓讀者更好地理解 logrotate 的工作原理及其在實際應用中的重要性。

刪除與清除Linux系統日誌檔案

在Linux系統中,日誌檔案是記錄系統活動和事件的重要資料來源。對於資安專家來說,這些日誌檔案可能揭示駭客的活動和身份;對於駭客來說,這些日誌檔案則可能成為證據。因此,駭客常常會刪除或修改日誌檔案以掩蓋自己的行蹤。本文將探討如何在Linux系統中刪除和清除日誌檔案,並提供具體的技術手法及其實作步驟。

日誌檔案的重要性

日誌檔案(log files)是Linux系統中的重要組成部分,記錄了從系統啟動、使用者登入到應用程式執行等各種事件。這些日誌檔案通常存放在/var/log目錄下,包含了豐富的系統執行資訊和安全事件記錄。

常見的日誌檔案型別

  • syslog:系統核心事件和應用程式事件。
  • auth.log:身份驗證相關的事件,如登入嘗試。
  • kern.log:核心相關的事件。
  • dmesg:啟動時核心訊息。

刪除與清除日誌檔案的方法

刪除日誌檔案是最簡單的方式,但這並不安全,因為被刪除的日誌檔案仍然可以透過取回方法還原。為了確保日誌檔案無法被還原,我們可以使用shred命令來徹底清除日誌檔案。

shred命令

shred命令可以多次覆寫檔案內容,使其無法被還原。這個命令是Linux系統自帶的工具,適合用來清除敏感資料。

基本使用語法
shred <FILE>

這個命令會將指定的檔案覆寫四次(預設值),使其難以還原。

常用選項
  • -f:強制修改檔案許可權以允許覆寫。
  • -n:指定覆寫次數。

例如,我們可以使用以下命令來覆寫並刪除/var/log/auth.log檔案及其壓縮版本:

shred -f -n 10 /var/log/auth.log.*

內容解密:

上述命令中的-f選項允許我們即使檔案許可權不允許也能進行覆寫操作。-n 10選項則指定覆寫十次。這樣做能夠大大提高資料被還原的難度。這個命令會比對所有以auth.log開頭並帶有字尾(如.1, .2等)的檔案,確保所有相關日誌檔案都被徹底清除。

暫停日誌服務

除了刪除和清除日誌檔案外,駭客還可以透過停止日誌服務來掩蓋自己的行蹤。在Linux中,常用的日誌服務是rsyslog

停止rsyslog服務
service rsyslog stop
內容解密:

上述命令會停止rsyslog服務,從而避免系統生成新的日誌檔案。這樣做需要root許可權。注意:停止此服務後,整個系統將不再生成新的日誌檔案,直到服務重啟為止。

推薦閱讀

若想進一步瞭解如何防範和應對這些攻擊手段,建議閱讀相關的資安書籍和技術文獻。例如,《The Art of Intrusion》或《Metasploit: The Penetration Tester’s Guide》等書籍都提供了豐富的技術細節和實戰經驗。


Linux服務管理與應用

在Linux系統中,「服務」(services)是指那些在背景執行、等待使用者呼叫或觸發的應用程式。這些服務可能包括網頁伺服器、資料函式倉管理、遠端連線等。本文將介紹如何管理和利用這些服務來完成特定任務。

服務管理基礎

在Kali Linux中(以及大多數其他Linux發行版),我們可以透過命令列來啟動、停止和重啟服務。以下是基本語法:

service servicename start|stop|restart

範例

  • 啟動Apache網頁伺服器:
    service apache2 start
    
  • 停止Apache網頁伺服器:
    service apache2 stop
    
  • 重啟Apache網頁伺服器:
    service apache2 restart
    

Apache Web Server

Apache Web Server是最常見且廣泛使用的網頁伺服器軟體之一。它可以用於建立、管理和佈署網站。

安裝Apache

如果你已經在Kali Linux上執行Apache(大多數發行版預設安裝),那麼你可以直接開始使用它。如果沒有安裝,你可以透過以下命令進行安裝:

apt-get update && apt-get install apache2

基本組態與應用

組態檔案位置

Apache的主要組態檔案位於 /etc/apache2/apache2.conf/etc/apache2/sites-available/目錄下。

啟動與管理Apache

使用以下命令可以啟動、停止或重啟Apache:

service apache2 start   # 啟動Apache
service apache2 stop    # 停止Apache
service apache2 restart # 重啟Apache
範例:建立一個簡單的HTML頁面
  1. 建立一個HTML檔案:
    sudo nano /var/www/html/index.html
    
  2. 新增以下內容:
    <html>
    <head>
        <title>Hello, World!</title>
    </head>
    <body>
        <h1>Welcome to My Apache Web Server</h1>
        <p>This is a simple HTML page served by Apache.</p>
    </body>
    </html>
    
  3. 儲存並離開編輯器(Ctrl+X, Y, Enter)。
  4. 開啟瀏覽器並存取 http://localhost/ ,你應該會看到剛剛建立的HTML頁面。

OpenSSH

OpenSSH 是一個開源且廣泛使用的遠端登入工具包。它允許你透過加密連線遠端登入到Linux伺服器上。

安裝與組態OpenSSH

  1. 安裝OpenSSH:

    apt-get update && apt-get install openssh-server
    
  2. 啟動OpenSSH伺服器:

    service ssh start   # 啟動SSH伺服器
    
  3. 組態OpenSSH:

    OpenSSH 的主要組態檔案位於 /etc/ssh/sshd_config 。你可以編輯該檔案以改變SSH伺服器的一些設定:

    sudo nano /etc/ssh/sshd_config
    

    比如說更改預設埠號(建議不要改變埠號):

    Port 22
    
  4. 重啟OpenSSH伺服器以應用更改:

    service ssh restart   # 重啟SSH伺服器以應用更改。
    

MySQL 與 PostgreSQL 資料函式倉管理

MySQL 和 PostgreSQL 是兩種流行且功能強大的關聯型資料函式倉管理系統(RDBMS)。它們都廣泛用於各種應用場景中。

安裝與組態MySQL

  1. 安裝MySQL:

    apt-get update && apt-get install mysql-server mysql-client libmysqlclient-dev libmysqlclient-dev-compat libmysqlclient-dev-compat-mysqlnd libmysqlclient-dev-compat-perl libmysqlclient-dev-compat-python3 libmysqlclient-dev-compat-ruby libmysqlclient-dev-compat-pgsql libmysqlclient-dev-compat-perl-dbd-mysql libmysqlclient-dev-compat-syntax-highlighting-mysql libmysqlclient-dev-compat-graphviz-mysql libmysqlclient-dev-compat-mariadb libmysqlclient-dev-compat-mariadb-server libmysqlclient-dev-compat-pgsql-server libmysqlclient-dev-compat-mariadb-client libmysqlclient-dev-compat-mariadb-client-core libmysqlclient-dev-compat-mariadb-client-debug libmysqlclient-dev-compat-mariadb-client-plugin-auth-gssapi-krb5 libmysqlclient-dev-compat-mariadb-client-plugin-auth-gssapi-krb5-debug libmysqlclient-dev-compat-mariadb-client-plugin-auth-gssapi-krb5-plugin-auth-gssapi-krb5-debug libmysqlclient-dev-compat-pgsql-plugin-auth-gssapi-krb5-core libmysqlclient-dev-compat-pgsql-plugin-auth-gssapi-krb5-core-debug libmysqlclient-dev-compat-pgsql-plugin-auth-gssapi-krb5-core-plugin-auth-gssapi-krb5-core-debug.
    
  2. 安裝完成後立即執行安全設定向導來進行初始化設定:

    mysql_secure_installation     # 安全設定向導可幫助設定root密碼、移除匿名帳戶、停用遠端root登入等。
    
  3. 啟動MySQL伺服器:

    service mysql start     # 啟動MySQL伺服器。
    
  4. 連線到MySQL:

    mysql -u root -p     # 輸入你設定好的root密碼即可進入MySQL互動式環境。
    

安裝與組態PostgreSQL

  1. 安裝PostgreSQL:

    apt-get update && apt-get install postgresql postgresql-contrib postgresql-doc postgresql-plpython3 postgresql-plperl postgresql-pltcl postgresql-plpython3u postgresql-plperl-db postgresql-pltcl-db postgresql-plpython3u-db postgresql-plperl-doc postgresql-pltcl-doc postgresql-plpython3u-doc postgresql-plperl-bin postgresql-pltcl-bin postgresql-plpython3u-bin postgresql-plperl-utils postgresql-pltcl-utils postgresql-plpython3u-utils.
    
  2. 初始化PostgreSQL資料函式庫叢集:

    sudo -u postgres /usr/lib/postgresql/<version>/bin/initdb -D /var/lib/postgresql/<version>/main     # <version> 序號需替換成你正在使用版本號碼。
    
  3. 啟動PostgreSQL伺服器:

    service postgresql start     # 啟動PostgreSQL伺服器。
    
  4. 建立一個新資料函式庫及使用者:

    CREATE DATABASE mydb;
    CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';
    GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
    \q       # 離開postgres互動式環境