Gearman很好用,但是没有权限管理,如果gearman处于公网上,就比较危险
可以利用iptables为其增加访问规则,限制只有本机或某些特定服务器IP才能访问gearman
- 增加IP规则,-I是插入,不指定位置默认是插入在最顶端
iptables -I INPUT -s 172.16.18.0/24 -p tcp --dport 4930 -j ACCEPT
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 4930 -j ACCEPT
iptables -I INPUT -p tcp --dport 4930 -j DROP
#指定插入位置,LOG代表记录日志
iptables -I INPUT 3 -s 127.0.0.1 -p tcp --dport 4930 -j LOG
- 显示IP规则
#iptables --list
target prot opt source destination
ACCEPT tcp -- localhost anywhere tcp dpt:4930
ACCEPT tcp -- 172.16.18.0/24 anywhere tcp dpt:4930
LOG tcp -- anywhere anywhere tcp dpt:4930 LOG level warning
DROP tcp -- anywhere anywhere tcp dpt:4930
上面这样的配置,意思,172.16.18.*/127.0.0.1访问TCP 4930端口,可以通过,其它IP访问会先记录日志后拒绝访问。日志文件默认记录在:/var/log/messages中。
- 增加IP规则,-A是追加到尾部
iptables -A INPUT -s 172.16.18.0/24 -p tcp --dport 4930 -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 4930 -j ACCEPT
iptables -A INPUT -p tcp --dport 4930 -j DROP
- 删除IP规则
iptables -D INPUT -p tcp --dport 4930 -j DROP
#删除从上往下的第2条规则
iptables -D INPUT 2
- 显示IP规则
iptables --list
target prot opt source destination
ACCEPT tcp -- localhost anywhere tcp dpt:4930
ACCEPT tcp -- 172.16.18.0/24 anywhere tcp dpt:4930
DROP tcp -- anywhere anywhere tcp dpt:4930
这样就允本机和172.16.18.X可以访问gearman 4930端口,其它一概拒绝
存储IP规则
service iptables save注意
IP规则的执行是从上往下执行,匹配到既不在向下匹配
因此如果DROP的在顶部,则直接拒绝连接
还有localhost是不经网卡的,所以不受iptables规则限制