Linux(Centos)安全加固方案总结
Linux安全加固方案總結
本人菜鳥一枚,通過CSDN文章,總結日常工作、學習到的經驗,供自己日常查閱與有需要伙伴查閱。
Linux系統加固主要通過以下幾個方面,實現系統安全加固。本文以Centos7作為例子,進行總結。
目錄
- 系統安全防線
- 1. 系統自帶防火墻iptables(Centos6)
- 2. 系統自帶防火墻firewalled(Centos7)
- 3. 開啟SELinux服務(Centos7)
- 1. 系統自帶防火墻iptables(Centos6)
- 身份鑒別
- 1.設置密碼復雜度策略
- 2.設置登錄策略
- 訪問控制
- 1.設置root用戶ssh登錄策略
- 2.禁止無用的系統用戶登錄
- 3.檢查是否存在除root以外的UID=0的用戶
- 4.允許或禁止用戶或組通過ssh登錄
- 安全審計
- 1. 查看進程運行是否正常
- 2.系統默認日志記錄范圍是否覆蓋
- 3. 查看系統登錄日志
- 入侵防范
- 1. 查看自身入侵可疑日志
- 2. 最小安裝原則
- 3. 檢查運行服務
- 4. 檢查服務運行情況
- 資源控制
- 1.TCP Wrappers程序管控
- 2.設置登錄超時時間
- 3. 設置普通用戶最大進程數、CPU、內存等
- 4.適當關閉外設-U盤、光盤等
系統安全防線
Linux防火墻策略設置主要三道防線;
1. 系統自帶防火墻iptables(Centos6)
??防火墻會從上至下的順序來讀取配置的策略規則,在找到匹配項后就立即結束匹配工作并去執行匹配項中定義的行為(即放行或阻止)。如果在讀取完所有的策略規則之后沒有匹配項,就去執行默認的策略。
??一般而言,防火墻策略規則的設置有兩種:一種是“通”(即放行),一種是“堵”(即阻止)。當防火墻的默認策略為拒絕時(堵),就要設置允許規則(通),否則誰都進不來;如果防火墻的默認策略為允許時,就要設置拒絕規則,否則誰都能進來,防火墻也就失去了防范的作用
- 基礎命令
??啟動: service iptables start
??關閉: service iptables stop
??查看狀態: iptables -V
??重啟 : service iptables restart
- 查看防火墻設置
?主要分為5種規則類型數據包:
??進行路由選擇前處理數據包(PREROUTING);
??處理流入的數據包(INPUT);
??處理流出的數據包(OUTPUT);
??處理轉發的數據包(FORWARD);
??進行路由選擇后處理數據包(POSTROUTING)
使用命令查看防火墻設置
iptables -L使用命令清除防火墻
iptables -F- 設置防火墻策略
使用iptables命令進行添加刪減。
開放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ??#允許本地回環接口(即運行本機訪問本機)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ??#允許已建立的或相關連的通行
iptables -A OUTPUT -j ACCEPT ??#允許所有本機向外的訪問
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ??#允許訪問22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT ??#允許訪問80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT ??#允許ftp服務的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT ??#允許FTP服務的20端口
iptables -A INPUT -j reject ??#禁止其他未允許的規則訪問
iptables -A FORWARD -j REJECT ??#禁止其他未允許的規則訪問
屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP ??#屏蔽單個IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP ??#封整個段即從123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP ??#封IP段即從123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP ??#封IP段即從123.45.6.1到123.45.6.254的命令是
或者直接在路徑/etc/sysconfig下,對文件iptables編輯。
配置完成記得重啟防火墻命令
更多iptables配置命令詳見
2. 系統自帶防火墻firewalled(Centos7)
- 基礎命令
??啟動: systemctl start firewalld
??重啟: systemctl restart firewalld
??關閉: systemctl stop firewalld
??查看狀態: systemctl status firewalld
??開機禁用 : systemctl disable firewalld
??開機啟用 : systemctl enable firewalld
前臺可視化界面-防火墻設置也可以設置
另外,命令具體參看-更多firewalls配置命令詳見
3. 開啟SELinux服務(Centos7)
??SELinux(Security-Enhanced Linux)是美國國家安全局在Linux開源社區的幫助下開發的一個強制訪問控制(MAC,Mandatory Access Control)的安全子系統。RHEL7系統使用SELinux技術的目的是為了讓各個服務進程都受到約束,使其僅獲取到本應獲取的資源。
簡單概述下基本的三種安全訪問控制類型
??MAC(強制訪問控制類型)
??DAC(自主訪問控制類型) --通常就是ACL策略居多
??RABC(基于角色訪問控制類型)
安全性MAC>RABC>DAC
- SELinux 有三種工作模式,分別是
enforcing:強制模式。違反 SELinux 規則的行為將被阻止并記錄到日志中,并且自動攔截
permissive:寬容模式。違反 SELinux 規則的行為只會記錄到日志中,只告警不攔截。一般為調試用。
disabled:關閉 SELinux。不攔截不告警。
配置文件路徑:/etc/selinux,通過查看config,了解目前運行狀態
- 查看命令
或者使用命令進行查詢
[root@localhost selinux]# getenforce Enforcing [root@localhost selinux]#- 臨時修改命令(不用重啟機器):
身份鑒別
1.設置密碼復雜度策略
- 通過設置/etc/login.defs文件,進行密碼策略設置
PASS_MAX_DAYS 180
#密碼最大有效期
PASS_MIN_DAYS 1
#兩次修改密碼的最小間隔時間
PASS_MIN_LEN 8
#密碼最小長度,對于root無效
PASS_WARN_AGE 7
#密碼過期前多少天開始提示
上述對新增用戶有效,如需修改現有策略,需使用chage命令
chage命令詳解
2.設置登錄策略
- 使用cracklib模塊設置密碼復雜度
通過命令rpm -qa|grep cracklib --查看服務是否運行
(1)修改/etc/pam.d/system-auth,修改策略。
策略詳解
PS:對普通用戶有效,對root無效。
(2)記錄用戶登錄失敗次數并鎖定
在/etc/pam.d/system-auth中“#%PAM-1.0”下面一行加入
auth required pam tally2.so onerr=fail deny=10 no magic root unlock time=300 注意:一定要加在#%PAM-1.0下面一行
參數說明:
| unlock_time | 解鎖時間 |
| even_deny_root | 同時限制root用戶 |
| root_unlock_time[=n] | 設定root鎖定后,多少時間解鎖 |
| quiet | 不對已鎖定用戶發出提示消息 |
root策略建議謹慎設置,否則很容易導致無法解鎖root
設置了unlock_time會自動解鎖。否則需要手動解鎖。
運行命令pam_tally2 -u 用戶 -r(3)如果啟用了SSH遠程登錄,可以通過命令看配置
more /etc/ssh/sshd_config設置LoginGraceTime 15m #賬號鎖定時間15分鐘
MaxAuthTries 3 #賬號鎖定閾值
訪問控制
1.設置root用戶ssh登錄策略
- 禁止root用戶遠程ssh登錄
通過修改 /etc/ssh/sshd_config,將參數修改#PermitRootLogin no
重啟ssh服務
2.禁止無用的系統用戶登錄
通過命令 usermod -s /sbin/nologin 用戶 --禁止用戶遠程登錄` 通過命令 usermod -s /bin/bash 用戶名 --恢復允許用戶遠程登錄`查看/etc/passwd 表示用戶是否可以登錄。
3.檢查是否存在除root以外的UID=0的用戶
通過命令 awk -F: '($3==0){print $1}' /etc/passwd --輸出當前uid=0的用戶4.允許或禁止用戶或組通過ssh登錄
- 設置ssh用戶白名單、黑名單
增加用戶(允許、白名單)
AllowUsers 用戶1 用戶2
或
添加用戶組
AllowGroups 組1 組2
PS:取交集,意思兩個同時允許才可以。其他禁止
取消用戶(禁止、黑名單)
DenyUsers 用戶1
或
DenyGroups 組1
PS:取并集,有一個設置了不允許都會不允許。
5.檢查新建文件系統權限默認值
通過umask,權限掩碼值檢查當前用戶新建文件、文件夾默認權限。root用戶正常是022。
022的意思是,用文件夾最大權限777(rwxrwxrwx)-當前設置權限755(rwx-r-xr-x) = 022,為什么文件夾默認配置了執行-x權限,因為文件夾沒執行的話進不去,就沒意義了。
而文件權限默認都沒有執行,所以就是默認最大666(rw-rw-rw)-644(rw-r–r--=002)。
普通用戶默認值是002
6.查看重點文件權限是否合理
如/etc/shadow /etc/passwd(744)/etc/group /etc/inittab /etc/lilo.conf /etc/grub.conf /etc/xinetd.conf /etc/crontab /etc/securetty /etc/rc.d/init.d /var/log/messages/var/log/wtmp /var/run/utmp /var/spool/cron /usr/sbin/init /etc/login.defs(644)/etc/*.conf /sbin/bin /etc/init.d /etc/xinetd.d 等等
安全審計
- 標準基線
本地安全審計日志功能是否正常打開運行
安裝第三方工具等
1. 查看進程運行是否正常
[root@localhost selinux]# ps -ef |grep syslogd --查看進程服務情況 [root@localhost selinux]# ps aux|grep syslogd [root@localhost selinux]# ps -ef|grep auditd --查看守護進程情況2.系統默認日志記錄范圍是否覆蓋
查看/etc/rsyslog.conf配置文件。
rsyslog詳解
3. 查看系統登錄日志
命令lastlog --查詢登錄用戶、端口、時間等 命令last -x --顯示系統關閉、用戶登錄和退出的歷史更多last命令詳解
命令lastb --列出失敗嘗試的登錄信息入侵防范
能記錄、檢測到入侵行為,能記錄入侵者ip、主機名、時間等。建議有條件安裝第三方設備如HIDS、NIDS等。
1. 查看自身入侵可疑日志
通過查看日志,可疑識別非法訪問或可疑的暴力破解。
more /var/log/secure | grep fail2. 最小安裝原則
3. 檢查運行服務
命令service --status-all --檢查是否有非必要服務,如ftp、smtp等4. 檢查服務運行情況
netstat-lp(查看開啟服務)
netstat -an(查看開啟的端口)
netstat-anlp(查看開啟的端口及服務)
資源控制
1.TCP Wrappers程序管控
通過設置/etc/hosts.allow和/etc/hosts.deny文件
順序:
1./etc/hosts.allow
2./etc/hosts.deny
3.以上都不符合,則放行
- /etc/hosts.allow
ssh允許單個ip
sshd:192.168.220.1
ssh允許ip段
sshd:192.168.220.
telnet允許單個ip
in.telnetd:192.168.220.1
telnet允許ip段
in.telnetd:192.168.221.
- /etc/hosts.deny
sshd:ALL
in.telnetd:ALL
禁止相關服務
2.設置登錄超時時間
通過命令查看cat /etc/profile |grep TMOUTvi /etc/profile 添加export TMOUT=600 --600秒超時3. 設置普通用戶最大進程數、CPU、內存等
進入 /etc/security/limits.conf 文件下,
增加代碼roxy soft nproc 10240roxy hard nproc 10240roxy soft nofile 10240roxy hard nofile 10240注:roxy 為需要修改線程數的用戶名,10240 為設置的進程數和文件數限制,可根據需要修改。
也可以用ulimit命令 詳見ulimit命令用法
4.適當關閉外設-U盤、光盤等
在vi /etc/modprobe.d/blacklist.conf 里添加一行:
blacklist usb-storage
執行命令生效modprobe -r usb-storage總結
以上是生活随笔為你收集整理的Linux(Centos)安全加固方案总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql AES加密存储,解密读取
- 下一篇: linux虚拟机流畅,启用3D加速让Ub