# geniptables
geniptables工具用来为来源IP和端口生成iptables规则
## geniptables工具使用方法
命令格式;
```
geniptables [OPTIONS] [HOST]
```
参数说明
- -c, --config: 需要生成iptables的来源IP和访问的目标端口配置
- -t, --type: app:生成应用节点的iptables规则,db:生成数据库节点iptables规则。
- -a, --all: 生成完整的iptables命令,一般在第一次初始化节点iptables时需要
- --log: 记录符合iptables规则的网络包访问
- --ssh-port: SSH端口号
- -o, --output: iptables规则输出的脚本文件名
- -h, --help: 打印帮助信息
## 使用示例
1. 进入到iam源码根目录
2. 配置accesss.yaml
```yaml
# 允许登录SSH节点的来源IP,可以是固定IP(例如10.0.4.2),也可以是个网段,0.0.0.0/0代表不限制来源IP
ssh-source: 10.0.4.0/24
# IAM应用节点列表(来源IP)
hosts:
- 10.0.4.20
- 10.0.4.21
# 来源IP可以访问的应用端口列表(iam-apiserver, iam-authz-server, iam-pump对外暴露的的端口)
ports:
- 8080
- 8443
- 9090
- 9443
- 7070
- 5050
# 来源IP可以访问的数据库端口列表(Redis, MariaDB, MongoDB)
dbports:
- 3306
- 6379
- 27017
```
3. 第一次初始化应用节点的iptables规则
```bash
$ go run tools/geniptables/main.go -c access.yaml -t app -a -o firewall.sh
```
生成的firewall.sh文件内容如下:
```bash
#!/usr/bin/env bash
#############################
# SETUP
#############################
# Clear all rules
iptables -F
# Don't forward traffic
iptables -P FORWARD DROP
# Allow outgoing traffic
iptables -P OUTPUT ACCEPT
# Allow established traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow localhost traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow keepalived vrrp protocol
iptables -A INPUT -p vrrp -j ACCEPT
#############################
# MANAGEMENT RULES
#############################
# Allow SSH (alternate port)
iptables -A INPUT -p tcp -s 10.0.4.0/24 --dport 22 -j LOG --log-level 7 --log-prefix "Accept 22 alt-ssh"
iptables -A INPUT -p tcp -s 10.0.4.0/24 --dport 22 -j ACCEPT
#############################
# ACCESS RULES
#############################
# Allow nginx server access
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
# Allow iam services
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 8443 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 9443 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 7070 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 5050 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 8443 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 9443 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 7070 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 5050 -j ACCEPT
# Allow two types of ICMP
iptables -A INPUT -p icmp --icmp-type 8/0 -j LOG --log-level 7 --log-prefix "Accept Ping"
iptables -A INPUT -p icmp --icmp-type 8/0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8/0 -j LOG --log-level 7 --log-prefix "Accept Time Exceeded"
iptables -A INPUT -p icmp --icmp-type 11/0 -j ACCEPT
#############################
# DEFAULT DENY
#############################
iptables -A INPUT -j LOG --log-level 7 --log-prefix "Default Deny"
iptables -A INPUT -j DROP
```
4. 第一次初始化数据库节点的iptables规则
```bash
$ go run tools/geniptables/main.go -c access.yaml -t db -a -o firewall.sh
```
生成的firewall.sh文件内容如下:
```bash
#!/usr/bin/env bash
#############################
# SETUP
#############################
# Clear all rules
iptables -F
# Don't forward traffic
iptables -P FORWARD DROP
# Allow outgoing traffic
iptables -P OUTPUT ACCEPT
# Allow established traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow localhost traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow keepalived vrrp protocol
iptables -A INPUT -p vrrp -j ACCEPT
#############################
# MANAGEMENT RULES
#############################
# Allow SSH (alternate port)
iptables -A INPUT -p tcp -s 10.0.4.0/24 --dport 22 -j LOG --log-level 7 --log-prefix "Accept 22 alt-ssh"
iptables -A INPUT -p tcp -s 10.0.4.0/24 --dport 22 -j ACCEPT
#############################
# ACCESS RULES
#############################
# Allow nginx server access
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
# Allow iam services
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 6379 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.20 --dport 27017 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 6379 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.21 --dport 27017 -j ACCEPT
# Allow two types of ICMP
iptables -A INPUT -p icmp --icmp-type 8/0 -j LOG --log-level 7 --log-prefix "Accept Ping"
iptables -A INPUT -p icmp --icmp-type 8/0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8/0 -j LOG --log-level 7 --log-prefix "Accept Time Exceeded"
iptables -A INPUT -p icmp --icmp-type 11/0 -j ACCEPT
#############################
# DEFAULT DENY
#############################
iptables -A INPUT -j LOG --log-level 7 --log-prefix "Default Deny"
iptables -A INPUT -j DROP
```
5. 新增应用节点
编辑access.yaml在hosts列表下新增10.0.4.22节点IP。编辑后内容如下:
```yaml
# 允许登录SSH节点的来源IP,可以是固定IP(例如10.0.4.2),也可以是个网段,0.0.0.0/0代表不限制来源IP
ssh-source: 10.0.4.0/24
# IAM应用节点列表(来源IP)
hosts:
- 10.0.4.20
- 10.0.4.21
- 10.0.4.22
# 来源IP可以访问的应用端口列表(iam-apiserver, iam-authz-server, iam-pump对外暴露的的端口)
ports:
- 8080
- 8443
- 9090
- 9443
- 7070
- 5050
# 来源IP可以访问的数据库端口列表(Redis, MariaDB, MongoDB)
dbports:
- 3306
- 6379
- 27017
```
新增应用节点时,已有应用节点和新增的应用节点都需要更新iptables规则:
- 新增应用节点:参考步骤 3
- 已有应用节点:参考步骤 6和步骤 7
6. 应用节点新增iptables规则
```bash
$ go run tools/geniptables/main.go -c access.yaml -t app 10.0.4.22
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 8443 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 9443 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 7070 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 5050 -j ACCEPT
```
7. 数据库节点新增iptables规则
```bash
$ go run tools/geniptables/main.go -c access.yaml -t db 10.0.4.22
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 6379 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.4.22 --dport 27017 -j ACCEPT
```
## 其他iptables命令
### 1. 删除规则:
```bash
$ iptables -L INPUT --line-numbers
$ iptables -D INPUT <line-number>
```
没有合适的资源?快使用搜索试试~ 我知道了~
企业级的 Go 语言实战项目:认证和授权系统(带配套课程).zip
共675个文件
go:339个
md:131个
yaml:52个
需积分: 5 0 下载量 64 浏览量
2024-04-01
10:38:31
上传
评论
收藏 2.43MB ZIP 举报
温馨提示
企业级的 Go 语言实战项目:认证和授权系统(带配套课程)
资源推荐
资源详情
资源评论
收起资源包目录
企业级的 Go 语言实战项目:认证和授权系统(带配套课程).zip (675个子文件)
iam-apiserver.1 8KB
iam-authz-server.1 7KB
iam-watcher.1 5KB
iamctl-completion.1 5KB
iam-pump.1 4KB
iamctl-jwt-sign.1 4KB
iamctl-new.1 4KB
iamctl-color.1 4KB
iamctl-secret-create.1 3KB
iamctl-policy-update.1 3KB
iamctl-policy-create.1 3KB
iamctl-user-update.1 3KB
iamctl-user-list.1 3KB
iamctl-policy-list.1 3KB
iamctl-user-create.1 3KB
iamctl-version.1 3KB
iamctl.1 3KB
iamctl-user.1 3KB
iamctl-secret-list.1 3KB
iamctl-secret-update.1 3KB
iamctl-policy.1 3KB
iamctl-secret.1 3KB
iamctl-jwt-verify.1 3KB
iamctl-user-delete.1 3KB
iamctl-jwt-show.1 3KB
iamctl-validate.1 3KB
iamctl-options.1 3KB
iamctl-policy-delete.1 3KB
iamctl-policy-get.1 3KB
iamctl-jwt.1 3KB
iamctl-secret-get.1 3KB
iamctl-secret-delete.1 3KB
iamctl-user-get.1 3KB
iamctl-info.1 3KB
iamctl-set.1 3KB
coverage.awk 313B
commit-msg 571B
keepalived.conf 3KB
keepalived.conf 3KB
nginx.conf 1KB
nginx.conf 1KB
iam-authz-server.conf 528B
iam-authz-server.conf 528B
iam-apiserver.conf 524B
iam-apiserver.conf 524B
Dockerfile 532B
Dockerfile 523B
Dockerfile 517B
Dockerfile 508B
Dockerfile 470B
.generated_docs 3KB
.gitignore 5KB
.gitignore 252B
.gitlint 184B
redis_cluster.go 31KB
new.go 19KB
log.go 16KB
mock_service.go 15KB
mock_store.go 15KB
mongo.go 14KB
codegen.go 13KB
color.go 12KB
helpers.go 11KB
user_test.go 10KB
etcd.go 9KB
shutdown.go 9KB
redis.go 8KB
manager_test.go 8KB
policy_test.go 8KB
app.go 8KB
elasticsearch.go 7KB
completion.go 7KB
config_flags.go 7KB
secret_test.go 7KB
templater.go 7KB
genericapiserver.go 7KB
server.go 6KB
secure_serving.go 6KB
kafka.go 6KB
sql_test.go 6KB
logger.go 6KB
auth.go 6KB
mock_authorization.go 6KB
server.go 6KB
markdown.go 6KB
murmur_test.go 6KB
user.go 6KB
options.go 5KB
set_db.go 5KB
main.go 5KB
gen_iam_man.go 5KB
analytics.go 5KB
cache_test.go 5KB
storage.go 5KB
logger.go 5KB
server.go 5KB
jwt_sign.go 5KB
shutdown_test.go 5KB
policy.go 4KB
etcd_options.go 4KB
共 675 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
Lei宝啊
- 粉丝: 2078
- 资源: 1330
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机信息一键获取工具
- CaculateYoloData.py
- python实现基于长短期记忆网络LSTM模型预测茅台股票价格趋势(数据集+代码).rar
- Python3实现基于ARIMA模型来预测茅台股票价格趋势(数据集+代码).rar
- 黑色简洁的PHP短网址短链接生成源码.rar
- dbeaver-ce-24.0.5-x86-64-setup.zip
- hfm (1).cpp
- 数据分析案例-数据科学相关岗位薪资可视化分析(数据集+代码).rar
- PSO-SDAE基于粒子群优化堆叠去噪自编码器的数据回归预测多变量回归预测(Matlab完整源码和数据)
- 基于卷积神经网络MobileNet 的情感识别源码.7z
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功