對於企業來說,安全加固是一門必做的安全措施。主要分為:賬號安全、認證授權、協議安全、審計安全。總的來說,就是4A(統一安全管理平台解決方案),賬號管理、認證管理、授權管理、審計管理。用漏洞掃描工具掃描了一下自己的阿里雲主機,發現很多系統問題不合格,所以列舉總結了以下Linux系統安全加固的方法,僅供參考。
1、用戶賬號---唯一身份。
2、統一認證---你是誰。
3、授權管理---你有什么權限。
4、操作審計---你可以干什么。
以下文檔規定了國內4A認證公司系統維護管理的Linux操作系統的主機應當遵循的操作系統安全性設置標准,旨在之道系統管理人員或者安全檢查人員進行Linux操作系統的安全合規性檢查和配置。
第一類:賬號口令
1)、口令生存期
[root@wenzhiyi ~]# vim /etc/login.defs PASS_MAX_DAYS 90 用戶的密碼不過期最多的天數 PASS_MIN_DAYS 10 密碼修改之間最小的天數 PASS_WARN_AGE 7 口令失效前多少天開始通知用戶修改密碼
2)、口令復雜度
[root@wenzhiyi ~]# vim /etc/pam.d/system-auth,在文件中找到如下內容: password requisite pam_cracklib.so 將其修改為: password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8 備注:至少包含一個數字、一個小寫字母、一個大寫字母、一個特殊字符、且密碼長度>=8
3)、版本信息
[root@wenzhiyi ~]# cat /etc/system-release CentOS release 6.8 (Final)
4)、限制某用戶登陸
[root@wenzhiyi ~]#vim /etc/hosts.deny 對配置文件進行修改 添加內容: #禁止192.168.0.254用戶對服務器進行ssh的登陸 sshd : 192.168.0.254 或者用防火牆策略: iptables -I INPUT -s 61.37.81.1 -j DROP # 61.37.81.1的包全部屏蔽 iptables -I INPUT -s 61.37.81.0/24 -j DROP #61.37.81.1到61.37.81.255的訪問全部屏蔽 iptables -I INPUT -s 192.168.1.202 -p tcp --dport 80 -j DROP # 192.168.1.202的80端口的訪問全部屏蔽 iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j DROP #192.168.1.1~192.168.1.1255的80端口的訪問全部屏蔽
5)、檢查是否有除root用戶以外UID為0的用戶
[root@wenzhiyi ~]# awk -F “:” '($3==0) {print $1} ' /etc/passwd 操作系統Linux超級用戶策略安全基線要求項目,要求除roo外不能有UID為0的用戶。
6)、登錄超時限制
[root@wenzhiyi ~]# cp -p /etc/profile /etc/profile_bak [root@wenzhiyi ~]# vi /etc/profile TMOUT=300 export TMOUT
7)、檢查是否使用PAM認證模塊禁止wheel組之外的用戶su為root
[root@wenzhiyi ~]# #vim /etc/pam.d/su # 新添加以下兩行
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
注意:auth與sufficient之間由兩個tab建隔開,sufficient與動態庫路徑之間使用一個tab建隔開
然后,:usermod -G wheel username #username為需要添加至wheel組的用戶名稱,將用戶添加到wheel組。注意,第一步加固表明只有wheel組中的用戶才能使用su命令切換到root用戶,因此必須將需要切換到root的用戶添加到wheel組,以使它可以使用su命令成為root用戶,如果系統不存在wheel組,則新增,新增方法:groupadd wheel。
PAM(Pluggable Authentication Module)是一個可插入式認證模塊,在Linux系統中,各種不同的應用程序都需要完成認證功能,為了實現統一調配,把所有需要認證的功能做成一個模塊(認證機制特別復雜的除外,如:https),當特定的程序需要完成認證功能的時候,就去調用PMA的認證模塊
第二類:協議安全
1)、限制root用戶遠程登錄SSH
[root@wenzhiyi ~]# grep -v "[[:space:]]*#" /etc/ssh/sshd_config |grep "PermitRootLogin no" PermitRootLogin no 並且修改為protocol 2
2)、使用SSH協議進程遠程登陸
[root@wenzhiyi ~]# #cp -p /etc/xinetd.d/telnet /etc/xinetd.d/telnet_bak [root@wenzhiyi ~]# /etc/xinetd.d/telnet(vi /etc/xinetd.d/telnet), 把disable項改為yes,即disable = yes. [root@wenzhiyi ~]# #service xinetd restart
使用Telnet這個用來訪問遠程計算機的TCP/IP協議以控制你的網絡設備,相當於在離開某個建築時大喊你的用戶名和口令。很快會有人進行監聽,並且他們會利用你安全意識的缺乏。傳統的網絡服務程序如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。SSH是替代Telnet和其他遠程控制台管理應用程序的行業標准。SSH命令是加密的並以幾種方式進行保密。 在使用SSH的時候,一個數字證書將認證客戶端(你的工作站)和服務器(你的網絡設備)之間的連接,並加密受保護的口令。
3)、禁止root用戶登陸FTP
[root@wenzhiyi ~]##cat /etc/pam.d/vsftpd auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #其中file=/etc/vsftpd/ftpusers即為當前系統上的ftpusers文件. [root@wenzhiyi ~]#echo “root” >> /etc/vsftpd/ftpusers daemon bin sys lp uucp nuucp listen nobody noaccess nobody4 root
4)、禁止匿名FTP
[root@wenzhiyi ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #如果存在anonymous_enable則修改,如果不存在則手動增加
5)、預防Flood攻擊
[root@wenzhiyi ~]# vim /etc/sysctl.conf
[root@wenzhiyi ~]# net.ipv4.tcp_syncookies = 1
[root@wenzhiyi ~]# sysctl -p 讓命令生效
第三類:認證權限
1)、文件與目錄缺省權限控制
[root@wenzhiyi ~]#cp /etc/profile /etc/profile.bak
[root@wenzhiyi ~]# vim /etc/profile
umask 027
[root@wenzhiyi ~]#source /etc/profile
2)、配置用戶最小權限
[root@wenzhiyi ~]# chmod 644 /etc/passwd
[root@wenzhiyi ~]# chmod 400 /etc/shadow
[root@wenzhiyi ~]# chmod 644 /etc/group
第四類:日志審計
什么是日志?簡單地說,日志就是計算機系統、設備、軟件等在某種情況下記錄的信息。具體的內容取決於日志的來源。例如,Linux操作系統會記錄用戶登錄和注銷的消息,防火牆將記錄ACL通過和拒絕的消息,磁盤存儲系統在故障發生或者在某些系統認為將會發生故障的情況下生成日志信息。日志中有大量信息,這些信息告訴你為什么需要生成日志,系統已經發生了什么。
例如,Web服務器一般會在有人訪問Web頁面請求資源(圖片、文件等等)的時候記錄日志。如果用戶訪問的頁面需要通過認證,日志消息將會包含用戶名。這就是日志數據的一個例子:可以使用用戶名來判斷誰訪問過一個資源。通過日志,IT管理人員可以了解系統的運行狀況,安全狀況,甚至是運營的狀況。
1)、啟用遠程日志功能
Linux上通常可以通過rsyslog來實現系統日志的集中管理,這種情況下通常會有一個日志服務器,然后每個機器配置自己日志通過rsyslog來寫到遠程的日志服務器上。
rsyslog是一個開源工具,被廣泛用於Linux系統以通過TCP/UDP協議轉發或接收日志消息。rsyslog守護進程可以被配置成兩種環境,一種是配置成日志收集服務器,rsyslog進程可以從網絡中收集其它主機上的日志數據,這些主機會將日志配置為發送到另外的遠程服務器。rsyslog的另外一個用法,就是可以配置為客戶端,用來過濾和發送內部日志消息到本地文件夾(如/var/log)或一台可以路由到的遠程rsyslog服務器上。
假定你的網絡中已經有一台已經配置好並啟動的rsyslog服務器,本指南將為你展示如何來設置CentOS系統將其內部日志消息路由到一台遠程rsyslog服務器上。這將大大改善你的系統磁盤空間的使用,尤其是當你還沒有一個用於/var目錄的獨立的大分區。
[root@wenzhiyi ~]# vim /etc/rsyslog.conf,增加如下內容:
*.* @Syslog日志服務器IP ###注意:*和@之間存在的是tab鍵,非空格。
2)、檢查是否記錄安全事件日志
[root@wenzhiyi ~]# vim /etc/syslog.conf 或者 /etc/rsyslog.conf,在文件中加入如下內容:
*.err;kern.debug;daemon.notice /var/log/messages
[root@wenzhiyi ~]# chmod 640 /var/log/messages
[root@wenzhiyi ~]# service rsyslog restart
