centos7 安全加固
目錄html
一.密碼長度與有效期
二.密碼複雜度… 3
三.新口令不能與4個最近使用的相同… 4
四.設置會話超時(5分鐘)… 5
五.設置history命令時間戳… 6
六.設置登錄失敗鎖定… 7
七.禁止root經過ssh遠程登陸… 8
八.SSH 配置參數加強… 9
九.設置SSH登陸警告語… 10
十.設置umask值… 11
十一.禁止Control-Alt-Delete 鍵盤重啓系統命令… 13
十二. 隱藏系統版本信息… 14
十三.設置grup密碼… 14
十四.最大文件打開數(文件句柄數)… 17
十五.用戶最大進程數… 17
十六.系統參數調優… 18
Linux安全加固手冊… 22
1 身份鑑別… 22
1.1 安全的遠程管理方式… 22
2 訪問控制… 23
3 安全審計… 24
3.1 審覈策略開啓… 24
3.2 日誌屬性設置… 25
4 入侵防護… 26
5 系統資源控制… 26
5.1 訪問控制… 26
5.2 超時鎖定… 27
6 最佳經驗實踐… 28
6.1 DOS攻擊防護… 28
6.2 歷史命令… 29
vim
一.密碼長度與有效期
默認配置:
[root@i-1y3we23j ~]# cat /etc/login.defs |grep PASS_ |grep -v '#'
-
PASS_MAX_DAYS 99999centos
-
PASS_MIN_DAYS 0安全
-
PASS_MIN_LEN 5bash
-
PASS_WARN_AGE 7服務器
加固方案:
1.備份配置文件:
# cp -a /etc/login.defs /etc/login.defs.default
2.編輯配置文件並將相關參數改爲以下
# vi /etc/login.defs
- PASS_MAX_DAYS 90
- PASS_MIN_DAYS 6
- PASS_MIN_LEN 8
- PASS_WARN_AGE 30
備註:
/etc/login.defs文件的pass_min_len 參數並不具有強制性,測試仍然能夠設置7位密碼。最終須要cracklib來實現。cookie
參數說明:網絡
-
PASS_MAX_DAYS 密碼有效期運維
-
PASS_MIN_DAYS 修改密碼的最短時間限
-
PASS_MIN_LEN 密碼最短長度
-
PASS_WARN_AGE 密碼過時提醒
二.密碼複雜度
默認配置:
[root@i-1y3we23j ~]# cat /etc/pam.d/system-auth | grep "pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type="
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
加固方案:
1.備份配置文件:
cp -a /etc/pam.d/system-auth /etc/pam.d/system-auth.default
2.編輯配置文件
# vim /etc/pam.d/system-auth
將
- password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
註釋並在其下面新增1行
- password requisite pam_cracklib.so try_first_pass minlen=8 difok=5 dcredit=-1 lcredit=-1 ocredit=-1 retry=1 type=
3.保存配置文件
備註:
try_first_pass而當pam_unix驗證模塊與password驗證類型一塊兒使用時,該選項主要用來防止用戶新設定的密碼與之前的舊密碼相同。
-
nlen=8:最小長度8位
-
fok=5:新、舊密碼最少5個字符不一樣
-
redit=-1:最少1個數字
-
redit=-1:最少1個小寫字符,(ucredit=-1:最少1個大寫字符)
-
redit=-1:最少1個特殊字符
-
try=1:1次錯誤後返回錯誤信息
-
pe=xxx:此選項用來修改缺省的密碼提示文本
三.新口令不能與4個最近使用的相同
默認配置:
[root@i-1y3we23j ~]# cat /etc/pam.d/system-auth |grep use_authtok
ssword sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
加固方案:
1.備份配置文件
2.編輯配置文件:
vi /etc/pam.d/system-auth
在password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok 所在行的後面添加
member=5
3.保存配置文件
備註:
記住5個歷史密碼
四.設置會話超時(5分鐘)
默認配置:
無
加固方案:
1.備份配置文件:
cp -a /etc/profile /etc/profile.default
2.編輯配置文件:
vi /etc/profile
在文件的末尾添加參數
port TMOUT=300
3.保存配置文件
備註:
- 五分鐘無操做中斷登陸會話
五.設置history命令時間戳
默認配置:
無
加固方案:
1.備份配置文件:
略
2.編輯配置文件:
vi /etc/profile
在文件的末尾添加參數
export HISTTIMEFORMAT="%F %T
whoami
"
3.保存配置文件
六.設置登錄失敗鎖定
(只能限定終端登陸,圖形界面依然能夠登陸)
默認配置:
無
加固方案:
1.備份配置文件
1)方法一:
- /etc/pam.d/login中設定控制檯;
- /etc/pam.d/sshd中設定SSH
- /etc/pam.d/sshd中第二行添加下列信息
###########參數解釋############
查看用戶登陸失敗次數
# pam_tally2 --user root
解鎖用戶
# pam_tally2 -r -u root
even_deny_root 也限制root用戶(默認配置就鎖定root賬號);
deny 設置普通用戶和root用戶連續錯誤登錄的最大次數,超過最大次數,則鎖定該用戶
unlock_time 設定普通用戶鎖定後,多少時間後解鎖,單位是秒;
root_unlock_time 設定root用戶鎖定後,多少時間後解鎖,單位是秒;
2)、方法二編輯配置文件:
\# vi /etc/pam.d/system-auth
在# User changes will be destroyed the next time authconfig is run.行的下面,添加
auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800
3.保存配置文件
備註:
經過終端登陸,5次登陸失敗後鎖定帳號30分鐘,鎖按期間此帳號沒法再次登陸。
七.禁止root經過ssh遠程登陸
默認配置:
\# cat /etc/ssh/sshd_config |grep PermitRootLogin
#PermitRootLogin yes
加固方案:
1.備份配置文件
\# cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.default
2.編輯配置文件
vi /etc/ssh/sshd_config
將配置參數#PermitRootLogin yes改爲PermitRootLogin no
3.保存配置文件
4.重啓ssh服務
# /etc/init.d/sshd restart
八.SSH 配置參數加強
1.備份配置文件
2.編輯配置文件
\#vi /etc/ssh/sshd_config
(1)禁止空密碼登陸
將#PermitEmptyPasswords no參數的註釋符號去掉,改爲
PermitEmptyPasswords no
(2)關閉ssh的tcp轉發
將#AllowTcpForwarding yes參數改爲
AllowTcpForwarding no
(3)關閉S/KEY(質疑-應答)認證方式
將#ChallengeResponseAuthentication yes參數,改爲
ChallengeResponseAuthentication no
(4)關閉基於GSSAPI 的用戶認證
將GSSAPIAuthentication yes參數,改爲
GSSAPIAuthentication no
3.保存配置文件
4.重啓ssh服務
九.設置SSH登陸警告語
默認配置:
無
加固方案:
1.備份配置文件
# 略
2.編輯配置文件
\#vi /etc/ssh/sshd_config
找到#Banner none參數,在其下一行,增長
Banner /etc/ssh/alert
3.保存配置文件
4新增告警信息文件.
\#vi /etc/ssh/alert
文件內容,設置成
******************************************************* 這裏的內容本身定義,能夠提示一下登陸的用戶引發運維人員重視 Warning!!!Any Access Without Permission Is Forbidden!!! *******************************************************
5.保存後重啓ssh服
十.設置umask值
默認配置:
# umask
0022
加固方案:
1.備份配置文件
\# cp -a /etc/bashrc /etc/bashrc.default
2.編輯配置文件
\# vi /etc/bashrc
在文件末尾增長參數
umask 027
3.保存配置文件
4. 備份配置文件
\# cp -a /etc/profile /etc/pr ofile.default
5.編輯配置文件
\# vi /etc/profile
在文件末尾增長參數
umask 027
6.保存配置文件
備註:
將umask值設置成0027,用於拿掉新增目錄與文件的非全部者和全部者所屬組的訪問權限
默認:
新增目錄權限755,即rxwr-xr-x
新增文件權限644,即
rw-r–r—
加固後:
新增目錄權限750,即rxwr-x—
新增文件權限640,即
rw-r-----
十一.禁止Control-Alt-Delete 鍵盤重啓系統命令
默認配置:
ls /usr/lib/systemd/system/ctrl-alt-del.target
加固方案:
1.備份配置文件
cp -a /usr/lib/systemd/system/ctrl-alt-del.target /usr/lib/systemd/system/ctrl-alt-del.target.default
2.移除該原源文件
rm -rf /usr/lib/systemd/system/ctrl-alt-del.target
十二. 隱藏系統版本信息
默認配置:
加固方案:
執行如下命令:
\#mv /etc/issue /etc/issue.bak
\#mv /etc/issue.net /etc/issue.net.bak
備註:登陸界面顯示系統版本信息
十三.設置grup密碼
默認配置:
無
加固方案:
1.備份配置文件
cp -a /etc/grub.d/00_header /etc/grub.d/00_header.default
2.使用grub2-mkpasswd-pbkdf2 加密
使用grub2-mkpasswd-pbkdf2 加密密碼(密碼本身定義,可是必定得保存好不然最後連本身都登陸不進去)
操做進行GRUB加密碼的2種方式
密文密碼
[root@localhost ~]# grub2-mkpasswd-pbkdf2 Enter password: Reenter password: PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.B157F42E96462AB239C03000F113D32EB18FD48073F1FC7D8F87A8F3B3F89F662424ECCAB901F3A812A997E547FD520F3E99D0E080F4FE8B05E019757E34F75B.29C83F87B4B6C086FC9A81E046CC3623CC5CF2F82128EDC3A0364894E429D4993B28563F82D71BF346188108CBD4341FC4A71B90E543581646B4E7EAE920C54A
3.添加如下配置到該文件的最後面
(特別須要注意 用戶名root和密文之間是空格分隔,而不是換行)
cat <<EOF set superusers='root' password_pbkdf2 root grub.pbkdf2.sha512.10000.B157F42E96462AB239C03000F113D32EB18FD48073F1FC7D8F87A8F3B3F89F662424ECCAB901F3A812A997E547FD520F3E99D0E080F4FE8B05E019757E34F75B.29C83F87B4B6C086FC9A81E046CC3623CC5CF2F82128EDC3A0364894E429D4993B28563F82D71BF346188108CBD4341FC4A71B90E543581646B4E7EAE920C54A E0F
4.執行命令grub2-mkconfig -o /boot/grub2/grub.cfg
從新編譯生成grub.cfg文件
明文密碼
①修改/etc/grub.d/00_header,在文件末尾添加如下命令
保存並退出
②從新編譯生成grub.cfg
重啓檢驗
成功:
十四.最大文件打開數(文件句柄數)
默認配置:
[root@i-1y3we23j ~]# ulimit -n
1024
加固方案:
1.備份配置文件
cp -a /etc/security/limits.conf /etc/security/limits.conf.default
2.添加如下兩行配置到limits.conf文件最後
soft nofile 65535 hard nofile 65535
備註:修改全部用戶的最大文件打開數爲65535
十五.用戶最大進程數
默認配置:
[root@i-1y3we23j ~]# cat /etc/security/limits.d/20-nproc.conf
Default limit for number of user's processes to prevent accidental fork bombs. See rhbz #432903 for reasoning. soft nproc 4096 root soft nproc unlimited
加固方案:
1.備份配置文件
cp -a /etc/security/limits.d/20-nproc.conf /etc/security/limits.d/20-nproc.conf.default
2.修改配置文件
vim /etc/security/limits.d/20-nproc.conf
soft nproc 65535 hard nproc 65535
備註:修改全部用戶的最大進程數爲65535
十六.系統參數調優
默認配置:
無
加固方案:
1.備份配置文件
cp -a /etc/sysctl.conf /etc/sysctl.conf.default
2.添加如下調優參數到該文件中
net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.route.gc_timeout = 20 net.ipv4.tcp_retries2 = 5 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_wmem = 8192 131072 16777216 net.ipv4.tcp_rmem = 32768 131072 16777216 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.core.somaxconn = 262144 net.core.netdev_max_backlog = 262144 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.route.gc_timeout = 20 net.ipv4.ip_local_port_range = 10024 65535 net.ipv4.tcp_retries2 = 5 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_wmem = 8192 131072 16777216 net.ipv4.tcp_rmem = 32768 131072 16777216 net.ipv4.tcp_mem = 94500000 915000000 927000000 fs.file-max = 65535 kernel.pid_max = 65536 net.ipv4.tcp_wmem = 4096 87380 8388608 net.core.wmem_max = 8388608 net.core.netdev_max_backlog = 5000 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_max_syn_backlog = 10240 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 120 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_max_tw_buckets = 36000
Linux安全加固手冊
1 身份鑑別
1.1 安全的遠程管理方式
當對服務器進行遠程管理時,應採起必要措施,防止鑑別信息在網絡傳輸過程當中被竊聽。
防止遠程管理過程當中,密碼等敏感信息被竊聽
執行以下語句,查看telnet服務是否在運行
netstat -anptu | grep ":23"
禁止telnet運行,禁止開機啓動:
chkconfig telnet off //禁止開機運行 netstat -anptu | grep ":23" //查看23號端口狀態,telnet已關閉
2 訪問控制
應及時刪除多餘的、過時的賬戶,避免共享賬戶的存在。
刪除或禁用臨時、過時及可疑的賬號,防止被非法利用。
主要是管理員建立的普通賬號,如:test
# usermod -L user 禁用賬號,賬號沒法登陸,/etc/shadow第二欄顯示爲!開頭
# userdel user 刪除user用戶
# userdel -r user將刪除user用戶,而且將/home目錄下的user目錄一併刪除
3 安全審計
3.1 審覈策略開啓
審計範圍應覆蓋到服務器和重要客戶端上的每一個操做系統用戶和數據庫用戶;
開啓審覈策略,若往後系統出現故障、安全事故則能夠查看系統日誌文件,排除故障、追查入侵者的信息等。
查看rsyslog與auditd服務是否開啓
rsyslog通常都會開啓,auditd如沒開啓,執行以下命令:
1 | # systemctl start auditd |
---|---|
auditd服務開機啓動
1 | # systemctl start auditd |
---|---|
3.2 日誌屬性設置
應保護審計記錄,避免受到未預期的刪除、修改或覆蓋等。
防止重要日誌信息被覆蓋
讓日誌文件轉儲一個月,保留6個月的信息,先查看目前配置,
1 | # more /etc/logrotate.conf | grep -v "^#\|^$" |
---|---|
須要修改配置爲下圖所示:
4 入侵防護
操做系統遵循最小安裝的原則,僅安裝須要的組件和應用程序,並經過設置升級服務器等方式保持系統補丁及時獲得更新。
關閉與系統業務無關或沒必要要的服務,減少系統被黑客被攻擊、滲透的風險。
禁用藍牙服務
1 | # systemctl stop bluetooth |
---|---|
禁止藍牙開機啓動
5 系統資源控制
5.1 訪問控制
應經過設定終端接入方式、網絡地址範圍等條件限制終端登陸。
對接入服務器的IP、方式等進行限制,能夠阻止非法入侵。
- 在/etc/hosts.allow和/etc/hosts.deny文件中配置接入限制
最好的策略就是阻止全部的主機在「/etc/hosts.deny」文件中加入「 ALL:ALL@ALL, PARANOID 」,而後再在「/etc/hosts.allow」 文件中加入全部容許訪問的主機列表。以下操做:
編輯 hosts.deny文件(vi /etc/hosts.deny),加入下面該行:
1 2 | # Deny access to everyone. ALL``: ``ALL``@``ALL``, PARANOID |
---|---|
編輯hosts.allow 文件(vi /etc/hosts.allow),加入容許訪問的主機列表,好比:
ftp: 202.54.15.99 foo.com //202.54.15.99是容許訪問 ftp 服務的 IP 地址
//foo.com 是容許訪問 ftp 服務的主機名稱。
- 也能夠用iptables進行訪問控制
5.2 超時鎖定
應根據安全策略設置登陸終端的操做超時鎖定。
設置登陸超時時間,釋放系統資源,也提升服務器的安全性。
/etc/profile中添加以下一行
1 2 | exprot TMOUT``=``900 //``15``分鐘 # source /etc/profile |
---|---|
改變這項設置後,必須先註銷用戶,再用該用戶登陸才能激活這個功能。
若是有須要,開啓屏幕保護功能
設置屏幕保護:設置 -> 系統設置 -> 屏幕保護程序,進行操做
6 最佳經驗實踐
對Linux系統的安全性提高有必定幫助。
6.1 DOS攻擊防護
防止拒絕服務攻擊
TCP SYN保護機制等設置
1)打開 syncookie:
# echo「1」>/proc/sys/net/ipv4/tcp_syncookies //默認爲1,通常不用設置
表示開啓SYN Cookies。當出現SYN等待隊列溢出時,啓用cookies來處理,可防範少許SYN攻擊,默認爲0,表示關閉;
2)防syn 攻擊優化
用vi編輯/etc/sysctl.conf,添加以下行:
1 | net.ipv4.tcp_max_syn_backlog ``= 2048 |
---|---|
進入SYN包的最大請求隊列.默認1024.對重負載服務器,增長該值顯然有好處.可調整到2048.
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SA3fIBEU-1597817934742)(file:///C:/Users/teng/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png)]
6.2 歷史命令
爲歷史的命令增長登陸的IP地址、執行命令時間等
1)保存1萬條命令
1 | # sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile |
---|---|
2)在/etc/profile的文件尾部添加以下行數配置信息:
source /etc/profile讓配置生效