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.写入 ...
随机推荐
- curl NSS error -8179 (SEC_ERROR_UNKNOWN_ISSUER)
尝试分析 首先根据提示,我判断是CA证书过期.于是对证书进行了更新 update-ca-trust 但是依然没有解决问题.之后,尝试了很多方法后,重新回来想想,为什么不适用curl -v来获取更多信息 ...
- SkylineGlobe 如何二次开发获取三维模型的BBOX和设置Tint属性
测试模型类型选择TerrainModel和Feature两种,测试代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...
- SQL Server中比较末尾带有空格的字符串遇到的坑 (转载)
最近发现SQLServer中比较字符串的时候 如果字符串末尾是空格 那么SQLServer会无视那些空格直接进行比较 这和程序中平时的字符串判断逻辑不统一 );set @a=N'happycat198 ...
- React-异步组件及withRouter路由方法的使用
所有组件的代码都打包在bundle.js里,加载首页的时候,把其它页面的代码也加载了,影响首页加载速度.我们希望访问首页的时候只加载首页,访问详情页的时候再去加载详情页的代码.异步组件可以帮我们实现, ...
- Ubuntu 安装google chrome
sudo apt-get install google-chrome-stable /usr/bin/google-chrome-stable
- 搭建Zookeepeer源码工程
一.搭建ant环境 1.下载ant&将ant解压至安装目录 http://ant.apache.org/bindownload.cgi 2.配置环境变量 ANT_HOME:配置ant的安装目录 ...
- ABP从入门到精通(5):.扩展国际化语言资源
ABP的有些组件使用的该组件自带的语言包资源,所以在有些时候会因为我们当前使用的语言对应的语言包不全,而造成日志一直记录WARN.ABP给我们提供了扩展语言包资源的接口,可以解决这个问题. 以下示例代 ...
- 调用不同目录类的protected构造器
一.问题 二.分析 调用不同目录类的protected构造器,IDE报错. 二.解决办法: 后面添加一个{}就可以了
- vue开发小结(下)
前言 继前几天总结了vue开发小结(上)后,发现还有很多的点没有能列举出来,于是还是打算新建一个下篇,再补充一些vue开发中需要注意的细节,确实还是都是细节的问题,我只是在这里强调下,希望对大家有帮助 ...
- RabbitMQ在特来电的深度应用
特来电是一个互联网公司,而且是技术领先的互联网公司.互联网公司的标配是什么?答案就是缓存+MQ.没错,您没看错,就是MQ--消息队列,我们今天要讨论的RabbitMQ就是消息队列中功能非常强大的一种. ...