还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- hard nofile 65535
- soft nproc 65535
- hard nproc 65535
EOF
设置pam配置:
echo “session required pam_limits.so” >> /etc/pam.d/login
3、禁用swap交换分区
swapoff -a #临时禁用
vi /etc/fstab #永久禁用
找到swap这一行前面使用#符号禁用掉
4、设置TCP重传超时
sysctl -w net.ipv4.tcp_retries2=5
编辑配置文件:echo “net.ipv4.tcp_retries2=5” >> /etc/sysctl.conf
5、创建一个用户
useradd es
6、创建安装目录
mkdir /elasticsearch/
mkdir /elasticsearch/elastic-cluster1 elastic-cluster2
### 2.1、下载官网安装包
官网下载地址,选择对应版本的elasticsearch和kibana:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
![image-20230403150828947](https://img-blog.csdnimg.cn/img_convert/92736391959dee9eb4a3b6dab08d4354.png)
1、解压:我的安装包下载到了/root/目录下,解压到/elasticsearch/elastic-cluster1/目录下
tar zxf /root/elasticsearch-8.1.0-linux-x86_64.tar.gz -C /elasticsearch/elastic-cluster1
2、进入对应目录下:cd /elasticsearch/elastic-cluster1
3、可以在linux里使用wget 加地址的方式直接下载,或者下载到本地,通过lrzsz的rz命令把安装包导入进去,或者ftp
### 2.2、配置文件参数介绍
elasticsearch的配置文件在:elasticsearch-8.1.0/config/elasticsearch.yml
* 参数内容👇:elasticsearch如果不更改配置文件参数,列如network.host参数使用的是开发模式,如果更改就会使用生成产模式
* 开发生产模式区别:https://www.elastic.co/guide/en/elasticsearch/reference/8.1/system-config.html#dev-vs-prod
集群名称设置:cluster.name:
节点名称:node.name:
网络主机设置:network.host:
发现形成集群:discovery.seed_hosts:
选举主节点master资格的节点:cluster.initial_master_nodes:
设置集群间通信端口:transport.port:
设置数据存放位置:path.data:
设置日志存放位置:path.logs:
节点角色设置参考:https://www.elastic.co/guide/en/elasticsearch/reference/8.1/modules-node.html
* JVM堆内存大小设置,原理解读参考:https://blog.csdn.net/laoyang360/article/details/79998974
配置文件路径:elasticsearch-8.1.0/config/jvm.options
生产环境建议默认配置,这是默认配置参数,根据自身进行调整即可,列如4GB的内存环境,就把这两个参数设置成:-Xms1g、-Xmx1g
-Xms4g
-Xmx4g
**注意切记**:实际业务线上环境,建议所有Elasticsearch节点都是独立节点,不要部署其他程序、其他后台进程,以提高性能。如果内存足够大,比如:128GB、256GB,单节点是浪费,建议通过虚拟化方式切分开。
#### 2.2.1、目录结构
| Type | Description | Default Location | Setting |
| --- | --- | --- | --- |
| **home** | Elasticsearch 主目录或 $ES\_HOME | Directory created by unpacking the archive | |
| **bin** | 二进制脚本,包括用于启动节点的 elasticsearch 和用于安装插件的 elasticsearch-plugin | `$ES_HOME/bin` | |
| **conf** | 配置文件,包括但不限于`elasticsearch.yml` | `$ES_HOME/config` | `ES_PATH_CONF` |
| **conf** | 为传输层和 HTTP 层生成 TLS 密钥和证书 | `$ES_HOME/config/certs` | |
| **data** | 节点上分配的每个索引/分片的数据文件的位置 | `$ES_HOME/data` | `path.data` |
| **logs** | 日志文件位置 | `$ES_HOME/logs` | `path.logs` |
| **plugins** | 插件文件位置。每个插件将包含在一个子目录中 | `$ES_HOME/plugins` | |
| **repo** | 共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放置在此处指定的任何目录的任何子目录中 | Not configured | `path.repo` |
### 2.3、启动配置集群
前提:设置好系统配置和JVM堆内存
创建elastic的数据和日志存放目录,如果是测试环境无所谓,如果是生成环境一定要单独设置数据和日志存放的路径,因为ES可能因为升级或其它原因把原有的数据清理或丢失等因素
[root@4-30 elasticsearch-8.1.0]# mkdir /elasticsearch/elastic-cluster1/esdata
[root@4-30 elasticsearch-8.1.0]# mkdir /elasticsearch/elastic-cluster1/eslogs
1、先简单配置一下,vim elasticsearch-8.1.0/config/elasticsearch.yml
cluster.name: elasticsearch-cluster
node.name: node-1
path.data: /elasticsearch/elastic-cluster1/esdata
path.logs: /elasticsearch/elastic-cluster1/eslogs
network.host: 0.0.0.0
http.port: 9200
2、配置文件属组权限,并启动
1、chown -R es:es /elasticsearch/elastic-cluster1/
2、切换到其它用户,root用户不能启动ES:su es
3、进入目录:/elasticsearch/elastic-cluster1/elasticsearch-8.1.0
4、启动:./bin/elasticsearch
后台启动可以加-d的方式,第一次初始化集群看一下启动过程
执行完后检查一下:ls -al /elasticsearch/elastic-cluster1/
![image-20230403170210772](https://img-blog.csdnimg.cn/img_convert/3ea946a27d14d5213072cba3b625f8e4.png)
3、查看启动含义
启动的回显如下就代表成功了生成的信息如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
? Elasticsearch security features have been automatically configured!
? Authentication is enabled and cluster connections are encrypted.
?? Password for the elastic user (reset with bin/elasticsearch-reset-password -u elastic
): ##es登陆的密码
j6np-BzH3+xtJwyvwXjh
?? HTTP CA certificate SHA-256 fingerprint:
18efaa1f3bd314cbe40839b5472aba6af179f17b62b0d4c8631cc97229ccabe6
?? Configure Kibana to use this cluster:
? Run Kibana and click the configuration link in the terminal when Kibana starts.
? Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes): ##登陆kibana的注册令牌,时效30分钟
eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxOTIuMTY4LjAuMjo5MjAwIl0sImZnciI6IjE4ZWZhYTFmM2JkMzE0Y2JlNDA4MzliNTQ3MmFiYTZhZjE3OWYxN2I2MmIwZDRjODYzMWNjOTcyMjljY2FiZTYiLCJrZXkiOiJXM3hiUm9jQjd5UlZ6QmJBR0xOSDp2NVZ5MjRDT1MwdVJjeVlIRlZKeDhRIn0=
?? Configure other nodes to join this cluster:
? Copy the following enrollment token and start new Elasticsearch nodes with bin/elasticsearch --enrollment-token <token>
(valid for the next 30 minutes):
eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxOTIuMTY4LjAuMjo5MjAwIl0sImZnciI6IjE4ZWZhYTFmM2JkMzE0Y2JlNDA4MzliNTQ3MmFiYTZhZjE3OWYxN2I2MmIwZDRjODYzMWNjOTcyMjljY2FiZTYiLCJrZXkiOiJYSHhiUm9jQjd5UlZ6QmJBR0xOSDp0Sm82RWNvYlQ4Nmc0WkNLX2w4SUp3In0=
If you’re running in Docker, copy the enrollment token and run:
docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.1.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4、浏览器访问
输入你的公网IP加9200端口,注意要用https访问,输入前面生成的密码:j6np-BzH3+xtJwyvwXjh,用户是:elastic
![image-20230403171729854](https://img-blog.csdnimg.cn/img_convert/f37d7af86b290677140360a9d32c0b8a.png)
#### 2.3.1、重置密码
输入账户密码登陆,如果忘记密码,可以使用命令重新设置密码:/elasticsearch-reset-password -u elastic -i
注:集群得在启动的前提来修改,如果集群没有启动修改密码报错
![image-20230403172240641](https://img-blog.csdnimg.cn/img_convert/26f94bb2f40a2e53a283969f179c5515.png)
#### 2.3.2、重新生成kibana令牌
生成命令:bin/elasticsearch-create-enrollment-token -s kibana
![image-20230403172924530](https://img-blog.csdnimg.cn/img_convert/f36b4a130cb80dae35fcd8164e4335b4.png)
如果你的kibana不在同一台主机上就需要加上http或https的访问路径生成,用""扩起来
#### 2.3.3、转换成生产环境后默认的es配置说明
cluster.name: elasticsearch-cluster
node.name: node-1
path.data: /elasticsearch/elastic-cluster1/esdata
path.logs: /elasticsearch/elastic-cluster1/eslogs
network.host: 0.0.0.0
http.port: 9200
默认为true,启用 Elasticsearch 安全功能:xpack.security.enabled: true
xpack.security.enrollment.enabled: true
用于在 Elasticsearch 用于与其他客户端通信的 HTTP 网络层上启用或禁用 TLS/SSL。默认值为false:xpack.security.http.ssl:
表示开启:enabled: true
包含私钥和证书的密钥库文件的路径,目录在config/certs/http.p12:keystore.path: certs/http.p12
用于在传输网络层上启用或禁用 TLS/SSL,节点用于相互通信。默认值为false:xpack.security.transport.ssl:
表示开启:enabled: true
控制证书的验证。控制证书的验证:verification_mode: certificate
certificate:它验证提供的证书是否由可信机构 (CA) 签名,但不执行任何主机名验证
包含私钥和证书的密钥库文件的路径:keystore.path: certs/transport.p12
包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件:truststore.path: certs/transport.p12
选举主节点master资格的节点:cluster.initial_master_nodes: [“node-1”]
## 3、配置kibana
### 3.1、下载安装
官网下载地址,选择对应版本的elasticsearch和kibana:https://www.elastic.co/cn/downloads/past-releases#kibana
官网文档:https://www.elastic.co/guide/en/kibana/8.1/introduction.html
解压:tar zxf /root/kibana-8.1.0-linux-x86_64.tar.gz -C /elasticsearch/elastic-cluster1
1、进入到解压目录
![image-20230403192017283](https://img-blog.csdnimg.cn/img_convert/2b4ff09246c44839f2039fa5793bb219.png)
2、编辑配置文件:vim kibana-8.1.0/config/kibana.yml
设置kibana的访问端口:server.port: 5601
主机所在的IP:server.host: “”
指定连接Elasticsearch的连接地址:elasticsearch.hosts: [“http://IP:端口”]
我配置如下:
![image-20230403213338693](https://img-blog.csdnimg.cn/img_convert/015c9ca63b5b65f6b9d0ac9a93faa0f0.png)
3、启动kibana
root用户启动:kibana-8.1.0/bin/kibana --allow-root
启动成功的截图如下,会生成一个url,复制下来把0.0.0.0换成IP地址,在访问
![image-20230403213439712](https://img-blog.csdnimg.cn/img_convert/494920494109d3951e57e9b8bfd48773.png)
4、输入elasticsearch的kibana令牌登陆
![image-20230403213643229](https://img-blog.csdnimg.cn/img_convert/df943e76b0dd3749a148696b88a5205d.png)
5、输入账号密码:内置超级用户elastic
![image-20230403214543023](https://img-blog.csdnimg.cn/img_convert/743186a700e09e077f1909e6495878f2.png)
6、添加或不添加都行,add或explore点哪个都行
![image-20230403214709360](https://img-blog.csdnimg.cn/img_convert/8050136c6ed556eed295f1df65067e6d.png)
7、在kibana里验证一下,可以看到es的节点信息
![image-20230403214903528](https://img-blog.csdnimg.cn/img_convert/00160a59ce9f461efa9bcb380fbd0040.png)
8、如果遇到这个信息,这个不是报错,可以看一下linux终端上的信息,kibana会输出6个数字,输入进去即可
![image-20230512231422487](https://img-blog.csdnimg.cn/img_convert/78a5c0861c0f1a30f2f2aa9635ecce62.png)
## 4、同一台服务器的elastic集群配置
### 4.1、生成新的elastic
单点部署完毕后来生成一个新的elastic,把之前的单点部署先停掉
1、把原有的配置都复制过去:cp -R elastic-cluster1/\* elastic-cluster2/
![image-20230403215518672](https://img-blog.csdnimg.cn/img_convert/f27686f6e0f02aead543e30f47735a71.png)
2、设置权限
![image-20230403215255622](https://img-blog.csdnimg.cn/img_convert/54303f2705c378c94bda28d6e2f3259c.png)
3、删除原有集群生成的数据和logs日志,不删除会报错:rm -rf esdata/\* eslogs/\*
![image-20230403215608461](https://img-blog.csdnimg.cn/img_convert/1ef635cd3a86023aad5b00225ddfaa14.png)
4、配置文件对比如下:
集群node-1
cluster.name: elasticsearch-cluster
node.name: node-1
path.data: /elasticsearch/elastic-cluster1/esdata
path.logs: /elasticsearch/elastic-cluster1/eslogs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: [“192.168.0.2:9300”, “192.168.0.2:9301”]
cluster.initial_master_nodes: [“node-1”, “node-2”]
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
集群node-2
cluster.name: elasticsearch-cluster
node.name: node-2
path.data: /elasticsearch/elastic-cluster2/esdata
path.logs: /elasticsearch/elastic-cluster2/eslogs
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
discovery.seed_hosts: [“192.168.0.2:9300”, “192.168.0.2:9301”]
cluster.initial_master_nodes: [“node-1”, “node-2”]
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
![image-20230403220420684](https://img-blog.csdnimg.cn/img_convert/98c92e0dcd8c9e38a98f1e17d1644840.png)
注:配置文件有两行:cluster.initial\_master\_nodes,把最后一行注释掉,保留前面的一行,设置es节点:: [“node-1”, “node-2”],仔细看文件差异,因为是同一台服务器部署多节点形成集群所以有部分设置是唯一性的
5、访问测试
把2个es都启动,不然无法访问
![image-20230403221408715](https://img-blog.csdnimg.cn/img_convert/2263625976f97d7ad0fae727569dd92e.png)
6、启动kibana:elastic-cluster1/kibana-8.1.0/bin/kibana --allow-root
查询结果如下
![image-20230403222013578](https://img-blog.csdnimg.cn/img_convert/60c1280e1414c0819dc4965ec26580dd.png)
![image-20230403223830460](https://img-blog.csdnimg.cn/img_convert/d0f5402718482ea68bb8d9f3bfab0ccc.png)
## 5、多服务器部署节点加入同一集群
因为生产环境的es是启动着安全设置的,使用TLS加密节点间进行通信,可以参考官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.1/security-basic-setup.html#encrypt-internode-communication
### 5.1、方法论
注意事项:集群中的节点数量应该是奇数个,最少为3个,这样可以避免脑裂问题
就不放截图了,直接口述,跟上面配置没有太大出入,包括注意事项一样,当时这个问题卡了我几天后来把data目录下的数据删除后在启动就可以了
1、如果你是新集群,es内没有任何数据可以使用此方法,把es里面配置的的data和logs目录下的所有内容都删除
2、主机这两个内网主机是否能通信,首先保证通信正常,能ping就行
3、是否设置了node.roles:,如果默认不用管,如果设置了你要确保你设置的是否正确
4、确保你的ca证书,及tls设置是否正确,可以参考下面配置的生成证书然后分配到对应节点上在加入集群,或者用取巧的方法,直接把集群拷贝过去,然后修改一下启动即可
5、不用生成新的token node,新节点也不用指定token
* 我的操作步骤,复制已有集群到另外一台机器上,然后配置/etc/hosts文件把IP和主机名加入进去,然后,新节点下的data和logs目录内的文件全部删除,配置文件配置好集群信息,启动集群加入新节点即可
* 3个节点的配置文件:
主节点配置如下:
cluster.name: node-xiao
node.name: master
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: [“192.168.0.160:9300”, “192.168.0.160:9302”, “192.168.0.183:9301”]
cluster.initial_master_nodes: [“master”]
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
node1节点配置如下:
cluster.name: node-xiao
node.name: node1
network.host: 0.0.0.0
http.port: 9202
transport.port: 9302
discovery.seed_hosts: [“192.168.0.160:9300”, “192.168.0.160:9302”, “192.168.0.183:9301”]
cluster.initial_master_nodes: [“master”]
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
node2节点配置如下:
cluster.name: node-xiao
node.name: node2
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
discovery.seed_hosts: [“192.168.0.183:9301”, “192.168.0.160:9302”, “192.168.0.160:9300”]
cluster.initial_master_nodes: [“master”]
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
![image-20230529144854877](https://img-blog.csdnimg.cn/img_convert/a340ecea406b85aca65b4215d97fbe74.png)
* 我试了两种方法,第一种是集群全部是初始化新的状态,方法二是加入节点,没有太大的差异
跟方法1没有什么出入
![image-20230529154819085](https://img-blog.csdnimg.cn/img_convert/8cb667a07d652bcf1c5c60a1e326990f.png)
### 5.3、生成设置证书
官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.1/update-node-certs-same.html
我的报错如下:错误:跳过安全自动配置,因为此节点被配置为引导或加入不受支持的多节点群集
**注:我生成的是两个节点的证书,你需要最少配置3个节点,多加入个IP即可**
解决方案:
1、禁用群集中所有节点的安全性:xpack.security.enabled: false
2、禁止引导检查:discovery.type=single-node
3、配置集群通信密钥,让集群通信在加入
ERROR: Skipping security auto configuration because this node is configured to bootstrap or to join a multi-node cluster, which is not supported.
* 进入elastic的目录下,执行命令生成ca证书:elasticsearch-certutil ca,默认直接回车即可,第一个选项设置名称,第二个设置密码
![image-20230405221330997](https://img-blog.csdnimg.cn/img_convert/5c2d397e9ec7f79a2256d2c63fd76a12.png)
![image-20230405221344877](https://img-blog.csdnimg.cn/img_convert/72e2c8685c6a6bb5030ba9ea6801b591.png)
* 为刚刚生成的ca证书生成一个密钥库:./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12,(elastic-stack-ca.p12为刚刚生成ca的名字)
![image-20230405223633279](https://img-blog.csdnimg.cn/img_convert/eac9830038ff9b3b8512f54f295ff72d.png)
* 把生成的证书移动到certs目录下:mv elastic-certificates.p12 ./config/certs/,mv elastic-stack-ca.p12 ./config/certs/
* 生成http的证书:./bin/elasticsearch-certutil http
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**