CentOS 7安全加固方案(服务器安全初始化必备)

请注意:本次实验使用的centos 7 版本

一、查找系统中是否存在空密码账户

1、使用命令: awk -F: '($2==""){print $1}' /etc/shadow 直接查看。可以看到系统中没有空密码账户
2、验证一下。添加一个账户qwe, 命令:useradd qwe(此时qwe虽然没有密码但是他还不能使用空密码登录)
3、使用root账户清除qwe密码,passwd -d qwe
4、再次使用 awk -F: '($2==""){print $1}' /etc/shadow 命令查看系统中空密码账户

二、查找uid值为0的用户。

如果passwd文件中uid值为0的话,那么这个用户就拥有root权限。

1、查找uid为0账户: awk -F: '($3==0){print $1}' /etc/passwd 可以看到当前系统只有root账户拥有root权限。
2、修改权限的话,以root用户权限修改passwd文件中的uid为0,保存退出。
在root用户下使用su - lu切换lu用户
此时切换lu用户是,依然显示的是root的状态,但是查看history明显是lu用户,而且lu已经获取到了root的权限,使用该用户可以做root用户的操作
查看uid为0命令 awk -F: '($3==0){print $1}' /etc/passwd
接下来我想到,用lu用户修改/etc/passwd文件中root用户uid为1000,保存退出
然后切换回root用户,以此时uid为1000的root查看passwd时,文件已变为只读

三、安全加固的一些方案

1、密码策略

修改 /etc/login.defs文件中相应参数
PASS_MAX_DAYS 密码有效期
PASS_MIN_DAYS 修改密码的最短期限
PASS_MIN_LEN 密码最短长度
PASS_WARN_AGE 密码过期提醒
加固方案:
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
2、修改密码策略
修改vi /etc/pam.d/system-auth文件

默认配置:

[root@33f ~]# 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).编辑配置文件

vi /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验证类型一起使用时,该选项主要用来防止用户新设定的密码与以前的旧密码相同。
minlen=8:最小长度8位
difok=5:新、旧密码最少5个字符不同
dcredit=-1:最少1个数字
lcredit=-1:最少1个小写字符,(ucredit=-1:最少1个大写字符)
ocredit=-1:最少1个特殊字符
retry=1:1次错误后返回错误信息
type=xxx:此选项用来修改缺省的密码提示文本

3、新口令不能与10个最近使用的相同

修改vi /etc/pam.d/system-auth文件,
在password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok 所在行的后面添加 remember=11
4、设置会话超时

修改vi /etc/profile文件在最后添加参数
export TMOUT=600 #(600秒 十分钟)
5、账户锁定策略(终端登录)

修改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
(终端登录失败5次,锁定半小时)

6、禁止root通过ssh远程登录

修改文件,

vi /etc/ssh/sshd_config
将配置参数#PermitRootLogin yes改成PermitRootLogin no
重启ssh服务

/etc/init.d/sshd restart

7、设置history命令时间戳
加固方案: 编辑配置文件:

vi /etc/profile
在文件的末尾添加参数

export HISTTIMEFORMAT="%F %T whoami "
保存配置文件

四 .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.备份配置文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

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

002
2
加固方案:

1.备份配置文件

cp -a /etc/bashrc /etc/bashrc.default

2.编辑配置文件

vi /etc/bashrc

在文件末尾增加参数

umask 027
3.保存配置文件

  1. 备份配置文件

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 加密密码(密码自己定义,但是一定得保存好否则最后连自己都登录不进去)

[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.执行命令重新编译生成grub.cfg文件

grub2-mkconfig -o /boot/grub2/grub.cfg
十.最大文件打开数(文件句柄数)
默认配置:

[root@33f ~]# ulimit -n
1024
加固方案:

1.备份配置文件

cp -a /etc/security/limits.conf /etc/security/limits.conf.default
2.添加以下两行配置到该文件最后

  • soft nofile 65535
  • hard nofile 65535
    备注:修改所有用户的最大文件打开数为65535

十一.用户最大进程数
默认配置:

[root@33f ~]# 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
  1. 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

本文转载自三三空间:http://www.33f.net/setup/centos7_safety_reinforce.html

   

黑公网安备 23010302001330 黑ICP备16006342号

Copyright © 2005 淘主机 Taohost.com , All Rights Reserved

淘主机供应商:WHMCS管理系统金盾防火墙阿里云VEDNS 安全软件推荐: 服务器安全狗

 
QQ在线咨询
售前咨询热线
021-80392966
售后服务热线
021-80392966