手工扫描
[root@node1 ~]# yum install -y telnet
查看目标主机80端口是否开放
[root@node1 ~]# telnet 192.168.4.11 80
Trying 192.168.4.11…
telnet: connect to address 192.168.4.11: Connection refused
[root@node1 ~]# telnet 192.168.4.11 21
Trying 192.168.4.11…
Connected to 192.168.4.11.
Escape character is ‘^]’.
220 (vsFTPd 3.0.2) # 按ctrl+]退出
^]
telnet> quit
Connection closed.
-
在线破解哈值的网站:https://cmd5.com/
-
kali系统提供了一个名为john的工具,可用于密码破解
[root@node1 ~]# echo 123456 | passwd --stdin root
[root@node1 ~]# useradd tom
[root@node1 ~]# echo abc123 | passwd --stdin tom
[root@node1 ~]# useradd jerry
[root@node1 ~]# echo 123123 | passwd --stdin jerry
[root@node1 ~]# scp /etc/shadow kali@192.168.4.40:/home/kali/
======================================================================
┌──(kali?kali)-[~]
└─$ sudo john --single shadow
字典暴力破解,密码本是/usr/share/john/password.lst
======================================================================================================
┌──(kali?kali)-[~]
└─$ sudo john shadow
==================================================================================
┌──(kali?kali)-[~]
└─$ sudo john --show shadow
root:123456:18912:0:99999:7:::
tom:abc123:18912:0:99999:7:::
jerry:123123:18912:0:99999:7:::
linux系统自带的密码本
[root@node1 ~]# yum install -y words
[root@node1 ~]# ls /usr/share/dict/
linux.words words
[root@node1 ~]# wc -l /usr/share/dict/words
479828 /usr/share/dict/words
字典暴力破解,指定密码本文件
[root@node1 ~]# scp /usr/share/dict/linux.words kali@192.168.4.40:/home/kali/
┌──(kali?kali)-[~]
└─$ sudo john --wordlist=linux.words shadow
- 传输的各种数据,在网络中都是一个个的数据包
┌──(kali?kali)-[~]
└─$ sudo tcpdump
=================================================================================
=================================================================================
=========================================================================
=============================================================================
===========================================================================
使用host过滤主机,使用net过滤网段,使用port过滤端口… …
=================================================================================================
1. 抓包:抓取eth0上进出的、与192.168.4.11有关的、涉及TCP21端口的软件包。以下命令执行后,打开新终端。
==============================================================================================================================
┌──(kali?kali)-[~]
└─$ sudo tcpdump -i eth0 -A host 192.168.4.11 and tcp port 21
============================================================================
┌──(kali?kali)-[~]
└─$ ftp 192.168.4.11
Connected to 192.168.4.11.
220 (vsFTPd 3.0.2)
Name (192.168.4.11:kali): tom # 用户名
331 Please specify the password.
Password:abc123 # 此处是tom的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit # 退出
221 Goodbye.
========================================================================================
1. 将抓到的包存入文件ftp.cap
┌──(kali?kali)-[~]
└─$ sudo tcpdump -i eth0 -A -w ftp.cap host 192.168.4.11 and tcp port 21
2. 在另一个终端访问ftp
在新终端登陆ftp
┌──(kali?kali)-[~]
└─$ ftp 192.168.4.11
Connected to 192.168.4.11.
220 (vsFTPd 3.0.2)
Name (192.168.4.11:kali): tom # 用户名
331 Please specify the password.
Password:abc123 # 此处是tom的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit # 退出
221 Goodbye.
3. 在抓包终端ctrl+c停止
4. 读取抓到的包,并过滤
┌──(kali?kali)-[~]
└─$ tcpdump -A -r ftp.cap | egrep ‘USER|PASS’
图形工具:wireshark
[root@zzgrhel8 ~]# yum install wireshark ftp
选择抓哪块网卡进出的数据,然后点左上角的开始
抓到包后,点击左上角同样位置停止,查看数据
nginx安全
安装启服务
[root@node1 lnmp_soft]# yum install -y gcc pcre-devel zlib-devel
[root@node1 lnmp_soft]# tar xf nginx-1.12.2.tar.gz
[root@node1 lnmp_soft]# cd nginx-1.12.2/
[root@node1 nginx-1.12.2]# ./configure && make && make install
[root@node1 ~]# /usr/local/nginx/sbin/nginx
访问不存在的路径
命令行访问:
[root@node1 ~]# curl -I http://192.168.4.11/ # -I 只显示头部
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Fri, 10 Dec 2021 07:51:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 10 Dec 2021 07:46:16 GMT
Connection: keep-alive
ETag: “61b305c8-264”
Accept-Ranges: bytes
隐藏版本信息
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
… …
17 http {
18 server_tokens off;
… …
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
-
防止DOS、DDOS攻击
-
DDOS:分布式拒绝服务
压力测试,每批次发送100个请求给web服务器,一共发200个
==============================================================================================
[root@zzgrhel8 ~]# yum install -y httpd-tools
[root@zzgrhel8 ~]# ab -c 100 -n 200 http://192.168.4.11/
… …
Benchmarking 192.168.4.11 (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests # 发送200个请求完成
… …
Complete requests: 200 # 完成了200个请求
Failed requests: 0 # 0个失败
… …
配置nginx连接共享内存为10M,每秒钟只接收一个请求,最多有5个请求排队,多余的拒绝
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
17 http {
18 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # 添加
… …
37 server {
38 listen 80;
39 server_name localhost;
40 limit_req zone=one burst=5; # 添加
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
再次测试
[root@zzgrhel8 ~]# ab -c 100 -n 200 http://192.168.4.11/
… …
Benchmarking 192.168.4.11 (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests
… …
Complete requests: 200
Failed requests: 194 # 失败了194个
… …
拒绝某些类型的请求
-
用户使用HTTP协议访问服务器,一定是通过某种方法访问的。
-
最常用的HTTP方法
-
GET:在浏览器中输入网址、在页面中点击超链接、搜索表单。
-
POST:常用于登陆、提交数据的表单
-
其他HTTP方法不常用,如:
-
HEAD:获得报文首部。HEAD 方法和 GET 方法一样,只是不返回报文主体部分。
-
PUT:传输文件。要求在请求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。
-
DELETE:删除文件。DELETE 方法按请求 URI 删除指定的资源。
============================================================================================
[root@zzgrhel8 ~]# curl -i -X GET http://192.168.4.11/
[root@zzgrhel8 ~]# curl -i -X HEAD http://192.168.4.11/
配置nginx只接受GET和POST方法
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
… …
37 server {
38 listen 80;
39 if ( r e q u e s t m e t h o d ! ( G E T ∣ P O S T ) request_method !~ ^(GET|POST) requestmethod! (GET∣POST) ) {
40 return 444;
41 }
… …
r e q u e s t m e t h o d 是内置变量,表示请求方法。 表示正则匹配, ! 表示取反 。 表 示开头, request_method是内置变量,表示请求方法。~表示正则匹配,!表示取反。^表示开头, requestmethod是内置变量,表示请求方法。 表示正则匹配,!表示取反。表示开头,表示结尾,|表示或
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
使用GET和HEAD方法访问nginx。只有GET可以工作
[root@zzgrhel8 ~]# curl -i -X GET http://192.168.4.11/
[root@zzgrhel8 ~]# curl -i -X HEAD http://192.168.4.11/
附:取出nginx.conf中注释和空行以外的行
# -v是取反。^ *#表示开头有0到多个空格,然后是#。^KaTeX parse error: Undefined control sequence: \[ at position 6: 表示空行 \̲[̲root@node1 ~\]#…’ /usr/local/nginx/conf/nginx.conf
- 设置tom账号,有效期为2022-1-1
命令配置文件帮助
man 5 passwd
man 5 shadow
命令帮助
man 1 passwd
查看tom的账号信息
[root@node1 ~]# chage -l tom
最近一次密码修改时间 :10月 12, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@node1 ~]# chage -E 2022-1-1 tom
[root@node1 ~]# chage -l tom
最近一次密码修改时间 :10月 12, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :1月 01, 2022
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
设置账号永不过期,注意-E后面是数字-1,不是字母l
[root@node1 ~]# chage -E -1 tom
[root@node1 ~]# chage -l tom
最近一次密码修改时间 :10月 12, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
设置新建用户的密码策略
[root@node1 ~]# vim /etc/login.defs
25 PASS_MAX_DAYS 99999 # 密码永不过期,设置最长有效期
26 PASS_MIN_DAYS 0 # 密码最短使用时间,0表示随时可改密码
27 PASS_MIN_LEN 5 # 密码最短长度
28 PASS_WARN_AGE 7 # 密码过期前7天发警告
33 UID_MIN 1000 # 新建用户最小的UID
34 UID_MAX 60000 # 新建用户最大的UID
!!!此文件对现有用户不会生效,只对新建用户生效
用户安全设置
锁定tom账号
[root@node1 ~]# passwd -l tom
锁定用户 tom 的密码 。
passwd: 操作成功
[root@node1 ~]# passwd -S tom # 查看状态
tom LK 2021-10-12 0 99999 7 -1 (密码已被锁定。)
解锁tom账号
[root@node1 ~]# passwd -u tom
解锁用户 tom 的密码。
passwd: 操作成功
[root@node1 ~]# passwd -S tom
tom PS 2021-10-12 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
保护文件
查看文件的特殊属性
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)
Java面试精选题、架构实战文档
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
起的朋友,同时减轻大家的负担。**[外链图片转存中…(img-xPxSLhJi-1712643602206)]
[外链图片转存中…(img-MNfZ4pYa-1712643602206)]
[外链图片转存中…(img-cxN7SfFy-1712643602207)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)
[外链图片转存中…(img-D5EhfiRf-1712643602207)]
Java面试精选题、架构实战文档
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!