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-160 EXP cost increase
eip title author type category status created 160 EXP cost increase Vitalik Buterin Standards Track ...
- python3 is和==
'''is 判断左右两端的数据是否是同一个内存地址== 判断左右两端的数据是否一样'''# s1 = "alex"# s2 = "alex"# print(s1 ...
- python 数据结构 队列(queue)
如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293817.html 欢迎关注小婷儿的博客: 有问题请在博客下留言或加作者微信:t ...
- Android学习之基础知识三(Android日志工具Log的使用)
Android中的日志工具Log(android.util.Log): 1.打印日志的方法(按级别从低到高排序): Log.v():级别verbose,用于打印最为烦琐,意义最小的日志 Log.d() ...
- 《Google软件测试之道》简介
<Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...
- Python文学家为Python写的一首词?(附中英文版)
The Zen of Python, by Tim Peters (Python之禅 by Tim Peters) Beautiful is better than ugly. (优美胜于丑陋(Pyt ...
- 现有各种SSTC电路图,欢迎补充,研究,开发
现有各种SSTC电路图,欢迎补充,研究,开发 496464505 2016-3-1 16:01:55 现在的各种SSTC基本都是这些图 2016-3-3 19:28:23 comter2001 ...
- Rabbitmq-direct演示
在上一节中我们创建了一个日志系统.实现将日志消息广播给所有的cusumer. 在这片教程中,我们将为日志系统添加一个功能:仅仅订阅一部分消息.比如:我们可以直接将关键的错误类型日志消息保存到日志文件中 ...
- 计算几何总结(Part 1~2)
Preface 对于一个初三连三角函数都不会的蒟蒻来说计算几何简直就是噩梦. 反正都是要学的也TM没办法,那就慢慢一点点学起吧. 计算几何要有正确的板子,不然那种几百行CODE的题写死你. 本蒟蒻的学 ...
- springboot @Value 获取计算机中绝对路径文件的内容
默认情况下使用 @Value("aaa.txt") private Resource txtResource; 这样获取到的是项目classpath 下的 aaa.txt 如果想获 ...