centos7加固优化

莫道桑榆晚,为霞尚满天。这篇文章主要讲述centos7加固优化相关的知识,希望能为你提供帮助。
?ssh优化(port 视情况进行修改):
vim    /etc/ssh/sshd_config
GSSAPIAuthentication      no            关闭基于GSSAPI 的用户认证
UseDNS      no                                      不解析
PermitRootLogin no                            root不能直接登录
#默认都是开启的,优化关闭。
#sed  -e    识别多个sed命令
sed -i -es#.*GSSAPIAuthentication.*#GSSAPIAuthentication no#g -e s#.*UseDNS.*#UseDNS no#g /etc/ssh/sshd_config
#修改后重启sshd服务
systemctl    restart  sshd

#不允许root用户直接登录(视情况做不做)   
sed-i  s#.*PermitRootLogin.*yes#PermitRootLogin no#g /etc/ssh/sshd_config


关闭防火墙和SELinux
?查看防火墙服务状态: systemctl  status  firewalld.service
临时开启关闭防火墙:systemctl  start/stop  firewalld.service永久关闭/开启防火墙服务: systemctl  disable/enable    firewalld.service
#临时关闭SELinux
setenforce    0
#永久关闭SELinux

sed  -i.bak  s#SELINUX=enforcing#SELINUX=disabled#g  /etc/selinux




yum源优化:
#如下是阿里yum基础源优化
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup & & \\
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo ?
#eqel源优化(需要提前下载wget命令: yum  -y    install  wget)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#下图是base源的部分截图



密码长度和有效期:
密码长度和有效期在/etc/login.defs文件中修改,部分参数解释:
PASS_MAX_DAYS  密码有效期
PASS_MIN_DAYS  修改密码的最短期限
PASS_MIN_LEN  密码最短长度
PASS_WARN_AGE  密码过期提醒
#备份文件,并修改里面的内容
cp /etc/login.defs{,.bak}
sed -i s/^PASS_MAX_DAYS.*/PASS_MAX_DAYS      90/g /etc/login.defs
sed -i s/^PASS_MIN_DAYS.*/PASS_MIN_DAYS                  1/g /etc/login.defs
sed -i s/^PASS_MIN_LEN.*/PASS_MIN_LEN          9/g /etc/login.defs
sed -i s/^PASS_WARN_AGE.*/PASS_WARN_AGE      7/g /etc/login.defs
#下图为修改后的配置



密码复杂度:
#在/etc/pam.d/system-auth文件中进行修改,部分参数解释:
try_first_pass:当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定的密码与以前的旧密码相同。
minlen=8    :最小长度8位
difok=5      :  新、旧密码最少5个字符不同
dcredit=-1 :最少1个数字
【centos7加固优化】lcredit=-1  : 最少1个小写字符,(ucredit=-1:最少1个大写字符)
ocredit=-1 :最少1个特殊字符
retry=1      :  1次错误后返回错误信息
type=        :此选项用来修改缺省的密码提示文本
#具体命令如下(实际上不改也可以,使用默认的),sed  -i.bak表示修改的同时将原文件进行备份
sed -i.bak s/password.*retry=3.*/password      requisite        pam_cracklib.so try_first_pass minlen=8 difok=5 dcredit=-1 lcredit=-1 ocredit=-1 retry=1 type=/g  /etc/pam.d/system-auth
 
错误次数锁定:
#表示错误6次,该账号将锁定1800秒
sed -i 3a auth              required          pam_tally2.so  file=/var/log/tallylog deny=6 even_deny_root unlock_time=1800 /etc/pam.d/system-auth
sed -i 4a account              required          pam_tally2.so /etc/pam.d/system-auth /etc/pam.d/system-auth



会话超时设置:

#备份文件,并向里面追加内容
cp  /etc/profile{,.bak}
echo  "export TMOUT=600" > > /etc/profile
source  /etc/profile

#如下两条命令也可以配置上,表示历史记录中只有5条命令,防别人看你操作了什么命令
echo  "export  HISTSIZE=5"    > > /etc/profile
echo    "export    HISTFILESEZE=5"      > > /etc/profile


审计 :
#创建审计用户
useradd  auditor ; echo  1qaz@WSX |passwd  --stdin  auditor
#添加审计规则
cp /etc/audit/rules.d/audit.rules{,$bak}
echo  "
-w/etc/group -p wa -k identity
-w/etc/passwd -p wa -k identity
-w/etc/gshadow -p wa -k identity
-w/etc/shadow -p wa -k identity
-w/etc/security/opasswd -p wa -k identity
" > > /etc/audit/rules.d/audit.rules
serviceauditd stop ; service auditd start



关闭无用服务:
#vnc,蓝牙,邮件等无用服务可以关闭掉
systemctl stop  sendmail
systemctl disable  sendmail
systemctl stop  buletooth
systemctl disable  buletooth
systemctl stop  vncserver@:1
systemctl disable  vncserver@:1?


加大文件描述:
#一个服务程序运行起来,会打开相应的文件数量,尽量调到最大
echo    "*  -  nofile    65535"  > > /etc/security/limits.conf #查看该文件的最后一行
tail -1 /etc/security/limits.conf


内核优化:
#修改/etc/sysctl.conf文件,添加参数,sysctl  -p表示永久生效
?#关闭ipv6net.ipv6.conf.all.disable_ipv6= 1
net.ipv6.conf.default.disable_ipv6= 1
# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts= 1
# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses= 1
# 关闭路由转发
net.ipv4.ip_forward= 0
net.ipv4.conf.all.send_redirects= 0
net.ipv4.conf.default.send_redirects= 0
#开启反向路径过滤
net.ipv4.conf.all.rp_filter= 1
net.ipv4.conf.default.rp_filter= 1
#关闭sysrq功能
kernel.sysrq = 0
#core文件名中添加pid作为扩展名
kernel.core_uses_pid= 1 ?
net.ipv4.tcp_syncookies= 1 ?
#修改消息队列长度
kernel.msgmnb =65536
kernel.msgmax =65536
#设置最大内存共享段大小bytes
kernel.shmmax =68719476736
kernel.shmall =4294967296
#timewait的数量,默认180000
net.ipv4.tcp_max_tw_buckets= 6000
net.ipv4.tcp_sack= 1
net.ipv4.tcp_window_scaling= 1
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
net.core.netdev_max_backlog= 262144
#限制仅仅是为了防止简单的DoS 攻击
net.ipv4.tcp_max_orphans= 3276800
#未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog= 262144
net.ipv4.tcp_timestamps= 0
#内核放弃建立连接之前发送SYNACK 包的数量
net.ipv4.tcp_synack_retries= 1
#内核放弃建立连接之前发送SYN 包的数量
net.ipv4.tcp_syn_retries= 1
#启用timewait 快速回收
net.ipv4.tcp_tw_recycle= 1
#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP连接
net.ipv4.tcp_tw_reuse= 1
net.ipv4.tcp_mem= 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout= 1
#当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时
net.ipv4.tcp_keepalive_time= 30
#允许系统打开的端口范围
net.ipv4.ip_local_port_range= 1024       65000
#修改防火墙表大小,默认65536
net.netfilter.nf_conntrack_max=655350
net.netfilter.nf_conntrack_tcp_timeout_established=1200
# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects= 0
net.ipv4.conf.default.accept_redirects= 0
net.ipv4.conf.all.secure_redirects= 0
net.ipv4.conf.default.secure_redirects= 0



    推荐阅读