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/vimrc 或 vim /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 部分
排错
先排查是不是客户端(自己)的问题,再排查是不是服务端(对面)的问题,最后在排查是不是传输中(中间)的问题.
ping 试试,如果网络层可通,那么大概率是应用层的问题,检查 SSH 配置,是否有白名单限制,或者你他娘的意大利防火墙或 selinux 就没放行
假设这么一种情况,应用层配置正常,主机一切正常,但路由器/交换机在 ACL 上禁用了 SSH 的流量,这样就是传输层的问题了.内网 IPS/IDS 阻断同理.
麻烦你看下账号密码是不是写错了谢谢.或者是不是限制只使用密钥登录的.
注意下是不是配置文件或服务看错了是 sshd 不是 ssh
motd
vim /etc/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 start 和 service 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
Cloudflare 创建 site
域名商改 nameserver
修改 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 内部有两个默认的用户:system 和 sys。用户可直接登录到 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
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/
安装