等保加固
[TOC]
服务器加固
账号密码加固
创建sudo账号
将账号添加入wheel 用户组
useradd sudouser -G wheel; (创建用户添加到 wheel用户组)
passwd sudouser (修改用户密码)
修改账户有效期 失效期 警告期
对此后新建账号生效
编辑log.defs文件
修改pass_MAX_DAYS 90 密码更换时间
对此前创建账号修改
chage -M 90 username
创建开发运维账户
useradd devoper ;
passwd devoper ;
对账号赋予权限
chown -R devoper /export
设置口令复杂度 和口令长度
1) vi /etc/pam.d/system-auth
2) password 块 在pam_cracklib.so或pam_pwquality.so所在行末尾追加如下内容:
minlen=8 minclass=3 remember=5 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 enforce_for_root
retry=5 定义登录、或修改密码失败后,可以重复的次数
type= 选项,定义用户修改密码时的提示内容,一般不管
dcredit=-1 至少一个数字
lcredit=-1 至少一个小写
ucredit=-1 至少一个大写
ocredit=-1 至少一个特殊字符
minlen=8 密码最短长度为8位
remember=5 不能重复使用前5次使用过的密码
enforce_for_root root修改密码也要遵守规则
设置登录次数限制(输错密码锁定账号)
1)vi /etc/pam.d/system-auth
2)在首行添加如下内容:
auth required pam_tally2.so deny=3 even_deny_root unlock_time=300
3)保存并退出
4)vi /etc/pam.d/password-auth
5)在首行添加如下内容:
auth required pam_tally2.so deny=3 even_deny_root unlock_time=300
6)保存并退出
字段说明
even_deny_root 也限制root用户;
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
设置账号超时退出
cp /etc/profile /etc/profile.bak202210;
vi /etc/profile
末尾添加 TMOUT=1800 单位为秒
source /etc/profile 当即生效
禁用root账号远程登录
vi /etc/ssh/sshd_config
修改 或直接添加
PermitRootLogin no 禁止root登录
重启 sshd服务
systemctl restart sshd
systemctl status sshd
数据库加固
mysql开启 bin_log
开启log_bin
log_bin=ON
#打开binlog日志
log_bin_basename=/var/lib/mysql/mysql-bin
#binlog日志的基本文件名,后面会追加标识来表示每一个文件
log_bin_index=/var/lib/mysql/mysql-bin.index
#binlog文件的索引文件,这个文件管理了所有的binlog文件的目录
或者另一种配置
log-bin=/var/lib/mysql/mysql-bin
mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index
影响:
这些配置完毕之后对于5.7以下版本应该是可以了,但是我们这个时候用的如果是5.7及以上版本的话,重启mysql服务会报错。这个时候我们必须还要指定一个参数:server-id=123454
随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了有了上述的配置之后,重新启动mysql
systemctl restart mysqld
查询
show global variables like '%log_bin%';
开启自动备份
使用 crond crontab crontab
编写备份脚本: backup.sh
#!/bin/bash
mysqldump --no-defaults -uroot -ppwd -h IP fsp_huaihua_db |gzip >/work/backup/fsp_huaihua_db$(date +%Y%m%d_%H%M%S).sql.gz
添加权限chmod u+x backup.sh
执行测试 ./backup.sh
系统添加定时
crontab -e
添加 定时配置
00 23 * * * /etc/backup.sh
查看任务配置
crontab -l
重启crontab服务
service crond restart 或者 systemctl restart crond
elk日志系统
一、ELK原理与介绍
1、ELK简介
集中式日志系统,将所有节点上的日志统一收集,管理,访问
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。
1.1、Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
1.2、Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
1.3、Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
elk 或 efk 或 rsyslog elsearch kibana 或者 添加 消息队列 redis
环境安装
EL 安装依赖java
rpm -ivh jdk-8u271-linux-x64.rpm
验证
java -version
elsearch 安装
下载:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.1.rpm
安装
rpm -ivh elasticsearch-6.0.1.rpm
开机启动
systemctl daemon-reload
systemctl enable elasticsearch.service
服务启停
systemctl start elasticsearch
systemctl stop elasticsearch
配置
地址 : /etc/elasticsearch/elasticsearch.yml
添加配置
network.host: 0.0.0.0
http.port: 9200
注意:
卸载elsearch后
rpm -qa | grep search 查询安装信息
rpm -e elasticsearch-6.0.1-1.noarch 根据查询结果卸载
卸载后 需要删除 /var/lib/elasticsearch 下的 nodes 否则重新安装启动报错
kibana 安装
下载
https://artifacts.elastic.co/downloads/kibana/kibana-6.0.1-x86_64.rpm
安装
rpm -ivh kibana-6.0.1-x86_64.rpm
添加开机启动
systemctl daemon-reload
systemctl enable kibana.service
停止启动
systemctl start kibana
systemctl stop kibana
配置文件
/etc/kibana/kibana.yml
添加:
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200" 对应elsearch 的端口
访问
默认端口5601 http://IP:5601
logstash安装
下载
https://artifacts.elastic.co/downloads/logstash/logstash-6.0.1.rpm
安装
rpm -ivh logstash-6.0.1.rpm
停止启动
systemctl start logstash
systemctl stop logstash
配置文件
文件位置
/etc/logstash/logstash.yml
自定义配置文件地址
/etc/logstash/conf.d
配置示例
input {
file {
type => "nginx"
path => "/export/nginx/logs/access.log/"
start_position => "beginning"
}
}
output {
if [type] == "nginx" {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "nginx"
}
}
}
elk 使用
常用语句
GET _cat/indices
GET /testindex/_search
GET /secure355-2022.10.20/_search
GET _search
{
"query":{
"term":{
"_index":"testindex"
}
}
}
POST /testindex/_delete_by_query?pretty
{
"query":{
"term":{
"_index":"nginxacc"
}
}
}
POST /testindex/_delete_by_query?wait_for_completion=false
{
"query":{
"match_all":{
}
}
}
DELETE testindex