ELK大家应该很了解了,废话不多说开始部署
kafka在其中作为消息队列解耦和让logstash高可用
kafka和zk 的安装可以参考这篇文章
深入理解Kafka3.6.0的核心概念,搭建与使用-
CSDN博客
第一步、官网下载安装包
需要
elasticsearch-8.10.4
logstash-8.10.4
kibana-8.10.4
kafka_2.13-3.6.0
apache-zookeeper-3.9.1-bin.tar
filebeat-8.10.4-linux-x86_64.tar
第二步: 环境配置(每一台都做)
创建es用户
useradd es
配置主机名、配置IP地址、每台主机配置/etc/hosts名称解析
192.168.1.1 es1
192.168.1.2 es2
192.168.1.3 es3
将Linux系统的软硬限制最大文件数改为65536,将所有用户的最大线程数修改为65536
打开/etc/security/limits.conf文件,添加以下配置(每一台都做)
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
es hard core unlimited #打开生成Core文件
es soft core unlimited
es soft memlock unlimited #允许用户锁定内存
es hard memlock unlimited
soft xxx : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。
hard xxx : 代表严格的设定,不允许超过这个设定的值。
nproc : 是操作系统级别对每个用户创建的进程数的限制
nofile : 是每个进程可以打开的文件数的限制
soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile :可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);
修改/etc/sysctl.conf文件,添加下面这行,并执行命令sysctl -p使其生效
vim /etc/sysctl.conf
vm.max_map_count=262144 #限制一个进程可以拥有的VMA(虚拟内存区域)的数量,es要求最低65536
net.ipv4.tcp_retries2=5 #数据重传次数超过 tcp_retries2 会直接放弃重传,关闭 TCP 流
解压安装包,进入config文件夹,修改elasticsearch.yml 配置文件
cluster.name: elk #集群名称
node.name: node1 #节点名称
node.roles: [ master,data ] #节点角色
node.attr.rack: r1 #机架位置,一般没啥意义这个配置
path.data: /data/esdata
path.logs: /data/eslog
bootstrap.memory_lock: true #允许锁定内存
network.host: 0.0.0.0
http.max_content_length: 200mb
network.tcp.keep_alive: true
network.tcp.no_delay: true
http.port: 9200
http.cors.enabled: true #允许http跨域访问,es_head插件必须开启
http.cors.allow-origin: "*" #允许http跨域访问,es_head插件必须开启
discovery.seed_hosts: ["ypd-dmcp-log01", "ypd-dmcp-log02"]
cluster.initial_master_nodes: ["ypd-dmcp-log01", "ypd-dmcp-log02"]
xpack.monitoring.collection.enabled: true #添加这个配置以后在kibana中才会显示联机状态,否则会显示脱机状态
xpack.security.enabled: true
#xpack.security.enrollment.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12 #我把文件都放在config下。所以直接写文件名,放在别处需要写路径
xpack.security.http.ssl.truststore.path: elastic-certificates.p12
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12k
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
配置jvm内存大小
修改 jvm.options
-Xms6g #你服务器内存的一半,最高32G
-Xmx6g #你服务器内存的一半,最高32G
改好文件夹准备生成相关key
创建ca证书,什么也不用输入,两次回车即可(会在当前目录生成名为elastic-stack-ca.p12的证书文件)
bin/elasticsearch-certutil ca
使用之前生成的ca证书创建节点证书,过程三次回车,会在当前目录生成一个名为elastic-certificates.p12的文件
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
生成http证书,根据提示信息进行操作,主要是下面几步
bin/elasticsearch-certutil http
Generate a CSR? [y/N]n
Use an existing CA? [y/N]y
CA Path: /usr/local/elasticsearch-8.10.4/config/certs/elastic-stack-ca.p12
Password for elastic-stack-ca.p12: 直接回车,不使用密码
For how long should your certificate be valid? [5y] 50y#过期时间
Generate a certificate per node? [y/N]n
Enter all the hostnames that you need, one per line. #输入es的节点 两次回车确认
When you are done, press <ENTER> once more to move on to the next step.
es1
es2
es3
You entered the following hostnames.
- es1
- es2
- es3
Is this correct [Y/n]y
When you are done, press <ENTER> once more to move on to the next step. #输入es的ip 两次回车确认
192.168.1.1
192.168.1.2
192.168.1.3
You entered the following IP addresses.
- 192.168.1.1
- 192.168.1.2
- 192.168.1.3
Is this correct [Y/n]y
Do you wish to change any of these options? [y/N]n
接下来一直回车,然后会在当前目录生成名为:elasticsearch-ssl-http.zip的压缩文件
解压缩http证书文件到config下,证书在http文件夹里。名字是http.p12,mv出来到config下
确保elasticsearch目录下所有文件的归属关系都是es用户
chown -R es:es /home/es/elasticsearch-8.10.4
启动es
su - es #到es用户下
bin/elasticsearch 初次可以前台启动 没问题就放后台
bin/elasticsearch -d
复制整个es文件夹到es2,es3
只需要修改
node.name: es2 #节点名称
network.host: 192.168.1.2 #节点ip
node.name: es3 #节点名称
network.host: 192.168.1.3 #节点ip
浏览器访问一下es的web ui
https://192.168.1.1:9200
生成账户密码
bin/elasticsearch-setup-passwords interactive
warning: ignoring JAVA_HOME=/usr/local/java/jdk1.8.0_361; using bundled JDK
******************************************************************************
Note: The 'elasticsearch-setup-passwords' tool has been deprecated. This command will be removed in a future release.
******************************************************************************
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
这个时候就可以使用账号密码访问了
创建一个给kibana使用的用户
bin/elasticsearch-users useradd kibanauser
kibana不能用es超级用户,此处展示一下用法
bin/elasticsearch-users roles -a superuser kibanauser
加两个角色 不然没有监控权限
bin/elasticsearch-users roles -a kibana_admin kibanauser
bin/elasticsearch-users roles -a monitoring_user kibanauser
然后配置kibana
解压然后修改kibana.yml
server.port: 5601
server.host: "0.0.0.0"
server.ssl.enabled: true
server.ssl.certificate: /data/elasticsearch-8.10.4/config/client.cer
server.ssl.key: /data/elasticsearch-8.10.4/config/client.key
elasticsearch.hosts: ["https://192.168.1.1:9200"]
elasticsearch.username: "kibanauser"
elasticsearch.password: "kibanauser"
elasticsearch.ssl.certificate: /data/elasticsearch-8.10.4/config/client.cer
elasticsearch.ssl.key: /data/elasticsearch-8.10.4/config/client.key
elasticsearch.ssl.certificateAuthorities: [ "/data/elasticsearch-8.10.4/config/client-ca.cer" ]
elasticsearch.ssl.verificationMode: certificate
i18n.locale: "zh-CN"
xpack.encryptedSavedObjects.encryptionKey: encryptedSavedObjects1234567890987654321
xpack.security.encryptionKey: encryptionKeysecurity1234567890987654321
xpack.reporting.encryptionKey: encryptionKeyreporting1234567890987654321
启动
bin/kibana
访问 https://ip:5601
配置logstash
解压后在conf下创建一个配置文件,我取名logstash.conf
input {
kafka {
bootstrap_servers => "192.168.1.1:9092"
group_id => "logstash_test"
client_id => 1 #设置相同topic,设置相同groupid,设置不同clientid,实现LogStash多实例并行消费kafka
topics => ["testlog"]
consumer_threads => 2 #等于 topic分区数
codec => json { #添加json插件,filebeat发过来的是json格式的数据
charset => "UTF-8"
}
decorate_events => false #此属性会将当前topic、offset、group、partition等信息也带到message中
type => "testlog" #跟topics不重合。因为output读取不了topics这个变量
}
}
filter {
mutate {
remove_field => "@version" #去掉一些没用的参数
remove_field => "event"
remove_field => "fields"
}
}
output {
elasticsearch {
cacert => "/data/elasticsearch-8.10.4/config/client-ca.cer"
ssl => true
ssl_certificate_verification => false
user => elastic
password => "123456"
action => "index"
hosts => "https://192.168.1.1:9200"
index => "%{type}-%{+YYYY.MM.dd}"
}
}
修改jvm.options
-Xms6g #你服务器内存的一半,最高32G
-Xmx6g #你服务器内存的一半,最高32G
启动logstash
bin/logstash -f conf/logstash.conf
最后去服务器上部署filebeat
filebeat.inputs:
- type: filestream 跟以前的log类似。普通的日志选这个就行了
id: testlog1
enabled: true
paths:
- /var/log/testlog1.log
field_under_root: true #让kafka的topic: '%{[fields.log_topic]}'取到变量值
fields:
log_topic: testlog1 #跟id不冲突,id输出取不到变量值
multiline.pattern: '^\d(4)' # 设置多行合并匹配的规则,意思就是不以4个连续数字,比如2023开头的 视为同一条
multiline.negate: true # 如果匹配不上
multiline.match: after # 合并到后面
- type: filestream
id: testlog2
enabled: true
paths:
- /var/log/testlog2
field_under_root: true
fields:
log_topic: testlog2
multiline.pattern: '^\d(4)'
multiline.negate: true
multiline.match: after
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true #开启运行时重载配置
#reload.period: 10s
path.home: /data/filebeat-8.10.4/ #指明filebeat的文件夹。启动多个时需要
path.data: /data/filebeat-8.10.4/data/
path.logs: /data/filebeat-8.10.4/logs/
processors:
- drop_fields: #删除不需要显示的字段
fields: ["agent","event","input","log","type","ecs"]
output.kafka:
enabled: true
hosts: ["10.8.74.35:9092"] #kafka地址,可配置多个用逗号隔开
topic: '%{[fields.log_topic]}' #根据上面添加字段发送不同topic
初步的部署这就完成了。后面的使用才是大头,路漫漫其修远兮
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!