說明:CentOS7系統基礎命令使用變化:(wget與curl經常被用於木馬下載,自動挖礦腳本執行,顧將默認的命令進行了rename)
- wget → mywget
- curl → mycurl
定時任務添加無法保存時,請執行如下命令解鎖相關文件后再次添加定時任務:
[root@CN-localhost ~]# lsattr /var/spool/cron/root # <--該文件被鎖定(文件有i標志位),
# 添加root用戶定時任務時,需要先使用命令進行解鎖(chattr -i /var/spool/cron/root),解鎖后可以使用cront -e命令添加定時任務
----i----------- /var/spool/cron/root
CentOS7系統優化
最大文件打開數/文件句柄優化(推薦)
## 備份配置文件
cp -a /etc/security/limits.conf{,.bak}
## 添加以下兩行配置到該文件最后
* soft nofile 65536
* hard nofile 65536
用戶最大進程數(推薦)
## 1.備份配置文件
cp -a /etc/security/limits.d/20-nproc.conf{,.bak}
## 2.修改配置文件
vim /etc/security/limits.d/20-nproc.conf
* soft nproc 65536
* hard nproc 65536
root soft nproc unlimited
關閉防火牆(推薦)
/usr/bin/systemctl stop firewalld.service &> /dev/null
/usr/bin/systemctl disable firewalld.service &> /dev/null
/usr/bin/systemctl mask firewalld.service &> /dev/null
關閉SELinux(推薦)
cp /etc/selinux/config{,.bak}
sed -r -i '/^SELINUX=/s/.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
操作系統時間同步設置(推薦)
## 解鎖配置文件
chattr -i ``/var/spool/cron/root
## 添加定時任務,定時從時間服務器同步時間
echo "*/5 * * * * /usr/sbin/ntpdate 10.137.9.9 >> /home/timedate.log > /dev/null 2>&1" >> /var/spool/cron/root
## 編輯后鎖定配置文件
chattr +i /var/spool/cron/root
系統參數調優(需根據實際業務需要進行評估,一般調整參數如下)(可選)
## 備份配置文件
cp -a /etc/sysctl.conf /etc/sysctl.conf.default
## 添加以下調優參數到該文件中
#kernel
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
#socket
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_forward = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
#socket mem
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
#conn
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
#Timewait
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
#sync
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_syncookies = 1
#fin
net.ipv4.tcp_fin_timeout = 1
#keepalive
net.ipv4.tcp_keepalive_time = 30
## 配置生效
/sbin/sysctl -p
2.CentOS7系統安全加固
操作系統密碼策略(密碼長度與有效期)(推薦)
## 備份配置文件:
cp -a /etc/login.defs /etc/login.defs.default
## 編輯配置文件
vim /etc/login.defs
# 將相關參數值改成如下:
PASS_MAX_DAYS 90 # 密碼最長使用天數
PASS_MIN_DAYS 0 # 密碼最短使用天數
PASS_MIN_LEN 8 # 密碼最短長度
PASS_WARN_AGE 7 # 密碼到期前多少天提醒
## 修改系統中當前已存在用戶的密碼策略
chage -m 0 -M 90 -I 5 -W 7 <用戶名>
## 表示將此用戶的密碼最長使用天數設為90,最短使用天數設為0,密碼過期后5天之后賬戶失效,過期前7天提醒用戶。
密碼復雜度策略(推薦)
## 備份配置文件:
cp -a /etc/pam.d/system-auth /etc/pam.d/system-auth.default## 編輯配置文件
vi /etc/pam.d/system-auth
# 將password requisite 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= ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
密碼重復使用次數限制(可選)
設置密碼不能重復前3次使用過的。
## 修改配置文件
/etc/pam.d/system-auth
在password sufficient pam_unix.so xxxxx 一行后添加 remember=3,例如:
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=3
鎖定不必要的系統默認帳號(推薦)
## 鎖定無用帳號,降低安全風險
usermod -L gdm
usermod -L nobody
## 如有其他的不必要的系統用戶,可以用此方法鎖定
特殊帳號檢查(推薦)
檢查系統中是否存在空口令帳號和除了root之外的UID為0的帳號
awk -F: '($2"")' /etc/shadow ## 查看空口令賬號,找到之后,使用passwd命令為其設置密碼。
awk -F: '($30)' /etc/passwd ## 查看UID為零的賬號,保證系統中UID為0的帳號只有root。
設置會話超時時間(推薦)
## 備份配置文件:
cp -a /etc/profile /etc/profile.default
## 編輯配置文件:
vi /etc/profile
# 在文件的末尾添加參數
export TMOUT=300
設置歷史命令時間戳(可選)
echo "HISTFILESIZE=2000" >> /etc/bashrc
echo "HISTFILESIZE=2000" >> /etc/bashrc
echo "HISTSIZE=2000" >> /etc/bashrc
echo "HISTTIMEFORMAT='<%F %T> : '" >> /etc/bashrc
SSH 服務安全配置(推薦)
## 備份配置文件
cp /etc/ssh/sshd_config{,.bak}
## 編輯配置文件
vi /etc/ssh/sshd_config
# 禁止空密碼登錄,將#PermitEmptyPasswords no參數的注釋符號去掉,改成
PermitEmptyPasswords no
# 關閉ssh的tcp轉發,將#AllowTcpForwarding yes參數改成
AllowTcpForwarding no
# 關閉S/KEY(質疑-應答)認證方式,將#ChallengeResponseAuthentication yes參數,改成
ChallengeResponseAuthentication no
# 關閉基於GSSAPI 的用戶認證,將GSSAPIAuthentication yes參數,改成
GSSAPIAuthentication no
# 關閉ssh連接DNS查找
UseDNS no
# 修改sshd服務默認端口,推薦改成10000以上的端口,如
Port 12379
## 重啟ssh服務
# 重啟sshd服務
systemctl restart sshd
禁止root遠程登錄(可選)
## 備份配置文件
cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.default
## 編輯配置文件
vi /etc/ssh/sshd_config
# 將配置參數#PermitRootLogin yes改成
PermitRootLogin no
## 重啟ssh服務
登陸失敗鎖定(可選)
## 配置文件備份
cp /etc/pam.d/sshd{,.bak}
cp /etc/pam.d/login{,.bak}
## 修改配置文件
vim /etc/pam.d/sshd
## 編輯配置文件,在#%PAM-1.0的下面,即第二行,添加內容
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=10
vim /etc/pam.d/login
## 編輯配置文件,在#%PAM-1.0的下面,即第二行,添加內容
auth required pam_tally2.so deny=3 lock_time=600 even_deny_root root_unlock_time=10
設置sshd加密算法(推薦)
## 備份配置文件
cp /etc/ssh/sshd_config{,.bak}
## 修改配置文件,在配置文件末尾加上如下配置
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
設置系統umask值(推薦)
vim /etc/profile
## 在文檔末尾加上
umask 027
禁止"Control-Alt-Delete"重啟系統快捷鍵(推薦)
防止誤操作按了"Control-Alt-Delete"組合鍵導致系統重啟。
mv /usr/lib/systemd/system/ctrl-alt-del.target /tmp
init q
隱藏系統版本信息(可選)
mv /etc/issue /etc/issue.bak
mv /etc/issue.net /etc/issue.net.bak
關閉不必要的系統服務(推薦)
關閉不必要的服務(如普通服務和xinetd服務),降低風險。
## 停止服務
systemctl stop <服務名>
## 設置服務在開機時不自動啟動。
systemctl disable <服務名>
## CentOS7最小化安裝,推薦停止的系統服務有:postfix,...
刪除潛在的危險文件(推薦)
.rhosts,.netrc,hosts.equiv等文件都具有潛在的危險,如果沒有應用,應該刪除。
## 操作步驟
find / -name .rhosts
find / -name .netrc
find / -name hosts.equiv
## 若存在相關文件,加上.bak后綴
mv .rhost .rhost.bak
mv .netr .netr.bak
mv hosts.equiv hosts.equiv.bak
記錄所有用戶的登錄和操作日志(可選)
vim /etc/profile # 打開配置文件,在配置文件末尾加入如下腳本
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 733 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/* 2>/dev/null
## 執行下面命令使配置生效,如果已經接入了堡壘機,該步驟可省略(堡壘機已經有日志審計功能了)
source /etc/profile