Linux機器24項安全合規設置

来源:http://www.cnblogs.com/customsec/archive/2016/06/25/5617013.html
-Advertisement-
Play Games

工作的一些內容,這是中國移動集團當前linux機器安全合規標準,找了點時間將其歸類,並查了一些資料,每項配置是什麼意思,不僅要知其然,還要知其所以然。好記性不如爛筆頭。 1. 檢查FTP配置-限制用戶FTP登錄 控制FTP進程預設訪問許可權,當通過FTP服務創建新文件或目錄時應屏蔽掉新文件或目錄不應有 ...


工作的一些內容,這是中國移動集團當前linux機器安全合規標準,找了點時間將其歸類,並查了一些資料,每項配置是什麼意思,不僅要知其然,還要知其所以然。好記性不如爛筆頭。


 

1.  檢查FTP配置-限制用戶FTP登錄

控制FTP進程預設訪問許可權,當通過FTP服務創建新文件或目錄時應屏蔽掉新文件或目錄不應有的訪問允許許可權。

 

操作:

(1)vsftp:

# vi /etc/vsftp/vsftpd.conf 手動將userlist_enable改為yes

//限制/etc/vsftpd/user_list文件里的用戶不能訪問。

# vi /etc/pam.d/vsftpd

將file=後面的文件改成/etc/ftpusers

# vi /etc/ftpusers 手動添加用戶即可

//用於保存不允許進行FTP登錄的本地用戶帳號。就是vsftp用戶的黑名單。

 

(2)pure-ftpd:

# vi /etc/pam.d/pure-ftpd

將file=後面的文件改為/etc/ftpusers

# vi /etc/ftpusers 手動添加用戶即可


 

2.  檢查SSH協議版本是否存在嚴重的安全問題

將SSH協議版本修改為2,SSH1的存在嚴重的安全問題,甚至可以截獲密碼。

 

操作:

# vi /etc/ssh/sshd_config 手動修改Protocol為2


 

3. 檢查口令鎖定策略

對於採用靜態口令認證技術的設備,應配置當用戶連續認證失敗次數超過6次(不含6次),鎖定該用戶使用的賬號。

 

操作:

/etc/pam.d/common-auth(優先)或/etc/pam.d/passwd中

手動增加以下行

auth required pam_tally.so onerr=fail deny=6 unlocktime=300  (SuSE 9)

auth required pam_tally2.so onerr=fail deny=6 unlock_time=300 (SuSE 10+)


 

4.  檢查是否記錄帳戶操作日誌

設備應配置日誌功能,記錄用戶對設備的操作,包括但不限於以下內容:賬號創建、刪除和許可權修改,口令修改,讀取和修改設備配置,讀取和修改業務用戶的話費數據、身份數據、涉及通信隱私數據。需記錄要包含用戶賬號,執行命令總數、操作時間,操作內容。

 

操作:

cd /home/boco4a/

ftp 10.212.41.120     //登陸ftp,sec/1qaz!@#$

ls

get acct*.rpm   //獲取acct*.rpm包

by

ls

rpm -ivh acct*.rpm    //安裝acct軟體,然後運行下麵命令

touch /var/adm/pacct   //新建存放日誌審計操作的文件

/usr/sbin/accton /var/adm/pacct   //打開審計

/etc/init.d/acct restart   //啟動

/etc/init.d/acct stop   //停止


 

5.  檢查是否刪除或鎖定無關賬號

應刪除或鎖定與設備運行、維護等工作無關的賬號。

 

操作:

cat /etc/passwd

passwd -l 用戶    //鎖定用戶

usermod -s /bin/false games

usermod -s /bin/false nobody   //-s:--shell。修改用戶shell為無效,用戶不能登錄,但可以有其他功能,如發送郵件,訪問共用資源等。


 

6.  檢查編譯器是否安裝在開發系統的機器上

刪除所有的編譯器和彙編程式。C編譯器會構成對系統可信的威脅。編譯器應該安裝在開發系統的機器上,而不是一個生產應用系統上。

 

操作:

# rpm -e <軟體包名>   //卸載編譯器軟體


 

7. 檢查口令策略設置是否符合複雜度要求

對於採用靜態口令認證技術的設備,口令長度至少8位,並包括數字、小寫字母、大寫字母和特殊符號4類中至少2類。

 

操作:

password required pam_cracklib.so minlen=8 lcredit=-1 dcredit=-1 ocredit=-1

minlen:密碼長度 lcredit:小寫字母個數 dcredit:數字個數 ocredit:特殊字元個數


 

8. 檢查口令生存周期要求

對於採用靜態口令認證技術的設備,維護人員使用的帳戶口令的生存期不長於90天。

 

操作:

# vi /etc/login.defs 手動將PASS_MAX_DAYS設置為90


 

9. 檢查口令重覆次數限制

對於採用靜態口令認證技術的設備,應配置設備,使用戶不能重覆使用最近5次(含5次)內已使用的口令。

 

操作:

# vi /etc/pam.d/passwd (SuSE 9)

# vi /etc/pam.d/common-password (SuSE 10+)

手動增加以下行

password required pam_pwcheck.so remember=5


 

10. 檢查日誌文件許可權設置

設備應配置許可權,控制對日誌文件讀取、修改和刪除等操作。

 

操作:

ps -ef|grep syslog   查看日誌類型

chmod 640 /etc/rsyslog.conf   //設置日誌文件640許可權


 

11. 檢查是否按角色進行帳號管理

根據系統要求及用戶的業務需求,建立多賬戶組,將用戶賬號分配到相應的賬戶組。

 

操作:

# groupadd -g <新的組ID> smpadm   //新的組ID合新用戶ID保持一致,最好大於1000

# useradd -d /home/smpadm -m -u <新的用戶ID> -g smpadm smpadm

添加smpadm管理用戶和組


 

12. 檢查是否按用戶分配賬號責任到人

應按照用戶分配賬號。避免不同用戶間共用賬號。避免用戶賬號和設備間通信使用的賬號共用。

 

操作(上同):

# groupadd -g <新的組ID> smpadm

# useradd -d /home/smpadm -m -u <新的用戶ID> -g smpadm smpadm

添加smpadm管理用戶和組


 

13. 檢查是否非活動時斷線

用戶處於非活動時斷線。

 

操作:

# vi /etc/ssh/sshd_config 手動修改

ClientAliveCountMax 0

ClientAliveInterval 300

 

// ClientAliveInterval指定了伺服器端向客戶端請求消息的時間間隔, 預設是0, 不發送。而ClientAliveInterval 60表示每分鐘發送一次, 然後客戶端響應, 這樣就保持長連接了。ClientAliveCountMax表示伺服器發出請求後客戶端沒有響應的次數。

上面命令表示客戶端誤操作300秒斷開連接,超時次數0次,也可寫成:

ClientAliveCountMax 3

ClientAliveInterval 100


 

14. 檢查是否記錄su日誌

設備應配置日誌功能,記錄用戶使用SU命令的情況,記錄不良的嘗試記錄。

 

操作:

# vi /etc/syslog.conf 手動添加如下

auth.info   /var/adm/authlog

# vi /etc/rsyslog.conf 手動添加如下

auth.info   /var/adm/authlog

# vi /etc/syslog-ng/syslog-ng.conf 手動添加如下

filter f_messages { level(info,notice,warn) and not facility(auth,authpriv,cron,daemon,mail,news); };


 

15. 檢查是否記錄安全事件日誌

設備應配置日誌功能,記錄對與設備相關的安全事件。

 

操作:

# vi /etc/syslog.conf 手動添加如下

.info、*.err;auth.info /var/log/auth.log

# vi /etc/rsyslog.conf 手動添加如下

.info、*.err;auth.info /var/log/auth.log

# vi /etc/syslog-ng/syslog-ng.conf 手動添加如下

filter f_messages { level(info,notice,warn) and not facility(auth,authpriv,cron,daemon,mail,news); };


 

16. 檢查是否記錄帳戶登錄日誌

設備應配置日誌功能,對用戶登錄進行記錄,記錄內容包括用戶登錄使用的賬號,登錄是否成功,登錄時間,以及遠程登錄時,用戶使用的IP地址。

 

操作:

# vi /etc/syslog.conf 手動添加如下

auth.info   /var/adm/authlog

# vi /etc/rsyslog.conf 手動添加如下

auth.info   /var/adm/authlog

# vi /etc/syslog-ng/syslog-ng.conf 手動添加如下

filter f_messages { level(info,notice,warn) and not facility(auth,authpriv,cron,daemon,mail,news); };


 

17. 檢查是否禁止icmp重定向

主機系統應該禁止ICMP重定向,採用靜態路由。

 

操作:

# vi /etc/sysctl.conf

手動添加net.ipv4.conf.all.accept_redirects=0


 

18. 檢查是否配置日誌選項

系統上運行的應用/服務也應該配置相應日誌選項,比如cron。

 

操作:

# vi /etc/syslog.conf 手動添加如下

cron.*    /var/log/cronlog

# vi /etc/rsyslog.conf 手動添加如下

cron.*    /var/log/cronlog

# vi /etc/syslog-ng/syslog-ng.conf 手動添加如下

filter f_cron { facility(cron); };

destination cron { file("/var/log/cronlog"); };

log { source(src); filter(f_cron); destination(cron); };


 

19. 檢查是否配置遠程日誌保存

設備配置遠程日誌功能,將需要重點關註的日誌內容傳輸到日誌伺服器。

 

操作:

# vi /etc/syslog.conf 手動添加如下

  *.*   @192.168.0.1

# vi /etc/rsyslog.conf 手動添加如下

  *.*   @192.168.0.1

# vi /etc/syslog-ng/syslog-ng.conf 手動添加如下

filter f_auth { level(info) facility(auth); };

destination d_auth { udp("10.0.3.232" port(514));};

log { source(src); filter(f_ auth)destination(d_auth);};


 

20. 檢查是否使用ssh替代telnet服務

對於使用IP協議進行遠程維護的設備,設備應配置使用SSH等加密協議。

 

操作:

# service sshd start

# kill <telnet服務進程號>   //查看進程號:netstat –anp|more


 

21. 檢查是否限制root遠程登錄

限制具備超級管理員許可權的用戶遠程登錄。遠程執行管理員許可權操作,應先以普通許可權用戶遠程登錄後,再切換到超級管理員許可權賬號後執行相應操作。

 

操作:

# vi /etc/ssh/sshd_config 手動修改PermitRootLogin為no  //不允許root以ssh遠程登錄

# vi /etc/securetty 手動將含有pts的條目註釋   //pts是pesudo tty slave,是偽終端的slave端


 

22. 檢查用戶預設UMASK

控制用戶預設訪問許可權,當在創建新文件或目錄時 應屏蔽掉新文件或目錄不應有的訪問允許許可權。防止同屬於該組的其它用戶及別的組的用戶修改該用戶的文件或更高限制。

 

操作:

# vi /etc/profile 手動添加如下

umask 027

 

/etc/profile系統環境變數設置,對所有用戶產生影響。當用戶第一次登錄時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置。

umask值用於設置用戶在創建文件時的預設許可權,當我們在系統中創建目錄或文件時,目錄或文件所具有的預設許可權就是由umask值決定的。umask值一共有4組數字,其中第1組數字用於定義特殊許可權,我們一般不予考慮,與一般許可權有關的是後3組數字。

對於root用戶,系統預設的umask值是0022;對於普通用戶,系統預設的umask值是0002。執行umask命令可以查看當前用戶的umask值。

對於root用戶,他的umask值是022。當root用戶創建目錄時,預設的許可權就是用最大許可權777去掉相應位置的umask值許可權,即對於所有者不必去掉任何許可權,對於所屬組要去掉w許可權,對於其他用戶也要去掉w許可權,所以目錄的預設許可權就是755;當root用戶創建文件時,預設的許可權則是用最大許可權666去掉相應位置的umask值,即文件的預設許可權是644。

常用的umask值及對應的文件和目錄許可權

umask值 目錄 文件

  022   755  644

  027   750  640

  002   775  664

  006   771  660

  007   770  660


 

23. 檢查帳號文件許可權設置

在設備許可權配置能力內,根據用戶的業務需要,配置其所需的最小許可權。

 

操作:

# chmod 644 /etc/passwd

# chmod 400 /etc/shadow

# chmod 644 /etc/group

 

/etc/passwd:存放用戶信息文件夾,7個信息欄位如下:

用戶名: 密碼 : uid  : gid :用戶描述:主目錄:登陸shell

/etc/shadow:是passwd的影子文件。

在linux中,口令文件在/etc/passwd中,早期的這個文件直接存放加密後的密碼,前兩位是"鹽"值,是一個隨機數,後面跟的是加密的密碼。為了安全,現在的linux都提供了 /etc/shadow這個影子文件,密碼放在這個文件裡面,並且是只有root可讀的。

9個欄位如下:

1. 用戶名:由於密碼也需要與帳號對應啊~因此, 這個檔案的第一欄就是帳號,必須要與 /etc/passwd 相同才行!

2. 密碼:這個才是真正的密碼,而且是 經過編碼過的密碼啦! 你只會看到有一些特殊符號的字母就是了!需要特別留意的是, 雖然這些加密過的密碼很難被解出來,但是‘很難’不等於‘不會’,所以, 這個檔案的預設屬性是‘-rw-------’或者是‘-r--------’,亦即只有 root 才可以讀寫就是了!你得隨時註意,不要不小心更動了這個檔案的屬性呢!另外, 如果是在密碼欄的第一個字元為‘ * ’或者是‘ ! ’,表示這個帳號並不會被用來登入的意思。 所以萬一哪一天你的某個使用者不乖時,可以先在這個檔案中,將他的密碼欄位的最前面多加一個 * !嘿嘿!他就無法使用該帳號啰!直到他變乖了,再給他啟用啊!

3. 最近更動密碼的日期:這個欄位記錄了‘更動密碼的那一天’的日期, 不過,很奇怪呀!在我的例子中怎麼會是 12959 呢?呵呵,這個是因為計算 Linux 日期的時間是以 1970 年 1 月 1 日作為 1 ,而 1971 年 1 月 1 日則為 366 啦! 所以這個日期是累加的呢!得註意一下這個資料呦!那麼最近的 2005 年 1 月 1 日就是 12784 啦,瞭解了嗎?

4. 密碼不可被更動的天數: 第四個欄位記錄了這個帳號的密碼需要經過幾天才可以被變更!如果是 0 的話, 表示密碼隨時可以更動的意思。這的限制是為了怕密碼被某些人一改再改而設計的!如果設定為 20 天的話,那麼當你設定了密碼之後, 20 天之內都無法改變這個密碼呦!

5. 密碼需要重新變更的天數: 由於害怕密碼被某些‘有心人士’竊取而危害到整個系統的安全,所以有了這個欄位的設計。 你必須要在這個時間之內重新設定你的密碼,否則這個帳號將會暫時失效。 而如果像上面的 99999 的話,那就表示,呵呵,密碼不需要重新輸入啦! 不過,如果是為了安全性,最好可以設定一段時間之後,嚴格要求使用者變更密碼呢!

6. 密碼需要變更期限前的警告期限:當帳號的密碼失效期限快要到的時候, 就是上面那個‘必須變更密碼’的那個時間時, 系統會依據這個欄位的設定,發出‘警告’言論給這個帳號,提醒他‘再過 n 天你的密碼就要失效了,請儘快重新設定你的密碼呦!’,如上面的例子,則是密碼到期之前的 7 天之內,系統會警告該用戶。

7. 密碼過期的恕限時間:如果用戶過了警告期限沒有重新輸入密碼, 使得密碼失效了,也就是說,你在‘必須變更密碼的期限前,並沒有變更你的密碼!’ 那麼該組密碼就稱為‘失效的密碼’啰~怎麼辦?沒關係,還有這個欄位的天數設計啊~ 意思就是說,當密碼失效後,你還可以用這個密碼在 n 天內進行登入的意思。 而如果在這個天數後還是沒有變更密碼,呵呵!那麼您的帳號就失效了!無法登入!

8. 帳號失效日期:這個日期跟第三個欄位一樣,都是使用 1970 年以來的總日數設定。這個欄位表示: 這個帳號在此欄位規定的日期之後,將無法再使用。 這個欄位會被使用通常應該是在‘收費服務’的系統中, 你可以規定一個日期讓該帳號不能再使用啦!

9. 保留:最後一個欄位是保留的,看以後有沒有新功能加入。

 

/etc/group:用於存放用戶組信息,內容為4個欄位如下:

1.組名:組名是用戶組的名稱,由字母或數字構成。與/etc/passwd中的登錄名一樣,組名不應重覆。

2.口令:口令欄位存放的是用戶組加密後的口令字。一般Linux系統的用戶組都沒有口令,即這個欄位一般為空,或者是*。

3.組標識號(GID):組標識號與用戶標識號類似,也是一個整數,被系統內部用來標識組。

4.組內用戶列表:是屬於這個組的所有用戶的列表,不同用戶之間用逗號(,)分隔。這個用戶組可能是用戶的主組,也可能是附加組。

以root:x:0:root,linuxsir 為例:用戶組root,x是密碼段,表示沒有設置密碼,GID是0,root用戶組下包括root、linuxsir以及GID為0的其它用戶。


 

24. 檢查程式通信賬號周期要求

/etc/shadow中配置"postgres|oracle|sybase"口令過期時間小於等於180天。

 

操作:

# vi /etc/shadow 手動將這些用戶第5列值修改為180。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Findstr命令 findstr是Window系統自帶的命令,用途是查找指定的一個或多個文件文件中包含(或通過參數 /V來控制不包含)某些特定字元串的行,並將該行完整的信息列印出來,或者列印查詢字元串所在的文件名。 例如我們新建一個test.txt的文本文件。內容: 打開cmd視窗,執行語句: 這 ...
  • 為當前用戶創建cron服務 1. 鍵入 crontab -e 編輯crontab服務文件 例如 文件內容如下: */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 保存文件並並退出 */2 * * * * /bin/sh /home/a ...
  • 【資料】 http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp http://www.kerneltravel.net/ 【代碼】 https://cdn.kernel.org/pub/linux/kernel/v4.x/l ...
  • 前言 看了很久的操作系統原理,ucos源碼也看了大半,但是感覺總是懵懵懂懂,用句流行的網路用語就是始終上不了車,後來在網上被人推薦了一篇文章《建立一個屬於自己的操作系統》,這篇文章真的非常好,也附有源碼,但不知道是不是我找的文章有差錯還是啥,我根據文章提供的源碼貼代碼,根本無法編譯,然後開始讀代碼修 ...
  • 一. 命令: .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(註:tar是打包,不是壓縮!)———————————————.gz解壓1:gunzip FileName.gz解壓2:gzip -d FileName.gz壓縮:gz ...
  • l vi編輯器開發步驟 A)輸入 vi Hello.java B) 輸入 i 插入模式。 C)輸入 冒號。【保存退出:wq】【退出不保存:q!】 l 列出當前目錄的所有文件:ls 詳細信息的列表:ls -l l 1.編譯c程式:gcc(自動生成a.out) 2.輸入 ./a.out 運行c++程式。 ...
  • 一、查看官方提供的下載源 https://docs.puppet.com/guides/puppetlabs_package_repositories.html 二、 選擇對應系統的下載源 因為本機是CentOS 7.1,故選擇YUM源 https://yum.puppetlabs.com/ 三、 ...
  • 配置openswan ipsecvpn Tags: Linux [TOC] 實驗環境: OS: VPC1: VPC2: 安裝openswan 編輯 文件,啟用 在/etc/ipsec.d 目錄創建以下文件 配置VPC1 配置VPC2 啟動 IPSec/Openswan 編輯/etc/sysctl.c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...