我的应用程序服务器位于受组织范围防火墙保护的网络上,并且我的服务器也使用fail2ban
.也就是说,我想设置一个额外的保护层iptables
。我的配置遇到了一些问题 - 特别是从应用程序服务器访问外部内容。
要求:
- 拒绝所有人访问,然后允许特定 IP 范围 (4.3.2.*)
- 能够从应用程序服务器检索外部内容
已知:
- 应用服务器IP为1.2.3.4
- 我的笔记本电脑的静态IP是4.3.2.1
我尝试过的:
从iptables
允许通过端口 22、80 和 443 进行流量的普通配置开始,我添加了以下内容。
# allow traffic from a specific IP range
iptables -A INPUT -s 4.3.2.0/24 -j ACCEPT
# allow traffic over LDAP port
iptables -A INPUT -p tcp --dport 636 -j ACCEPT
# keep existing traffic
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# deny all traffic
iptables --policy INPUT DROP
我使用 保存该配置service iptables save
,然后重新启动服务。
这是iptables -L -v -n --line-numbers
Chain INPUT (policy DROP 461 packets, 81259 bytes)
num pkts bytes target prot opt in out source destination
1 11835 1095K fail2ban-SSH tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 2972K 1083M ACCEPT all -- * * 4.3.2.0/24 0.0.0.0/0
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:636
4 3747K 436M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 89676 packets, 26M bytes)
num pkts bytes target prot opt in out source destination
Chain fail2ban-SSH (1 references)
num pkts bytes target prot opt in out source destination
1 11776 1092K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
问题:
我无法使用上述规则集访问外部内容。默认的输出策略是接受,所以我不确定问题是什么。我已经从应用程序本身以及简单地使用命令和使用 lynx 对此进行了测试https://some.site。如果我将默认的输入策略更改为接受,lynx 就能够提取内容。 INPUT 策略阻止内容加载是怎么回事?
答案1
解决了这个问题 - 这是一个简单的解决方案。我从单个外部系统 (1.1.1.99) 获取数据,但该 IP 不在我的规则集中并且被阻止。
所以添加这个并保存可以解决问题:
iptables -A INPUT -s 1.1.1.99 -j ACCEPT