1. 程式人生 > >Linux安全基礎——day4——審計、服務安全

Linux安全基礎——day4——審計、服務安全

系統審計
    簡介: 基於事先配置的規則生成日誌,記錄可能發生在系統上的事件,但是審計不會為系統提供額外的保護,致使會發現並記錄違反安全策略的人以及對應的行為。
    日誌內容: 日期與事件、事件結果、觸發事件的使用者、所有認證機制的使用、對關鍵資料的修改行為

部署audit
    裝包: audit(預設系統已經安裝好了)

/etc/audit/auditd.conf 配置檔案
/var/log/audit/audit.log 日誌資訊
/etc/audit/rules.d/audit.rules 規則配置檔案
auditctl -s 檢視狀態
auditctl -l 檢視規則
auditctl -D 刪除所有規則
auditctl -w 審計的目錄 -p 許可權 -k 設定標示資訊 定義臨時規則
許可權有: r(讀)、w(寫)、x(執行)、a(屬性修改)
echo '-w 審計的目錄 -p 許可權 -k 設定標示資訊' >> /etc/audit/rules.d/audit.rules 永久修改規則

  例子:

# 當讀寫passwd檔案,就會被記錄,標示為change_passwd這個名字
auditctl -w /etc/passwd -p rwa -k change_passwd

# 當執行了rm 命令,就記錄,標示為remove_comond這個名字
auditctl -w /usr/bin/rm -p rx -k remove_comond


審計日誌:

type 指定型別
msg 時間,從1970年1月1日開始到現在多少秒
success 顯示事件是否執行成功
auid uid euid 記錄執行操作的使用者id,以及登陸該使用者使用的使用者,以及su 轉換使用者前的使用者資訊,用以防止別人控制其他人的裝置做違規的事情
a0-a3 程式呼叫時的4個引數
ppid pid 父程序和執行的程序的ID號
tty 指定哪個終端執行的
comm 使用者執行的命令是什麼
exe 實際程式的路徑
key 管理員定義策略時候用的關鍵字
type=CWD 該行後面記錄的當前工作目錄


查閱日誌資訊:ausearch -k 關鍵字 -i
預設搜尋/var/log/audit/audit.log日誌檔案中的內容

nginx安全

   1. 編譯安裝前的安全操作
     1.1 隱藏軟體名 修改src/http/ngx_http_header_filter_module.c檔案的48行左右的內容,將三個變數引數修改了

ngx_http_server_string[]
ngx_http_server_full_string[]
ngx_http_server_build_string[]

     1.2 安裝模組的時候,不要配置自己不需要的模組,例如--without-http_autoindex_module 、 --without-http_ssi_module

   2. 安裝後修改nginx的配置檔案
     2.1 遮蔽非法訪問
    nginx配置檔案中的server裡面寫:
    if($request_method !~ ^(GET|POST)$){
        return 444;
    }

# 可以用命令非互動完成
sed -i '/#charset/a\        }' /etc/nginx/nginx.conf
sed -i '/#charset/a\            return 444;' /etc/nginx/nginx.conf
sed -i '/#charset/a\        if ($request_method !~ ^(GET|POST)$){' /etc/nginx/nginx.conf

     2.2 限制併發,解決DOS攻擊,其做法是:限制一個IP併發訪問,1秒鐘處理一個IP一個請求,多餘的放到記憶體中,不過記憶體中只能存一定個數,然後慢慢處理,超出的就不處理。

sed -i '/default_type/a\    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;' /etc/nginx/nginx.conf
sed -i '/#charset/a\        limit_req zone=one burst=5;' /etc/nginx/nginx.conf

# 上面的程式碼執行後,重啟nginx服務,那麼一個IP如果併發上百個訪問,那麼只處理6個

資料庫安全優化

     軟體mariadb有一個初始化安全指令碼 mysql_secure_installation ,執行後進行互動式處理

[[email protected] ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 這裡輸入當前資料庫的root密碼,沒有密碼就直接回車即可
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y  如果重新設定密碼回答Y,不重設密碼回答N
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y   建議刪除匿名使用者,如果刪除回答Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n    如果允許root遠端登陸屬於Y,如果不允許root遠端登陸用N
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y    建議刪除自帶的測試資料庫,因為這個資料庫是系統自帶,不管什麼使用者都對其擁有所有許可權,刪除輸入Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y     如果上面設定沒有問題,就Y儲存
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

系統命令安全
    歷史命令最好不要被檢視到,如果做了一些操作比較重要,就刪除歷史命令,命令如下:
history -c ; history -w
# 選項-c 是清空當前的歷史命令 , -w 是把當前歷史命令覆蓋記錄到 ~/.bash_history 下
    其配置檔案是:/etc/profile 修改裡面的 HISTSIZE 來控制歷史命令的個數

Tomcat的安全配置

   降權啟動
      Tomcat最大的問題就是,預設Tomcat的服務使用使用者是root,也就是說如果黑客控制了Tomcat服務,就擁有了root許可權,那麼他可以做所有他想做的事情,所以這是很不安全的,所以tomcat的優化最重要的就是降權操作

useradd tomcat
chown -R tomcat:tomcat /tomcat的工作目錄
# 啟動tomcat的時候使用如下命令
Su -c /tomcat工作目錄/bin/startup.sh tomcat

   影藏版本資訊
       這個需要修改tomcat的java編譯的jar包的引數

# 如果要修改jar包,需要一個解壓軟體
yum install -y java-1.8.0-openjdk-devel
cd /tomcat工作目錄/lib/
jar -xf catalina.jar
# 修改解壓的jar包下的配置檔案
sed -i '/server.info/cserver.info=自定義一個網站服務名'  org/apache/catalina/util/ServerInfo.properties
sed -i '/server.number/cserver.number=自定義一個網站服務版本號'  org/apache/catalina/util/ServerInfo.properties
# 再改主配置檔案/tomcat工作目錄/conf/server.xml
#修改未被註釋的redirectPort那行,在後面加上
redirectPort="8443" server="自定義過的一個網站服務名"
# 最後刪除預設測試頁面
rm -rf /tomcat工作目錄/webapps/*

打補丁

    資料對比,使用命令diff

-u 輸出比較的內容以及統一的內容
-r 第歸對比目錄下的所有資源
-a 所有檔案視為文字,這樣就可以比較二進位制的程式
-N 檔案不存在的時候視為空,也會參與比較

    一般用於補丁的時候,所有的引數都會用上。


    1. 安裝補丁軟體包: patch

    2. 生成補丁:

diff -Nura 舊版本檔案(目錄) 新版本檔案(目錄) > 補丁檔案

    3. 還原補丁

# 前往要被打補丁的檔案目錄位置,下面寫的是基於當前目錄下的補丁檔案的相對路徑
patch -p數字  相對路徑/補丁檔案

    例子:
      1. 如果補丁檔案test.patch和被打補丁的檔案test.txt在一個目錄dir下那就是

[[email protected] ~]# cd dir ; ls 
test.patch  test.txt
[[email protected] dir]# patch -p0 test.patch

      2. 如果補丁檔案test.patch和被打補丁的檔案test.txt在不一個目錄下,補丁檔案在的目錄是/dir被打補丁檔案在/dir/test/file目錄下

[[email protected] ~]# ls /dir 
test.patch  test
[[email protected] ~]# ls /dir/test/file ; ls
test.txt
[[email protected] file]# patch -p2 ../../test.patch

    作用: 補丁的作用主要就是,當一個軟體因為一些bug修改一小部分程式碼後,不需要再把新的程式碼全部重新下載,簡化了升級操作。