CentOS 安全优化
1、操作系统和数据库系统管理用户身份鉴别信息令应有复杂度要求并定期更换。
配置# vi /etc/login.defs
系统默认配置:
PASS_MIN_LEN=5 #密码最小长度 PASS_MAX_DAYS=99999 #密码最大有效期 PASS_MIN_DAYS=0 #两次修改密码的最小间隔时间
优化配置:
PASS_MIN_LEN=8
PASS_MAX_DAYS=90
PASS_MIN_DAYS=2
2、启用登录失败处理功能
vi /etc/pam.d/system-auth
在文件中加入以下语句: password requisite pam_cracklib.so retry=3 difok=2 minlen=8 lcredit=-1 dcredit=-1 difok:本次密码与上次密码至少不同字符数
minlen:密码最小长度,此配置优先于login.defs中的PASS_MAX_DAYS
ucredit:最少大写字母
lcredit:最少小写字母
dcredit:最少数字
retry:重试多少次后返回密码修改错误 #帐户登录连续 3 次失败,就统一锁定 60 秒, 60 秒后可以解锁 auth required pam_tally2.so onerr=fail deny=3 unlock_time=60 even_deny_root root_unlock_time=60 root_unlock_time 表示 root 帐户的 锁定时间
onerr=fail 表示连续失败
deny=3,表示 超过3 次登录失败即锁定 vim /etc/pam.d/sshd
#%PAM-1.0
auth required pam_tally2.so deny=3 unlock_time=60 even_deny_root root_unlock_time=60 vim /etc/pam.d/login
#%PAM-1.0
auth required pam_tally2.so deny=3 unlock_time=60 even_deny_root root_unlock_time=60
3、设置登录终端的操作超时锁定
vi /etc/profile
在“HISTFILESIZE=”后面加入下面这行:
TMOUT=900 # 设置900秒内用户无操作就字段断开终端
4、ulimit 限制资源和文件打开数量优化
[root@localhost ~]# egrep -v "^#|^$" /etc/security/limits.conf
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
5.对重要信息资源设置敏感标记的功能(SElinux)。
如果对安全要求较高的话就开启SElinux
建议这个选项为SELINUXTYPE=targeted (默认选项)
selinux资料参考:http://cn.linux.vbird.org/linux_basic/0440processcontrol.php
6、ssh服务配置
vim /etc/ssh/sshd_config #确保SSH LogLevel设置为INFO,记录登录和注销活动(取消注释)
LogLevel INFO #设置SSH空闲超时退出时间
ClientAliveInterval 900
ClientAliveCountMax 0 #SSHD强制使用V2安全协议
Protocol 2 #禁止SSH空密码用户登录
PermitEmptyPasswords no #设置最大密码尝试失败次数
MaxAuthTries 4
7.设置用户权限配置文件的权限
chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
chmod 0644 /etc/group
chmod 0644 /etc/passwd
chmod 0400 /etc/shadow
chmod 0400 /etc/gshadow
8.开启地址空间布局随机化
sysctl -w kernel.randomize_va_space=2
9.强制用户不重用最近使用的密码,降低密码猜测攻击风险
#在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改。如下面只在末尾加了remember=5,即可限制不能重用最近5个密码。 [root@localhost ~]# egrep "password sufficient" /etc/pam.d/password-auth
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5 #只添加remember=5 ...... [root@localhost ~]# egrep "password sufficient" /etc/pam.d/system-auth
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
......
10.检查密码长度和密码是否使用多种字符类型
编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为9-32位,把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为3或4。
[root@localhost ~]# egrep -v "^#|^$" /etc/security/pwquality.conf
minlen = 10
minclass = 3
11、history安全优化
vim /etc/profile
export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` `whoami` "
##将所有命令记录到messages日志中(最好如下)
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y ; echo $y ;}); logger "[euid=$(whoami)]":$(who am i):[`pwd`]" $msg";}'
12.服务器开启审计服务auditd和日志服务rsyslog(默认开启)(或者搭建日志服务器【推荐】)
13.安装完整性验证工具tripwire(可以自己写md5的脚本验证)
#验证脚本
[root@localhost ~]# cat /usr/local/scripts/md5_file_check.sh
#!/bin/bash
check_file=/etc/command.md5 md5_status=`/usr/bin/md5sum -c ${check_file}|egrep -v "OK"|wc -l` if [ ${md5_status} -eq 0 ];then
echo 0
else
echo 1
fi #例子
[root@localhost ~]# md5sum /usr/bin/ls >> /etc/command.md5 [root@localhost ~]# cat /etc/command.md5
1e71cac86984ea97fe648a9fe66bc223 /bin/ls #zabbix监控脚本
[root@localhost ~]# egrep "md5" /etc/zabbix/zabbix_agentd.d/scripts.conf
UserParameter=md5_check,/usr/local/scripts/md5_file_check.sh 2>/dev/null
#重启zabbix-agent
[root@168web3 ~]# systemctl restart zabbix-agent.service
zabbix监控模板
监控项
触发器
14.服务器安装clamav杀毒软件
#安装
[root@localhost ~]# yum install clamav -y
#定时更新病毒库
[root@localhost ~]# crontab -l
##每天更新病毒库
00 02 * * * /usr/bin/freshclam 2>&1 >/dev/null #扫描目录(可以写入定时任务中)
[root@localhost ~]# clamscan -r /sbin/
15.设置tcp连接超时以及tcp断开后释放连接的优化。
[root@localhost ~]#vim /etc/sysctl.conf
#网卡设备将请求放入队列的长度。
net.core.netdev_max_backlog = 8192
#开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_recycle = 1
#开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_tw_reuse = 1
#这个参数决定了它保持在FIN-WAIT-2状态的时间
net.ipv4.tcp_fin_timeout = 30
#当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时
net.ipv4.tcp_keepalive_time = 600 #生效
[root@localhost ~]# sysctl -p
16、防火墙安全组规则设置好(ip白名单、控制好每条规则)
systemctl start firewalld.service #开发ip(白名单)(重启生效)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="1.1.1.1" port protocol="tcp" port="1-65535" accept"
#封ip(临时)直接生效(重启就没)
firewall-cmd --add-rich-rule="rule family='ipv4' source address='2.2.2.2' reject" #开发端口
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=80/tcp
17、关闭不用的服务与开机自启服务
#查看开机自启
systemctl list-unit-files|grep enabled #关闭开机自启与服务
systemctl disable atd.service
systemctl stop atd.service
18、能不对外的服务或端口就不要对外(如ssh端口或gitlab等)
19、重要服务器或数据定时做好备份与快照
CentOS 安全优化的更多相关文章
- centos一键优化脚本
centos一键优化脚本:细节:http://oldboy.blog.51cto.com/2561410/1336488网络状态优化:http://oldboy.blog.51cto.com/2561 ...
- centos内核优化--转至网络
A.关闭selinux(可以预防nginx修改根目录后访问出现404或者403) vi /etc/selinux/config SELINUX=disabled B.修改打开最大文件数句柄也就是 so ...
- 针对Kafka的centos系统参数优化
TCP网络优化 sudo vim /etc/sysctl.conf vm.max_map_count=655360net.core.rmem_default=262144net.core.rmem_m ...
- CentOS内核优化提示:cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录
临时解决,重启失效 modprobe br_netfilter 为了开机加载上面这个模块 cat > /etc/rc.sysinit << EOF #!/bin/bash for f ...
- mysql性能优化学习笔记
mysql性能优化 硬件对数据库的影响 CPU资源和可用内存大小 服务器硬件对mysql性能的影响 我们的应用是CPU密集型? 我们的应用的并发量如何? 数量比频率更好 64位使用32位的服务器版本 ...
- CentOS系统初始化---不断更新中
注意EOF不能有空格tab键 #get os version release=$(rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides ...
- MySQL for OPS 11:优化
写在前面的话 不管是作为运维还是作为 DBA,我们的工作都不是写 SQL,搞业务.更多的还是如何实现又好又快的给开发提供一个数据库环境和保障数据的安全性.前面的文章中读写分离,高可用,建立索引,分库分 ...
- 什么影响了mysql的性能-硬件资源及系统方面优化
随着数据量的增大,数据库的性能问题也是个值得关注的问题,很多公司对mysql性能方面没有太过重视,导致服务浪费过多资源.mysql服务性能差从而直接影响用户体验,这里我们简单的先来聊聊什么影响了mys ...
- 大流量大负载的Kafka集群优化实战
前言背景 算法优化改版有大需求要上线,在线特征dump数据逐步放量,最终达到现有Kafka集群5倍的流量,预计峰值达到万兆网卡80%左右(集群有几十个节点,网卡峰值流出流量800MB左右/sec.写入 ...
随机推荐
- ethereum/EIPs-100 挖矿难度计算
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-100.md 创世纪区块的难度是131,072,有一个特殊的公式用来计算之后的每个块的难度. ...
- mysql 中sql的执行顺序
文章转自 https://www.cnblogs.com/annsshadow/p/5037667.html https://www.cnblogs.com/yyjie/p/7788428.html ...
- VUE2 第五天学习--过渡效果
阅读目录 1.理解VUE---过渡效果 回到顶部 1.理解VUE---过渡效果 1. 过渡的-css-类名会有4个(css) 类名在 enter/leave 在过渡中切换.1. v-enter: 进入 ...
- ArrayList源码中的两个值得注意的问题
1.“拖泥带水”的删除 测试代码: package com.demo; import java.util.ArrayList; public class TestArrayList { public ...
- Spark笔记-DataSet,DataFrame
DataSet:面向对象的,从JVM进行构建,或从其它格式进行转化 DataFrame:面向SQL查询,从多种数据源进行构建,或从其它格式进行转化 RDD DataSet DataFrame互转 1. ...
- 关于TerraBuilder的扩展开发
熟悉Skyline的朋友,可能会发现,在最新的6.6的产品体系中,TerraBuilder中用于生成三维地形场景的模块,改成了TerrainBuilder. 通常情况下,这款软件模块,我们主要用它来进 ...
- day87
分页器 PageNumberPagination(普通分页器) 说明: 配置分页器的中最大显示个数(也可在setting中做全局配置) page.page_size = 2 REST_FRAMEWOR ...
- CF888G Xor-MST 生成树、分治、Trie树合并
传送门 第一次接触到Boruvka求最小生成树 它的原版本是:初始每一个点构成一个连通块,每一次找到每一个连通块到其他的连通块权值最短的边,然后合并这两个连通块.因为每一次连通块个数至少减半,所以复杂 ...
- C# 泛型分组和Linq分组的异同
没什么好说的,因为用的到,所以作个记录, 代码如下: using System; using System.Collections.Generic; using System.Linq; using ...
- bootstrap datetimepicker 格式化yyyymmdd时,无法读取yyyymmdd格式
不知为何,java程序员爱用yyyymmdd格式化日期?导致bootstrap datetimepicker无法解析正确的日期 发现js中yyyymmdd不是正常能够解析的日期 查看datetimep ...