Power-Linux

  • Linux 下各种常见服务的搭建/配置指南

  • 大部分环境在 Centos7,少部分 Ubuntu

  • 主要以安装搭建为主,近一步的配置请参考官方教程


大纲

  • 🥩 常见工具

    • Lvm

    • Net

    • RAID

    • Vim

    • Tmux

  • 🍜 网络服务

    • AdguardTeam

    • butterfly

    • Cacti

    • Chrony

    • clash

    • cloud-torrent

    • code-server

    • DHCP

    • DNS

    • focalboard

    • frp

    • Kicktart

    • nps

    • OpenVPN

    • PowerDNS

      • PowerDNS-Admin

    • proxychains-ng

    • ss5

    • SSH

    • ttyd

    • vnc4server

  • 🍦 web服务-中间件

    • ActiveMQ

    • Apache_httpd

    • Caddy

    • npm & Node

    • Nexus

    • Nginx

    • php-cli

    • phpMyAdmin

    • RabbitMQ

    • searx

    • Tomcat

    • Wordpress

    • Mijisou

  • 🍉 数据库

    • Relational

      • Oracle

      • Mariadb

      • MySQL

      • Postgresql

    • Document

      • MongoDB

    • Key-value

      • Redis

      • Memcached

    • 图形

      • Neo4j

  • 🍣 文件服务

    • filebrowser

    • NFS

    • Samba

    • sharry

    • Vsftp

  • 🍗 编程语言

    • C

    • Go

    • JDK

    • Perl

    • PHP

    • Python3

      • pip

      • jupyterlab

    • Ruby

    • Rust

  • 🍞 系统监管

    • BaoTa

    • Jenkins

    • JumpServer

    • Loganalyzer

    • Supervisor

    • Webmin

    • Zabbix

  • 🌭 容器 & 虚拟化

    • Docker

      • Docker-Compose

      • Docker-Portainer

    • Kubernetes

      • kubectl

    • QEMU

  • 🥕 分布式

    • ZooKeeper

  • 🍯 安全服务

    • ClamAV

    • Fail2Ban

    • OpenLDAP

      • PhpLdapAdmin

    • Snort

    • Suricata

    • tripwire

  • 🍷 设施配置

    • f8x

    • Terraform

  • 🍥 各种依赖和报错

    • LuaJIT


常见工具

Lvm

LVM 是 Logical Volume Manager 的缩写,中文一般翻译为 "逻辑卷管理",它是 Linux 下对磁盘分区进行管理的一种机制。LVM 是建立在磁盘分区和文件系统之间的一个逻辑层,系统管理员可以利用 LVM 在不重新对磁盘分区的情况下动态的调整分区的大小。如果系统新增了一块硬盘,通过 LVM 就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。

卷组

创建一个名为 datastore 的卷组,卷组的 PE 尺寸为 16MB;

逻辑卷

逻辑卷的名称为 database 所属卷组为 datastore,该逻辑卷由 50 个 PE 组成;

逻辑卷的名称为 database 所属卷组为 datastore,该逻辑卷大小为 8GB;

格式化

将新建的逻辑卷格式化为 XFS 文件系统,要求在系统启动时能够自动挂在到 /mnt/database 目录.

添加挂载的配置

重启验证

扩容

将 database 逻辑卷扩容至 15GB 空间大小,以满足业务需求.


Net

centos 配置网卡

修改主机名

修改 DNS


RAID

安装

分区

创建阵列

  • RAID1

  • RAID5

格式化为 xfs

以 UUID 的形式开机自动挂载


Vim

VIM 是 Linux 系统上一款文本编辑器,它是操作文本的一款利器。

常用操作

常用配置

vim /etc/vim/vimrcvim /etc/vimrc 最后面直接添加你想添加的配置,下面是一些常用的 (不建议直接复制这个或者网上的,要理解每个的含义及有什么用,根据自己需要来调整)

使用 vim 对比文件

解决 ssh 后 vim 中不能使用小键盘的问题

  • xshell

    更改的方法: 在终端设置中选择终端类型为 linux

  • ubuntu

SpaceVim - 模块化的 Vim IDE

how-to-exit-vim - 退出 vim 的多种方式


Tmux

  • https://github.com/tmux/tmux

安装

使用

帮助信息

新建会话

分离会话

接入会话

列出所有会话

杀死会话

切换会话

重命名会话

历史日志

然后按 [

水平分隔

增加回滚缓冲区的大小

保存指定输出

发送按键

tmux 下使用 rz/sz 卡死的解决方案

按住Ctrl键, 再按五次x键 (强行终断传输)


网络服务

AdguardTeam

一个 DNS 去广告、去跟踪的服务

项目地址

  • https://github.com/AdguardTeam/AdGuardHome

安装

其他管理命令

无误的话访问服务器 IP:3000 就可以看到管理页面了

修改密码

编辑 AdGuardHome.yaml 文件,修改 password 字段,修改的密码需要是 BCrypt 生成的,可以用在线网站实现 https://bcrypt-generator.com/

重启服务

Tips

配合下列项目获得更好的体验

  • https://github.com/privacy-protection-tools/anti-AD


butterfly

基于 websocket 和 tornado 的 web 终端

项目地址

  • https://github.com/paradoxxxzero/butterfly

安装

使用

访问 IP:57575 , 在 web 页面中 Alt+s 可以切换主题样式


Cacti

Cacti 是一套基于 PHP,MySQL,SNMP 及 RRDTool 开发的网络流量监测图形分析工具。它的主要功能是用 snmp 服务获取数据,然后用 rrdtool 储存和更新数据,当用户需要查看数据的时候用 rrdtool 生成图表呈现给用户。

官网

  • https://www.cacti.net/

什么是 RRDtools

RRDtool 是指 Round Robin Database 工具(环状数据库)。Round robin 是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。RRDtool 处理 RRD 数据库。它用向 RRD 数据库存储数据、从 RRD 数据库中提取数据。

搭建 lamp

初始化 mysql

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 123456 这类弱口令

修改 php.ini 配置文件

然后在浏览器上访问 ip/phpinfo.php 能看到 phpinfo 信息就没问题

安装配置 cacti

编辑 my.cnf 配置文件

导入 cacti 数据库脚本

配置定时任务

安装其他组件

安装 rrdtool 工具

安装 cacti-spine 工具

如果出现 csrf-secret.php not writable

在浏览器访问:http://ip/cacti 默认密码 admin/admin


Chrony

一个时间同步软件,可用于搭建类 NTP 时间服务

官网

  • https://chrony.tuxfamily.org/

简介

它由两个程序组成:chronyd 和 chronyc.

chronyd 是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步.它确定计算机增减时间的比率,并对此进行补偿.

chronyc 是用来监控 chronyd 性能和配置其参数程序

安装

配置文件

启服务

查看同步状态


clash

项目地址

  • https://github.com/Dreamacro/clash

部署

负载均衡配置

辅助项目


cloud-torrent

web torrent 下载服务

项目地址

  • https://github.com/jpillora/cloud-torrent

安装

运行


code-server

在线 vscode 服务器

项目地址

  • https://github.com/cdr/code-server

安装

运行


DHCP

DHCP 服务程序用于为客户端主机分配可用的 IP 地址

安装

复制一份示例

修改配置文件


DNS

DNS 用于将人类可读的域名(例如,www.google.com) 进行域名解析为机器可读的 IP 地址

安装

主配置文件

区域配置文件

创建区域数据文件

域名正向反向解析配置文件

启服务

更多配置案例

见 dns.md


focalboard

Focalboard 是一个开源的、自托管的 Trello、concept 和 Asana 的替代品。

项目地址

  • https://github.com/mattermost/focalboard

自托管 Mattermost 服务器

启动完毕后访问 127.0.0.1:8065


frp

快速反向代理,将本地服务器映射到公网。

项目地址

  • https://github.com/fatedier/frp

服务端安装

编辑 frps 配置文件

第1行为 frps 和 frpc 之间端口,第 2 行为监控页面 web 地址,第 3.4 行为监控页面账号密码

服务端运行

运行 frps,-c 参数用于指定配置文件,在同级目录下的话可以直接运行 frps

此时服务器已在运行,可以访问 服务器ip:7500 访问 web 监控界面

客户端安装

这里最后一句是 rm -rf frps* 与服务端操作的最后一句不相同。

编辑 frpc 配置文件

这样就在本地上新增了"DSM"和"SSH"两个可供公网访问的服务了

客户端运行

SSH 连接测试

这个时候相当于在连接客户端的 SSH 服务


Kicktart

是 Kicktart 不是 kickstarter,这玩意不能众筹,这是用于联网安装系统时给 PXE 服务提供应答文件的

  • 调用服务:PXE + TFTP +FTP + DHCP + Kicktart

  • 环境:VMWARE

  • 1台无人值守系统——RHEL 7——192.168.10.10

  • 1台客户端——未安装操作系统

注:vmware 中做实验需要在虚拟网络编辑器中将 dhcp 服务关闭

配置 DHCP

DHCP 服务程序用于为客户端主机分配可用的 IP 地址,而且这是服务器与客户端主机进行文件传输的基础

配置 TFTP 服务

配置 TFTP 服务程序,为客户端主机提供引导及驱动文件.当客户端主机有了基本的驱动程序之后,再通过 vsftpd 服务程序将完整的光盘镜像文件传输过去.

配置 SYSLinux 服务

SYSLinux 是一个用于提供引导加载的服务程序.与其说 SYSLinux 是一个服务程序,不如说更需要里面的引导文件,在安装好 SYSLinux 服务程序软件包后, /usr/share/syslinux 目录中会出现很多引导文件.

配置 VSftpd 服务

创建 KickStart 应答文件

Source & Reference


nps

、一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。

项目地址

  • https://github.com/cnlh/nps

服务端安装

访问 ip:8080 ,默认用户名和密码 admin/123

客户端安装

在服务器端新增客户端,点击客户端列表前的+号,复制启动命令

执行启动命令,linux 直接执行即可,windows 将 ./npc 换成 npc.exe 用 cmd 执行

使用示例

  • https://ehang-io.github.io/nps/#/example


OpenVPN

OpenVPN 是一个用于创建虚拟专用网络加密通道的软件包

官网

  • https://openvpn.net/

快速安装脚本

centos 下安装 OpenVPN

  • 前期准备

    安装 OpenVPN

    安装 easyrsa

    初始化与创建CA根证书

    生成服务端证书

    生成ta.key

    制作 Client 端证书

    每一个登录的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接

    配置 OpenVPN 服务端

    拷贝 OpenVPN 配置文件

    配置服务端的配置文件

    开启 openvpn 服务

    测试连接

    管理员身份运行 openvpn.exe

    将指定配置文件放入文件夹,连接

  • docker 搭建 OpenVPN

    docker 安装

    生成密钥文件

    注意 : 此处只是为了方便演示,生产环境下请不要使用类似 12345678 这类弱口令

    生成客户端证书 (这里的 user 改成你想要的名字)

    导出客户端配置

    启动 OpenVPN 服务

    将登录的证书下载到本地

    在 openvpn 的安装目录下,有个 config 目录,将服务器上的 user.ovpn,放在该目录下,运行 OpenVPN GUI,右键 whsir 连接 connect

    Source & Reference


PowerDNS

一种 DNS 服务器, 优点, 支持 PHP 网页管理, 支持直接在数据库中添加 DNS 地址记录, 比较灵活, 方便

项目地址

  • https://github.com/PowerDNS/pdns

安装

以 Ubuntu16.04 为例

先配置好 mysql

为 PowerDNS 创建一个数据库,并创建一个数据库用户 powerdns,密码 123456

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 123456 这类弱口令

创建 PowerDNS 所需的表

安装 PowerDNS

Ubuntu 18.04 附带 systemd-resolve,你需要禁用它,并删除 resolv.conf 文件,因为它绑定到端口 53 ,这将与 PowerDNS 端口冲突。

此时记得将 /etc/resolv.conf 中的 nameserver 改为 127.0.0.1

测试

PowerDNS-Admin

PowerDNS-Admin 是一个具有以下高级功能的 PowerDNS Web 界面

项目地址

  • https://github.com/ngoduykhanh/PowerDNS-Admin

安装

设置数据库

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 123456 这类弱口令

Running PowerDNS-Admin

现在访问 ip:9191

注: 这对于测试环境很有效,但是对于生产环境,应该使用 gunicorn 或 uwsgi


proxychains-ng

通过 DLL 注入,使目标程序走代理

项目地址

  • https://github.com/rofl0r/proxychains-ng

安装

编辑配置

使用

在需要代理的命令前加上 proxychains4 ,如 : proxychains4 wget https://www.google.com/


ss5

Socks5 代理服务器

centos7

一键安装脚本


SSH

Secure Shell 是一種加密的網路傳輸協定,可在不安全的網路中為網路服務提供安全的傳輸環境。

官网

  • https://www.ssh.com

一般主机安装完毕后 SSH 是默认开启的,使用 /etc/init.d/ssh status 查看主机 SSH 状态

注: ssh_config 为客户端连接到服务端的配置文件;sshd_config 为服务端的配置。

Kali/Manjaro

安装完毕后会自动启动,但是没有配置配置文件会无法登录,修改下配置文件

若在使用工具登录时,当输完用户名密码后提示 SSH 服务器拒绝了密码,就再试一遍.

这时不要着急,只需要在 Kali 控制端口重新生成两个秘钥即可.

Ubuntu

如果没有就装一下,如果你只是想登录别的机器的 SSH 只需要安装 openssh-client (ubuntu 有默认安装,如果没有则 apt install -y openssh-client) ,如果要使本机开放 SSH 服务就需要安装 openssh-server

配置允许 root 远程登录

Debian

配置允许 root 远程登录

配置文件

详细的配置文件内容见 ssh

加固

本部分内容移步Secure-Linux SSH 部分

排错

  1. 先排查是不是客户端(自己)的问题,再排查是不是服务端(对面)的问题,最后在排查是不是传输中(中间)的问题.

  2. ping 试试,如果网络层可通,那么大概率是应用层的问题,检查 SSH 配置,是否有白名单限制,或者你他娘的意大利防火墙或 selinux 就没放行

  3. 假设这么一种情况,应用层配置正常,主机一切正常,但路由器/交换机在 ACL 上禁用了 SSH 的流量,这样就是传输层的问题了.内网 IPS/IDS 阻断同理.

  4. 麻烦你看下账号密码是不是写错了谢谢.或者是不是限制只使用密钥登录的.

  5. 注意下是不是配置文件或服务看错了是 sshd 不是 ssh

motd


ttyd

用于在 web 上访问终端

项目地址

  • https://github.com/tsl0922/ttyd

安装

运行

现在访问 http://localhost:8080 即可


vnc4server

为主机提供 VNC 服务

安装

windows 使用 tightVNC 测试连接,连接地址: IP:5901


web服务-中间件

ActiveMQ

Apache ActiveMQ 是 Apache 软件基金会所研发的开放源代码消息中间件;由于 ActiveMQ 是一个纯 Java 程序,因此只需要操作系统支持 Java 虚拟机,ActiveMQ 便可执行.

官网

  • http://activemq.apache.org/

安装

安装依赖 JDK

下载 activemq 压缩包,这里以 5.14.5 为例

访问 127.0.0.1:8161 用户名:admin 密码:admin

修改用户信息编辑 conf/jetty-realm.properties 即可


Apache_httpd

Apache HTTP Server 是 Apache 軟體基金會的一個開放原始碼的網頁伺服器軟體,可以在大多數電腦作業系統中運行。由於其跨平台和安全性,被廣泛使用,是最流行的 Web 伺服器軟體之一。

官网

  • https://www.apache.org/

安装

简单配置

启服务

此时可以访问 ip/index.html

虚拟主机

配置虚拟主机文件

更多配置案例

见 httpd.md


Caddy

Caddy 伺服器是一個開源的,使用 Golang 編寫,支持 HTTP/2 的 Web 服務端。

注 : 在新版 caddy 中以下配置已经不兼容了,请参考官方文档 https://caddyserver.com/docs/getting-started

官网

  • https://caddyserver.com/

安装 Caddy

启动测试

配置文件

反向代理

做一个 ip 跳转

HTTPS

为已经绑定域名的服务器自动从 Let’s Encrypt 生成和下载 HTTPS 证书,支持 HTTPS 协议访问,你只需要将绑定的 IP 换成 域名 即可


npm&Node

npm 是 Node.js 預設的、以 JavaScript 編寫的軟體套件管理系統。

Node.js 是能夠在伺服器端運行 JavaScript 的開放原始碼、跨平台 JavaScript 執行環境。

官网

  • https://www.npmjs.com/

  • https://nodejs.org

包管理器方式

  • apt

  • yum

源文件方式安装

首先下载 NodeJS 的二进制文件,http://nodejs.org/download/ .在 Linux Binaries (.tar.gz) 行处根据自己系统的位数选择

因为 /home/node-v12.17.0-linux-x64/bin 这个目录是不在环境变量中的,所以只能到该目录下才能 node 的程序.如果在其他的目录下执行 node 命令的话 ,必须通过绝对路径访问才可以的

如果要在任意目录可以访问的话,需要将 node 所在的目录,添加 PATH 环境变量里面,或者通过软连接的形式将 node 和 npm 链接到系统默认的 PATH 目录下的一个 在终端执行 echo $PATH 可以获取 PATH 变量包含的内容,系统默认的 PATH 环境变量包括 /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: ,冒号为分隔符.所以我们可以将 node 和 npm 链接到 /usr/local/bin 目录下如下执行

加速

  • node&js

强制安装

模块安装和卸载

forever

forever 是一个简单的命令式 nodejs 的守护进程,能够启动,停止,重启 App 应用。forever 完全基于命令行操作,在forever进程之下,创建 node 的子进程,通过 monitor 监控 node 子进程的运行情况,一旦文件更新或进程挂掉,forever 会自动重启 node 服务器,确保应用正常运行。


Nexus

Nexus 是一种 Maven 仓库管理软件用于搭建私服,私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

官网

  • https://www.sonatype.com/nexus-repository-oss

安装

  • JDK

  • Maven

  • Nexus

    • 在官网下载 UNIX 安装包,上传至服务器,这里以 https://help.sonatype.com/repomanager2/download#Download-NexusRepositoryManager2OSS 2.14.14-01 为例

    默认登录账号/密码为: admin/admin123


Nginx

Nginx 是非同步框架的網頁伺服器,也可以用作反向代理、負載平衡器和 HTTP 缓存。

官网

  • https://nginx.org/

安装

  • yum 安装

  • Debian & Ubuntu 安装

  • 源代码编译安装

    自己下载好包 https://nginx.org/en/download.html ,传到服务器上,这里以 1.16.1 举例

    注:源代码安装你的默认目录在 /usr/local/nginx 下,配置文件在 conf/ 中,不要搞错了

虚拟主机

在 /etc/nginx/conf.d/ 目录下新建一个站点的配置文件,列如:test.com.conf

nginx -t 检测文件是否有误

如果服务器网址没有注册,那么可以在本机电脑的 /etc/hosts 添加设置: 192.168.1.112 www.test.com test.com

本地 curl 访问测试 curl www.test.com

查看报错

更多配置案例

见 Nginx.md


php-cli

交互式 shell

运行 PHP 文件

运行 web 服务器


phpMyAdmin

官网

  • https://www.phpmyadmin.net/

建议搭配上面的 nginx+php 扩展笔记

创建数据库和一个用户

下载

访问 https://www.test.com/phpMyAdmin/index.php


RabbitMQ

RabbitMQ 是流行的开源消息队列系统,是 AMQP(Advanced Message Queuing Protocol 高级消息队列协议)的标准实现,用 erlang 语言开发.RabbitMQ 据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用.

官网

  • https://www.rabbitmq.com/

安装

必须要有 Erlang 环境支持,下载 erlang 软件包,这里以 erlang-19.0.4 为例

安装完后输入 erl 测试

安装 rabbitmq,这里以 v3.6.10 为例

注意:如果是重装请记得删除 /var/lib/rabbitmq 目录和 /etc/rabbitmq 目录,否则可能服务会起不来

配置网页插件

访问: 127.0.0.1:15672,这个时候是没有账号密码的!

配置 web 端访问账号密码和权限

默认网页是不允许访问的,需要增加一个用户修改一下权限,代码如下:

开启用户远程访问

默认情况下,RabbitMQ 的默认的 guest 用户只允许本机访问, 如果想让 guest 用户能够远程访问的话,只需要将配置文件中的 loopback_users 列表置为空即可, 如下:

另外关于新添加的用户,直接就可以从远程访问的,如果想让新添加的用户只能本地访问,可以将用户名添加到上面的列表, 如只允许 admin 用户本机访问.


searx

尊重隐私,可控的元搜索引擎.

项目地址

  • https://github.com/asciimoo/searx

安装搭建

注:本次在 Debian/Ubuntu 下搭建,centos 下基本一致,请参考 官方教程

加源,安装依赖

安装 searx

测试 python 虚拟环境

一些安全性配置

配置 nginx 代理

现在访问 www.你的域名.com 查看你的搜索引擎服务把~

Tips

搜索引擎设置在 settings_et_dev.yml 文件中

建议删除或不使用的搜索接口(由于对请求速度的影响实在太大,并且经常抽风报错)

  • archive is

  • wikipedia

  • wikidata

  • faroo

  • library genesis

  • reddit

  • startpage

  • mymemory translated

搜索结果定向,不适合日常使用

  • etymonline

  • gigablast

  • duden

  • seznam

  • erowid


Tomcat

Tomcat 类似与一个 apache 的扩展型,属于 apache 软件基金会的核心项目,属于开源的轻量级 Web 应用服务器,是开发和调试 JSP 程序的首选,主要针对 Jave 语言开发的网页代码进行解析,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常做为一个 Servlet 和 JSP 容器单独运行在后端.可以这样认为,当配置正确时,Apache 为 HTML 页面服务,而 Tomcat 实际上运行 JSP 页面和 Servlet.比如 apache 可以通过 cgi 接口直接调取 Tomcat 中的程序.

官网

  • https://tomcat.apache.org

Tomcat 角色划分

  • manager-gui:允许访问 Manager APP 页面和 Server Status

  • manager-script:允许访问纯文本接口和 Server Status

  • manager-jmx:允许访问 JMX 代理接口和 Server Status

  • manager-status:仅允许访问 Server Status 页面(即 URL 路径为 /manager/status/*)

  • admin-gui: 允许访问 Host Manager,GUI 界面(即 URL 路径为 /host-manager/html)

  • admin-script:允许访问 Host Manager,文本接口,(即 URL 路径为 /host-manager/text)

Tomcat manager 接口

  • Server Status : 查看服务器状态,包括中间件及操作系统相关信息

  • Manager App : 管理服务器上部署的应用(Application),如将 WAR file 文件部署到 tomcat 中,还可以启用或停止项目

  • Host Manager : 管理物理主机和虚拟主机,可增加、删除虚拟主机,默认未安装,要访问 host manager 需要在安装页面勾选

部分文件介绍

  • context.xml:Tomcat 默认的数据源在这里配置,一般存放连接数据库的信息;

  • server.xml:Tomcat 访问端口、域名绑定和数据源在这里配置;

  • web.xml:Tomcat 项目初始化会去调用的文件;

安装

Tomcat 依赖 JDK,在安装 Tomcat 之前需要先安装 Java JDK.输入命令 java -version,如果显示 JDK 版本,证明已经安装了 JDK

JDK 安装过程 见 如下

下载 Tomcat 安装包 https://tomcat.apache.org/download-80.cgi 将安装包上传至服务器,我这里以 8.5.46 为例

如果访问 http://ip:8080/ 失败,查看防火墙开放端口

设置 tomcat 的服务器启动和关闭

以上所有工作顺利进行并且没有报错,则配置完成,你可以输入命令 service tomcat startservice tomcat stop 进行验证

修改端口号

进入 tomcat 的 conf 目录下,修改 server.xml 文件,可以修改端口,默认 8080

设置用户名和密码登录

修改 conf 目录下 tomcat-users.xml (部分版本是 tomcat-user.xml)

如果爆 403 错误,就注释掉 Tomcat/webapps/manager/META-INF/context.xml 文件中内容

自行重启服务

发布测试

tomcat 默认的发布 web 项目的目录是:webapps

将导出的 war 包直接上传到 webapps 根目录下,随着 tomcat 的启动,war 包可以自动被解析.

然后调用路径查询是否安装成功

隐藏 tomcat 版本号

需要反编译后修改 catalina.jar

使用 unzip catalina.jar 解压jar包

进入org/apache/catalina/util 编辑配置文件ServerInfo.properties

修改以下几个配置项

将修改后的信息压缩回jar包

重启Tomcat


Wordpress

WordPress 是一个开源的内容管理系统(CMS),允许用户构建动态网站和博客.

官网

  • https://wordpress.org/

安装

下载 WordPress 安装包并解压

创建 WordPress 数据库和一个用户

配置 PHP

设置 wp-config.php 文件

在标有 // ** MySQL settings - You can get this info from your web host ** // 下输入你的数据库相关信息

在标有 * Authentication Unique Keys. 的版块下输入密钥的值,保存 wp-config.php 文件,也可以不管这个

上传文件

接下来需要决定将博客放在网站的什么位置上:

  • 网站根目录下 (如:http://example.com/)

  • 网站子目录下 (如:http://example.com/blog/)

根目录

如果需要将文件上传到 web 服务器,可用 FTP 客户端将 wordpress 目录下所有内容 (无需上传目录本身) 上传至网站根目录

如果文件已经在 web 服务器中且希望通过 shell 访问来安装 wordpress,可将 wordpress 目录下所有内容 (无需转移目录本身) 转移到网站根目录

子目录

如果需要将文件上传到 web 服务器,需将 wordpress 目录重命名,之后用 FTP 客户端将重命名后的目录上传到网站根目录下某一位置

如果文件已经在 web 服务器中且希望通过shell访问来安装 wordpress,可将 wordpress 目录转移到网站根目录下某一位置,之后重命名 wordpress 目录

运行安装脚本

  • 将 WordPress 文件放在根目录下的用户请访问:http://example.com/wp-admin/install.php

  • 将 WordPress 文件放在子目录 (假设子目录名为 blog) 下的用户请访问:http://example.com/blog/wp-admin/install.php

  • 访问 http://xxx.xxx.xxx.xxx/wp-admin/setup-config.php 下面就略了,自己照着页面上显示的来


Mijisou

基于开源项目 Searx 二次开发的操作引擎

2019-11-17:不在推荐该开源项目,建议直接使用源项目 searx

项目地址

  • https://github.com/entropage/mijisou

依赖

自行安装 python3 pip redis

安装

配置

运行+caddy 反代

opensearch

修改

配置文件中改下名字 mijisou/searx/static/themes/entropage/img 中的 logo 图标自己换一下

管理

配合 Cloudflare 的 CDN

  1. Cloudflare 创建 site

  2. 域名商改 nameserver

  3. 修改 Caddy 配置

磁盘占用

服务运行一段时间后, /var/lib/redis 路径下会有一些缓存文件(貌似),直接删了就行

redis 报错

如果出现 "MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error. Resque" 可以尝试以下命令

  • https://gist.github.com/kapkaev/4619127


数据库

Relational

Oracle

  • 机器物理内存应不少于 1GB,如果是 VMWARE 虚拟机建议不少于 1200MB.

  • 对于64位的oracle11g数据库,若程序文件和数据文件安装在同一个分区,则该分区的硬盘空间要求分别为:企业版 5.65GB、标准版 5.38GB;除此以外,还应确保 /tmp 目录所在分区的空间不少于1GB,总的来说,建议为 oracle11g 准备至少 8GB 的硬盘空间

RPM 方式安装

下载需要的安装包

  • http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

  • https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

这里以 Oracle19c 为例

注意安装完成之后的配置 需要使用 root 用户.

修改字符集以及其他的配置:

复制参数文件

增加环境变量处理

使用 navicat 连接测试

默认 Oracle 数据库中的两个具有 DBA 权限的用户 Sys 和 System 的缺省密码是 manager。

注:我在 oracle-database-ee-19c-1.0-1.x86_64 环境下,使用 Navicat Premium 12.1.18 安装 instantclient-basic-windows.x64-12.1.0.2.0 可以成功连接

注 : 报错 ORA-03135

把本机防火墙关掉,顺便看下数据库服务器防火墙有没有放行

注 : 报错 ORA-28547:connection to server failed, probable Oracle Net admin error

oci.dll 版本不对.因为 Navicat 是通过 Oracle 客户端连接 Oracle 服务器的,Oracle 的客户端分为两种,一种是标准版,一种是简洁版,即 Oracle Install Client.而我们用 Navicat 时通常会在自己的安装路径下包含多个版本的 OCI,如果使用 Navicat 连接 Oracle 服务器出现 ORA-28547 错误时,多数是因为 Navicat 本地的 OCI 版本与 Oracle 服务器服务器不符造成的.

OCI 下载地址 : https://www.oracle.com/database/technologies/instant-client/downloads.html ,解压 instantclient-basic-win-x64

打开 navicat,一次选择:工具->选项->环境-->OCI 环境,选择刚才解压好的 instantclient-basic-win-x64 目录中的 oci.dll 文件即可,重启 navicat

注 : 报错 oracle library is not loaded

还是 oci.dll 版本不对,换个低版本的 Instant Client 🤣

注 : 报错 ORA-28040: No matching authentication protocol

这个还是 oci.dll 版本不对,再换个高版本的 Instant Client 😂

创建用户

oracle 内部有两个默认的用户:systemsys。用户可直接登录到 system 用户以创建其他用户,因为 system 具有创建别的用户的权限。 在安装 oracle 时,用户或系统管理员首先可以为自己建立一个用户。

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 123456 这类弱口令

创建用户的时候用户名以 c## 或者 C## 开头即可。

关闭

整个启动和关闭的过程都会记录在 alert 日志文件中。

docker 部署


Mariadb

官网

  • https://mariadb.org/

安装

  • Centos下

  • Ubuntu下

数据库初始化

配置流程
说明
操作

Enter current password for root (enter for none)

输入 root 密码

初次运行直接回车

Set root password? [Y/n]

是设置 root 密码

可以 y 或者 回车

New password

输入新密码

Re-enter new password

再次输入新密码

Remove anonymous users? [Y/n]

是否删除匿名用户

可以 y 或者回车 本次 y

Disallow root login remotely? [Y/n]

是否禁止 root 远程登录

可以 y 或者回车 本次 n

Remove test database and access to it? [Y/n]

是否删除 test 数据库

y 或者回车 本次 y

Reload privilege tables now? [Y/n]

是否重新加载权限表

y 或者回车 本次 y

配置远程访问

Mariadb 数据库授权 root 用户能够远程访问

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 toor 这类弱口令

  • Centos下

  • Ubuntu下

重置密码

连接远程数据库

mysql -u 用户名 -p密码 -h 服务器IP地址 -P 服务器端口号 -D 数据库名

  • 服务器端口标志 -P 一定要大些以区别于用户 -p,如果直接连接数据库标志 -D 也要大写;

  • 如果要直接输入密码 -p 后面不能留有空格如 -pmypassword;

  • 命令结束段没有';'分号。

例如 : mysql -u root -p123456 -h 192.168.1.1 -P 3306 -D test

导入 .sql 文件

docker 部署


MySQL

官网

  • https://www.mysql.com

安装

和 Mariadb 差不多,看 Mariadb 的就行了

  • Ubuntu

  • Centos

配置

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 123456 这类弱口令

my.cnf 配置文件内容见笔记 mysql

配置远程连接

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 123456 这类弱口令

远程访问报错 Table 'performance_schema.session_variables' doesn't exist


Postgresql

官网

  • https://www.postgresql.org

安装

PostgreSQL 安装完成后,会建立一下 ‘postgres’ 用户,用于执行 PostgreSQL,数据库中也会建立一个 'postgres' 用户,默认密码为自动生成,需要在系统中改一下.

修改用户密码

开启远程访问

service postgresql restart 防火墙记得放行


Document

MongoDB

官网

  • https://www.mongodb.com/

安装

配置远程访问

创建管理员用户

启用权限管理


Key-value

Redis

官网

  • https://redis.io/

安装

  • 包管理器方式

    在 CentOS 和 Red Hat 系统中,首先添加 EPEL 仓库,然后更新 yum 源:

    在 debian 中

  • 源代码编译方式安装

    在官网下载 tar.gz 的安装包,或者通过 wget 的方式下载

使用 redis-cli 进入 Redis 命令行模式操作

开启远程访问

为了可以使 Redis 能被远程连接,需要修改配置文件,路径为 /etc/redis.conf

连接测试

压测

Redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能.

使用教程

  • reids


Memcached

官网

  • https://memcached.org/

安装

  • 软件包安装

  • 源代码编译方式安装

    在官网下载 tar.gz 的安装包,或者通过 wget 的方式下载

运行


图形

Neo4j

官网

  • https://neo4j.com

安装

依赖 jdk,安装过程见 JDK

下载 neo4j,这里以 2.3.9 为例

访问 127.0.0.1:7474,初始账号密码 neo4j,进去后会要求你修改密码


文件服务

filebrowser

一个在线网盘服务,只能在线看图片,在线看视频是不支持的 ^w^

项目地址

  • https://github.com/filebrowser/filebrowser

安装

使用

默认账号密码 admin


NFS

服务端

安装

修改配置文件

启服务

客户端

安装,创建用户

验证共享是否成功

挂载共享目录

验证

服务器

客户端

更多配置案例

见 nfs.md


Samba

官网

  • https://www.samba.org

服务端

安装

修改配置文件

用户配置

创建共享目录,设置所有者和所属组

关闭 selinux (需要重启)

客户端

更多配置案例

见 Samba.md


sharry

官网

  • https://github.com/eikek/sharry

安装

访问 http://localhost:9090/


Vsftp

官网

  • https://security.appspot.com/vsftpd.html

匿名访问

参数
作用

anonymous_enable=YES

允许匿名访问模式

anon_umask=022

匿名用户上传文件的umask值

anon_upload_enable=YES

允许匿名用户上传文件

anon_mkdir_write_enable=YES

允许匿名用户创建目录

anon_other_write_enable=YES

允许匿名用户修改目录名称或删除目录

现在就可以在客户端执行 ftp 命令连接到远程的 FTP 服务器了. 在 vsftpd 服务程序的匿名开放认证模式下,其账户统一为 anonymous,密码为空.而且在连接到 FTP 服务器后,默认访问的是 /var/ftp 目录. 我们可以切换到该目录下的 pub 目录中,然后尝试创建一个新的目录文件,以检验是否拥有写入权限:


本地用户

参数
作用

anonymous_enable=NO

禁止匿名访问模式

local_enable=YES

允许本地用户模式

write_enable=YES

设置可写权限

local_umask=022

本地用户模式创建文件的umask值

userlist_deny=YES

启用"禁止用户名单",名单文件为 ftpusers 和 user_list

userlist_enable=YES

开启用户作用名单文件功能

按理来讲,现在已经完全可以本地用户的身份登录 FTP 服务器了.但是在使用 root 管理员登录后,系统提示如下的错误信息:

可见,在我们输入 root 管理员的密码之前,就已经被系统拒绝访问了.这是因为 vsftpd 服务程序所在的目录中默认存放着两个名为"用户名单"的文件 (ftpusers 和 user_list) .只要里面写有某位用户的名字,就不再允许这位用户登录到 FTP 服务器上.

如果你确认在生产环境中使用 root 管理员不会对系统安全产生影响,只需按照上面的提示删除掉 root 用户名即可.我们也可以选择 ftpusers 和 user_list 文件中没有的一个普通用户尝试登录 FTP 服务器 在采用本地用户模式登录FTP服务器后,默认访问的是该用户的家目录,也就是说,访问的是 /home/username 目录.而且该目录的默认所有者、所属组都是该用户自己,因此不存在写入权限不足的情况.


虚拟用户

安装

认证

创建虚拟用户文件,把这些用户名和密码存放在一个文件中.该文件内容格式是:用户名占用一行,密码占一行.

使用 db_load 命令生成 db 口令 login 数据库文件

通过修改指定的配置文件,调整对该程序的认证方式

配置文件

参数
作用

anonymous_enable=NO

禁止匿名开放模式

local_enable=YES

允许本地用户模式

guest_enable=YES

开启虚拟用户模式

guest_username=virtual

指定虚拟用户账户

pam_service_name=vsftpd.vu

指定PAM文件

allow_writeable_chroot=YES

允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求

用户配置权限文件 所有用户主目录为 /home/ftp 宿主为 virtual 用户;

编辑用户权限配置文件

启服务

Source & Reference

更多配置案例

见 Vsftp.md


编程语言

C


Go

官网

  • https://golang.org/

安装

访问 https://golang.org/dl/ 下载最新版本包,这里以 go1.13.linux-amd64.tar.gz 为例

测试安装


JDK

oracle jdk

  • rpm 包方式安装

    下载 https://www.oracle.com/technetwork/java/javase/downloads/

  • 使用 ppa/源方式安装 oracle 官方版本 jdk

  • 直接使用编译完成的

    自行下载 oracle jdk

    这里以 jdk-8u212-linux-x64.tar.gz 举例

Openjdk

  • Red Hat系

  • Debian 系

测试


Perl

官网

  • https://www.perl.org/

安装

安装模块


PHP

安装

composer

Composer 是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。

安装

使用


Python3

官网

  • https://www.python.org/

yum 安装

源代码编译方式安装

安装依赖环境

下载Python3

安装python3

添加到环境变量

检查 Python3 及 pip3 是否正常可用

pip

debian 系可以直接用 apt 装

加速

  • pip

pip 指定版本安装

检查一遍 pip 和 pip3 分别指向的 Python

在 linux 安装了多版本 python 时(例如 python2.6 和 2.7),pip 安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置

jupyterlab

安装运行

管理


Ruby

官网

  • https://www.ruby-lang.org

安装

下载 ruby 安装包,并进行编译安装

将 ruby 添加到环境变量,ruby 安装在/usr/local/bin/目录下,因此编辑 ~/.bash_profile文件,添加一下内容:


Rust

官网

  • https://www.rust-lang.org

安装

测试安装

使用 Cargo 构建程序


系统监管

aaPanel/BaoTa

官网

  • https://www.bt.cn/

  • https://github.com/aaPanel/BaoTa

安装

  • Centos/Fedora

  • Ubuntu/Debian/Deepin

使用

  • web: 安装完后会随机生成8位的管理路径,账号和密码,访问即可

  • shell: 使用 bt 命令

卸载

国际版本

  • https://www.aapanel.com/

  • Centos/Fedora

  • Ubuntu/Deepin

  • Debian


Jenkins

官网

  • https://jenkins.io/

注,Jenkins 需要 jdk 环境,请先行安装

rpm 包方式安装

添加 Jenkins 源:

使用 yum 命令安装 Jenkins:

使用 ppa/源方式安装

安装后默认服务是启动的,默认是 8080 端口,在浏览器输入 : http://127.0.0.1:8080/即可打开主页

查看密码


JumpServer

官网

  • http://www.jumpserver.org/

安装

以下部分内容来自 [官方文档] 在此只记录重点

注:鉴于国内环境,下面步骤运行中还是会出现 docker pull 镜像超时的问题,你懂的,不要问我怎么解决


Loganalyzer

日志收集系统

安装

这里以 LAMP 环境为例

注意 : 此处只是为了方便演示,生产环境下请不要使用类似 Syslog 这类弱口令

注:同样,这里数据库账号链接的密码自己也记得改一下

然后访问 127.0.0.1 即可看到初始化安装界面,在 step3 记得选择 Enable User Database

  • Database Host:localhost

  • Database Port:3306

  • Database Name:Syslog

  • Table prefix:logcon_

  • Database User:Syslog

  • Database Password:Syslog 注: 密码自己记得改


Supervisor

官网

  • http://supervisord.org/

安装

因为 Supervisor 是 Python 开发的,安装前先检查一下系统否安装了 Python2.4 以上版本.

安装完成后,我们使用 echo_supervisord_conf 命令创建一个 Supervisor 配置文件

配置

接着在 /etc/supervisord.conf 文件最下方加入目标程序的启动项目

注意修改 user = tomcat

接着直接运行 Supervisor 即可让目标程序保持后台运行,运行服务时,需要指定 supervisor 配置文件

Source & Reference


Webmin

官网

  • http://www.webmin.com/index.html

安装

在官网下载 RPM 包,上传至服务器,这里以 1.930-1 为例

安装完直接启动,访问 https://127.0.0.1:10000 注意,带 HTTPS

默认账号 root,密码与服务器一致

修改密码


Zabbix

zabbix 是一款服务器监控软件,其由 server、agent、web 等模块组成,其中 web 模块由 PHP 编写,用来显示数据库中的结果.

官网

  • https://www.zabbix.com/

安装依赖

设置 mysql

原则上 innodb_buffer_pool_size 需要设置为主机内存的 80%,如果主机内存不是 8GB,以上参数可依据相应比例进行调整,例如主机内存为 16GB,则 innodb_buffer_pool_size 建议设置为 12GB,innodb_log_buffer_size 建议设置为 32M,innodb_log_file_size 建议设置为 128M,以此类推.请注意 innodb_buffer_pool_size 的值必须是整数,例如主机内存是4G,那么 innodb_buffer_pool_size 可以设置为 3G,而不能设置为 3.2G

安装 zabbix

  • 配置 zabbix 参数

    如果需要监控 VMware 虚拟机,则还需要设置以下选项参数:

配置 Apache 中的 PHP 参数

配置 PHP 参数

重启&起服务

访问 http://ip地址/zabbix/setup.php

Source & Reference


容器&虚拟化

Docker

更多 Docker 相关知识参考 Docker笔记

官网

  • https://www.docker.com

安装

  • 官方一条命令版(不兼容 kali)

  • CentOS7 下安装

  • CentOS8 下安装

  • debian 下安装

使用

  • 启动,暂停以及启用 Docker

  • 拉取镜像

  • 常用命令

容器保活

加速

  • Docker 镜像加速

更多内容

  • Docker

Docker-Compose

Docker-Compose 是一个部署多个容器的简单但是非常必要的工具.

项目地址

  • https://github.com/docker/compose

安装

下载二进制包 https://github.com/docker/compose/releases

然后将文件上传到 /usr/local/bin/ 文件夹下,然后将其重命名为 docker-compose,修改此文件的权限,增加可执行权限

或直接采用 pip 安装

常见报错

  • ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule

    原因是关闭防火墙之后 docker 需要重启,执行以下命令重启 docker 即可:

  • ERROR: Service 'xxxxxx' failed to build : Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on xx.xx.xx.xx: server misbehaving

    dns 服务器的错误,把 dns 服务器改下就行

  • [3927] Error loading Python lib '/tmp/_MEIuQps8Y/libpython3.9.so.1.0': dlopen: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /tmp/_MEIuQps8Y/libpython3.9.so.1.0)

    python 版本的问题, 换 python3.7 以上或用 pip 安装即可

更多内容

  • Docker-Compose

Docker-Portainer

Portainer 是 Docker 一款可视化管理用具,部署简单,推荐。

官网

  • https://www.portainer.io/

部署

访问 ip:9000 进入到设置密码界面.

ctop

用于 docker 版的 top

仓库地址

  • https://github.com/bcicen/ctop


Kubernetes

kubectl

显示和查找资源

与运行中的 Pod 交互

从容器中复制文件和目录

kubectl cp 要求容器镜像中存在 “tar” 二进制文件。如果 “tar” 不存在,kubectl cp 将失败

与节点和集群进行交互


QEMU

QEMU 是一款开源的模拟器及虚拟机监管器。QEMU 主要提供两种功能给用户使用。一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。二是作为虚拟机监管器,模拟全系统,利用其他VMM(Xen, KVM, etc)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。

官网

  • https://www.qemu.org/

项目地址

  • https://github.com/qemu/QEMU

安装

  • Centos下

  • Ubuntu下


分布式

ZooKeeper

这个Logo是什么鬼啊🤣🤣🤣,笑死我了

官网

  • https://zookeeper.apache.org/

安装

依赖 jdk,安装过程见 JDK

zookeeper 支持两种运行模式:独立模式(standalone)和复制模式(replicated).

真正用于生产环境的 Zookeeper 肯定都是使用复制模式的,这样做可以避免单点问题.想要使用复制模式,但由于没有富余的机器能够使用,所以可以在单台机器上通过配置来使用复制模式,从而模拟真实的集群环境.

由于 Zookeeper 集群是通过多数选举的方式产生 leader 的,因此,集群需要奇数个 Zookeeper 实例组成,也就是说至少需要3台(1台不能算"群").

这里配置的为 独立模式

创建数据存储目录与日志目录

修改数据存储和日志目录


安全服务

ClamAV

一个开源防病毒引擎,用于检测木马,病毒,恶意软件和其他恶意威胁.

官网

  • https://www.clamav.net

编译安装

推荐编译安装,时间长点,起码步骤不繁琐

安装

编辑配置文件

升级病毒库

使用

yum 安装

以下部分内容来自 [Centos7安装和使用ClamAV杀毒软件]

关闭自动更新,freshclam 命令通过文件 /etc/cron.d/clamav-update 来自动运行

但默认情况下是禁止了自动更新功能,需要移除文件 /etc/sysconfig/freshclam 最后一行的配置才能启用

定义服务器类型 (本地或者 TCP) ,在这里定义为使用本地 socket,将文件 /etc/clam.d/scan.conf 中的这一行前面的注释符号去掉:

下载病毒库 https://www.clamav.net/downloads 将 main.cvd\daily.cvd\bytecode.cvd 三个文件下载后上传到 /var/lib/clamav 目录下

更新病毒库

查看病毒库版本

升级病毒库

查杀病毒


Fail2Ban

禁止导致多次身份验证错误的主机

项目地址

  • https://github.com/fail2ban/fail2ban

以下部分内容来自 [如何使用 fail2ban 防御 SSH 服务器的暴力破解攻击]

安装

  • RHEL

  • Debian

编辑配置文件

根据上述配置,fail2ban 会自动禁止在最近 10 分钟内有超过 3 次访问尝试失败的任意 IP 地址.一旦被禁,这个 IP 地址将会在 24 小时内一直被禁止访问 SSH 服务.这个事件也会通过 sendemail 发送邮件通知.

测试

为了测试 fail2ban 是否能正常工作,尝试通过使用错误的密码来用 SSH 连接到服务器模拟一个暴力破解攻击.与此同时,监控 /var/log/fail2ban.log ,该文件记录在 fail2ban 中发生的任何敏感事件.

根据上述的日志文件,Fail2ban 通过检测 IP 地址的多次失败登录尝试,禁止了一个 IP 地址 192.168.72.130

解禁 IP

由于 fail2ban 的"ssh-iptables"监狱使用 iptables 来阻塞问题 IP 地址,你可以通过以下方式来检测当前 iptables 来验证禁止规则.

当然你可以使用上述的 iptables 命令手动地检验和管理 fail2ban 的 IP 阻塞列表,但实际上有一个适当的方法就是使用 fail2ban-client 命令行工具.这个命令不仅允许你对"ssh-iptables"监狱进行管理,同时也是一个标准的命令行接口,可以管理其他类型的 fail2ban 监狱.

注意,如果你停止了 Fail2ban 服务,那么所有的 IP 地址都会被解锁.当你重启 Fail2ban,它会从 /etc/log/secure(或 /var/log/auth.log)中找到异常的 IP 地址列表,如果这些异常地址的发生时间仍然在禁止时间内,那么 Fail2ban 会重新将这些 IP 地址禁止.


OpenLDAP

OpenLDAP 是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其 OpenLDAP 许可证下发行,并已经被包含在众多流行的 Linux 发行版中。

以下部分内容来自 [Centos7 搭建openldap完整详细教程] 仅作排版处理和部分内容处理

安装

修改配置

openldap2.4.23 版本开始,所有配置都保存在 /etc/openldap/slapd.d 目录下的 cn=config 文件夹内,不再使用 slapd.conf 作为配置文件。配置文件的后缀为 ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用 ldapmodify 命令进行修改 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

安装 openldap 后,会有三个命令用于修改配置文件,分别为 ldapadd, ldapmodify, ldapdelete,顾名思义就是添加,修改和删除。而需要修改或增加配置时,则需要先写一个 ldif 后缀的配置文件,然后通过命令将写的配置更新到 slapd.d 目录下的配置文件中去

生成管理员密码

新增修改密码文件,ldif 为后缀,文件名随意,不要在 /etc/openldap/slapd.d/ 目录下创建类似文件,生成的文件为需要通过命令去动态修改 ldap 现有配置,如下

  • 第一行执行配置文件,这里就表示指定为 cn=config/olcDatabase={0}config 文件。你到 /etc/openldap/slapd.d/ 目录下就能找到此文件

  • 第二行 changetype 指定类型为修改

  • 第三行 add 表示添加 olcRootPW 配置项

  • 第四行指定 olcRootPW 配置项的值

在执行下面的命令前,你可以先查看原本的 olcDatabase={0}config 文件,里面是没有 olcRootPW 这个项的,执行命令后,你再看就会新增了 olcRootPW 项,而且内容是我们文件中指定的值加密后的字符串

执行命令,修改 ldap 配置,通过 -f 执行文件

执行修改命令后,有类似如下输出则为正常

查看 olcDatabase={0}config 内容,应该会新增了一个 olcRootPW 项

上面就是一个完整的修改配置的过程,切记不能直接修改 /etc/openldap/slapd.d/ 目录下的配置。

我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema 控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入,

依次执行下面的命令,导入基础的一些配置,我这里将所有的都导入一下,其中 core.ldif 是默认已经加载了的,不用导入

修改域名,新增 changedomain.ldif, 这里我自定义的域名为 fox.com,管理员用户账号为 admin。

如果要修改,则修改文件中相应的 dc=fox,dc=com 为自己的域名

执行命令,修改配置

然后,启用 memberof 功能,新增 add-memberof.ldif, 开启 memberof 支持并新增用户支持 memberof 配置

新增 refint1.ldif 文件

新增 refint2.ldif 文件

依次执行下面命令,加载配置,顺序不能错

到此,配置修改完了,在上述基础上,我们来创建一个叫做 fox company 的组织,并在其下创建一个 admin 的组织角色(该组织角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元,新增配置文件

执行命令,添加配置, 这里要注意修改域名为自己配置的域名,然后需要输入上面我们生成的密码

通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:其中基准 dc=fox,dc=com 是该树的根节点,其下有一个管理域 cn=admin,dc=fox,dc=com 和两个组织单元 ou=People,dc=fox,dc=com 及 ou=Group,dc=fox,dc=com。

测试连接

这里先关一下防火墙

连接工具使用 LdapAdmin

PhpLdapAdmin

以下部分内容来自 [LDAP安装和基本管理手记] 仅作排版处理和部分内容处理

访问 http://ip/ldapadmin,点击登录。CN 填写域信息cn=admin,dc=fox,dc=com,密码填写自己设置的密码。


Snort

Snort 搭建与使用内容访问 安防设施搭建使用 Snort 部分


Suricata

Suricata 搭建与使用内容访问 安防设施搭建使用 Suricata 部分


tripwire

描述

当服务器遭到黑客攻击时,在多数情况下,黑客可能对系统文件等等一些重要的文件进行修改。对此,我们用 Tripwire 建立数据完整性监测系统。虽然 它不能抵御黑客攻击以及黑客对一些重要文件的修改,但是可以监测文件是否被修改过以及哪些文件被修改过,从而在被攻击后有的放矢的策划出解决办法。

Tripwire 的原理是 Tripwire 被安装、配置后,将当前的系统数据状态建立成数据库,随着文件的添加、删除和修改等等变化,通过系统数据现 状与不断更新的数据库进行比较,来判定哪些文件被添加、删除和修改过。正因为初始的数据库是在 Tripwire 本体被安装、配置后建立的原因,我们务必应 该在服务器开放前,或者说操作系统刚被安装后用 Tripwire 构建数据完整性监测系统。

Tripwire 可以对要求校验的系统文件进行类似 md5 的运行,而生成一个唯一的标识,即 "快照"snapshot。当这些系统文件的大小、inode 号、权限、时间等任意属性被修改后,再次运行 Tripwire,其会进行前后属性的对比,并生成相关的详细报告。

项目地址

  • http://sourceforge.net/projects/tripwire/files/

安装

文件说明

配置文件:定义数据库、策略文件和 Tripwire 可执行文件的位置:

策略:定义检测的对象及违规时采取的行为:

数据库:用于存放生成的快照:

Tripwire 为了自身的安全,防止自身被篡改,也会对自身进行加密和签名处理。其中,包括两个密钥:

  • site 密钥:用于保护策略文件和配置文件,只要使用相同的策略和配置的机器,都可以使用相同的 site 密钥:

  • local 密钥:用户保护数据库和分析报告,这肯定不会重复的:

设置 tripwire

编辑 twcfg.txt 文件

建立加密格式

初始化数据库

更新数据库

当你更新了 twpol.txt 后需用此命令更新数据库

检查文件异动

安装完 tripwire 后你可以定期检查文件是否存在异动。加上 interactive 在当前显示结果。

查看报告

所有 tripwire 的报告以 .twr 后缀保存在 lib/tripwire 目录下,需要使用 twprint 命令来转化成文本格式。

软件包方式安装

还有一种方法是软件包安装

注 : 软件包安装的配置文件在 /etc/tripwire

使用软件包安装需要手动生成密钥文件

该命令将生成两个密钥文件“site-key”和“local-key”,

使用下面的命令从 tripwire 生成日志错误。

所有不存在系统上的目录和文件都列在文件'mo-directory.txt'中

使用以下 bash 脚本编辑 tripwire 配置'twpol.txt'

初始化 tripwire 数据库

其余使用和编译安装无异,更多详情请参考 https://www.howtoing.com/monitoring-and-detecting-modified-files-using-tripwire-on-centos-7


设施配置

f8x

描述

大多数场景下,在不同的云购买一些 vps 服务器用于部署红 / 蓝队设施,不能做到开箱即用,使用 f8x 可以快速部署所需要的各类服务。同时兼顾到本地 VM 虚拟机的需求,可以选择走 socket 代理进行安装部署,Proxychains-ng 也会自动安装,只需做好 Proxychains-ng 配置即可。

项目地址

  • https://github.com/ffffffff0x/f8x

安装

安装基础工具

安装渗透环境

安装python3.9

安装 oraclejdk11

更多内容

  • https://github.com/ffffffff0x/f8x/blob/main/README.zh-cn.md

terraform

描述

Terraform 是一个 IT 基础架构自动化编排工具。具体的说就是可以用代码来管理维护 IT 资源,比如针对 AWS,我们可以用它创建,修改,删除 S3 Bucket, Lambda, EC2 实例,Kinesis, VPC 等各种资源。并且在真正运行之前可以看到执行计划(即干运行-dryrun)。由于状态保存到文件中,因此能够离线方式查看资源情况。

项目地址

  • https://github.com/hashicorp/terraform

安装

更多内容

  • terraform


pulumi

项目地址

  • https://github.com/pulumi/pulumi

安装


aliyun-cli

下载


各种依赖和报错

libboost-program-options1.58.0

libsodium18

ERROR: pkg-config binary 'pkg-config' not found

make: *** /lib/modules/3.10.0-1062.18.1.el7.x86_64/build: No such file or directory. Stop.

没安装内核安装包

error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

error while loading shared libraries: libdrm.so.2: cannot open shared object file: No such file or directory

linux-/usr/lib64/libm.so.6: version `GLIBC_2.29' not found

安装glibc-2.29


LuaJIT

描述

LuaJIT 是采用 C 语言写的 Lua 代码的解释器,LuaJIT 试图保留 Lua 的精髓--轻量级,高效和可扩展。

官网地址

  • https://luajit.org/

安装