# 配置防火墙
## 1. 备份当前防火墙规则
```shell
iptables-save > /etc/sysconfig/iptables
```
> /tmp/iptalbes.rules —— 路径随意
## 2. 获取指定端口客户端ip
```shell
ss -nat | grep -e :1379 | awk '{print $NF}' | grep -Eo "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | awk '!a[$0]++' > /tmp/dbwhite.list
```
> :1379 —— 数据库服务段某
>
> /tmp/dbwhite.list —— 客户端ip列表,随意
## 3. 新建规则链表
```shell
iptables -t filter -N DB_WHITELIST
```
> 链表名,随意
## 4. 定义规则链表默认行为
```shell
iptables -t filter -I DB_WHITELIST -j DROP
```
> -j —— 行为。DROP:表示非白名单内ip数据包,默认丢弃。
## 5. 将白名单ip插入到链表
```shell
for ip in $(sort -u /tmp/dbwhite.list)
do
iptables -t filter -I DB_WHITELIST -s $ip -j RETURN
done
```
## 6. 定义目标端口行为
```shell
iptables -t filter -I INPUT -p tcp -m multiport --dports 1379 -j DB_WHITELIST
```
# 回退规则
```shell
while iptables -t filter --line-number -n -L INPUT |grep DB_WHITELIST
do
iptables -t filter --line-number -n -L INPUT |grep DB_WHITELIST |head -n 1 |awk '{print $1}' |xargs -r -n1 iptables -t filter -D INPUT
done
iptables -t filter -F DB_WHITELIST
iptables -t filter -X DB_WHITELIST
```
# docker
```shell
iptables -t filter -I DOCKER -p tcp -s 112.44.102.86 -d 172.17.0.2 --dport 6379 -j ACCEPT
```
> ```
> -I 指定规则Chain名称
> -s 来源地址
> -d 目标/容器内地址
> --dport 目标端口号,必须结合 -p tcp使用
> ```