歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> 學習Linux

Linux機器24項安全合規設置,linux機器24項

Linux機器24項安全合規設置,linux機器24項


Linux機器24項安全合規設置,linux機器24項


工作的一些內容,這是中國移動集團當前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。

http://xxxxxx/Linuxjc/1137423.html TechArticle

Copyright © Linux教程網 All Rights Reserved