linux服务器初始化安全基线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/bash

##################################################################

#注释掉系统无用用户

sed -i '/^sync/s/^/#/' /etc/passwd

sed -i '/^halt/s/^/#/' /etc/passwd

sed -i '/^news/s/^/#/' /etc/passwd

sed -i '/^uucp/s/^/#/' /etc/passwd

sed -i '/^operator/s/^/#/' /etc/passwd

sed -i '/^games/s/^/#/' /etc/passwd

sed -i '/^gopher/s/^/#/' /etc/passwd

sed -i '/^smmsp/s/^/#/' /etc/passwd

sed -i '/^nfsnobody/s/^/#/' /etc/passwd

sed -i '/^nobody/s/^/#/' /etc/passwd

sed -i '/^lp/s/^/#/' /etc/passwd

#################################################################

#修改密码过期时间

DIR=/etc

##/etc/login.defs
##PASS_MAX_DAYS

cp -p /etc/login.defs /etc/login.defs_bak

echo "正在修改/etc/login.defs..."
sleep 1
max=cat $DIR/login.defs |grep ^PASS_MAX_DAYS |awk '{print $2}'
if [ $max != 90 ];then
sed -i '/^PASS_MAX_DAYS/s/'"$max"'/90/g' $DIR/login.defs
fi

##PASS_MIN_DAYS
min=cat $DIR/login.defs |grep ^PASS_MIN_DAYS |awk '{print $2}'
if [ $min != 0 ];then
sed -i '/^PASS_MIN_DAYS/s/'"$min"'/0/g' $DIR/login.defs
fi

##PASS_MIN_LEN
len=cat $DIR/login.defs |grep ^PASS_MIN_LEN |awk '{print $2}'
if [ $len != 8 ];then
sed -i '/^PASS_MIN_LEN/s/'"$len"'/8/g' $DIR/login.defs
fi


##PASS_WARN_AGE
warn=cat $DIR/login.defs |grep ^PASS_WARN_AGE | awk '{print $2}'
if [ $warn != 7 ];then
sed -i '/^PASS_WARN_AGE/s/'"$warn"'/7/g' $DIR/login.defs
fi


###########################################################

echo "正在修改系统命令行保存条目..."
sleep 1
cat /etc/profile |grep ^HISTSIZE > /dev/null
if [ $? == 0 ];then
sed -i 's/^HISTSIZE=[0-9]\{1,4\}/HISTSIZE=30/g' /etc/profile
fi
cat /etc/profile |grep ^HISTFILESIZE > /dev/null
if [ $? == 1 ];then
echo "HISTFILESIZE=30" >> /etc/profile
fi

###############################################

echo "正在修改密码设置策略..."

cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak

sed -i "14i password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1" /etc/pam.d/system-auth


#########################################################################

echo "设置终端超时时间"
echo export TMOUT=300 >> /etc/profile
source /etc/profile


#########################################################################

echo "正在启用审计策略..."
echo -e "-w /etc/group -p wa -k CFG_group\n-w /etc/passwd -p wa -k CFG_passwd\n-w /etc/gshadow -k CFG_gshadow\n-w /etc/shadow -k CFG_shadow" >> /etc/audit/audit.rules
service auditd restart

##########################################################################################

echo "限制用户登录次数"
sed -i '2i auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=300' /etc/pam.d/login
sed -i '2i auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=300' /etc/pam.d/sshd

############################################################################################

#Configure Minimum User Authorization
chmod 600 /etc/security

###########################################################################################

\# Log Security Event Log
sed -i '80i *.err;kern.debug;daemon.notice /var/adm/messages' /etc/rsyslog.conf
mkdir -p /var/adm
touch /var/adm/messages
chmod 640 /var/adm/messages
/etc/init.d/rsyslog restart

############################################################################################

#修改历史命令保存条数

sed -i '/^HISTSIZE/s/1000/5/' /etc/profile

sed -i '49i HISTFILESIZE=5' /etc/profile

source /etc/profile

############################################################################################

#设置关键文件的属性

chattr +a /var/log/messages

###########################################################################################

#banner告警

touch /etc/ssh_banner
chown bin:bin /etc/ssh_banner
chmod 644 /etc/ssh_banner
echo " Authorized only. All activity will be monitored and reported " > /etc/ssh_banner
echo "Banner /etc/ssh_banner" >> /etc/ssh/sshd_config
/etc/init.d/sshd restart