10、Iptables场景示例
10.1、iptables场景一
场景描述
1、对所有的地址开放本机的tcp(80、22、8080-9090)端口的访问
2、允许对所有的地址开放本机的基于ICMP协议的数据包访问
3、其他未被允许的端口禁止访问
实现思路
1、先允许端口、协议
2、配置拒绝规则
#INPUT
iptables -F
iptables -t filter -I INPUT -p tcp -m multiport --dport 22,80,8080:9090 -m state --state "NEW,ESTABLISHED,RELATED" -j ACCEPT
iptables -t filter -I INPUT -p icmp -j ACCEPT
iptables -t filter -I INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -j DROP
#OUTPUT
iptables -t filter -I OUTPUT -p tcp -m multiport --sport 22,80,8080:9090 -m state --state "NEW,ESTABLISHED,RELATED" -j ACCEPT
iptables -t filter -I OUTPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -j DROP
10.2、iptables场景二
场景描述:
1、员工在公司内部(10.0.0.0/24、10.8.0.0/24)能访问服务器上任何服务
2、当员工出差外地,通过vpn连接到公司,也可以访问内部上的任何服务
3、公司有门户网站需要允许公网用户访问http 80/tcp、https 443/tcp
实现思路
1、允许本地lo访问
2、允许10.0.0.0、10.8.0.0网段访问任何服务
3、允许其他网段主机可以访问80、443
4、允许已建立的数据包通过(ESTABLISHED)
5、拒绝所有未允许的数据包
iptables -F
iptables -t filter -I INPUT -i lo -j ACCEPT
iptables -t filter -I INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -t filter -I INPUT -s 10.8.0.0/24 -j ACCEPT
iptables -t filter -I INPUT -m state --state "ESTABLISHED" -j ACCEPT
#外网用户仅能访问80和443
iptables -t filter -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP
10.3、iptables场景三
ftp服务一般有主动和被动两个模式,那么针对这两个模式该如何配置iptables呢
10.3.1、ftp主动模式规则配置
通常ftp主动模式监听在21端口,然后由20端口作为数据传输端口,向客户端发送数据
1、vsftpd服务端配置支持主动模式
yum install vsftpd -y
vim /etc/vsftpd/vsftpd.conf
port_enable=YES
connect_from_port_20=YES
systemctl restart vsftpd
2、ftp客户端连接模式默认为被动模式,需要通过passive命令切换到主动式
yum install ftp -y
ftp server_address
ftp> passive
Passive mode off #提示被动模式关闭
3、登录服务端,查看客户端与服务端的连接的状态(服务端20端口主动向客户端随机端口发送数据)
netstat -an |grep -i estab
4、配置防火墙,放行20、21端口,以及建立连接后的数据传输
iptables -F
iptables -A INPUT -p tcp -m state --state "NEW,ESTABLISHED,RELATED" -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 20,21,22 -j ACCEPT
iptables -A INPUT -j DROP
#OUTPUT放行从20、21出去新建的连击,以及已建立的连接,至于ssh就相应建立的连接即可
iptables -t filter -I OUTPUT -p tcp -m multiport --sport 22 -m state --state "ESTABLISHED" -j ACCEPT
iptables -t filter -I OUTPUT -p tcp -m multiport --sport 20,21 -m state --state "NEW,ESTABLISHED,RELATED" -j ACCEPT
iptables -t filter -A OUTPUT -j DROP
10.3.2、ftp被动模式规则配置
ftp被动模式监听在21端口,然后由随机端口作为数据传输端口,向客户端发送数据
由于是随机就没办法指定端口,所以可以配置vsftpd控制随机端口范围
1.修改vsftpd服务端传输数据时的随机端口
vim /etc/vsftpd/vsftpd.conf
pasv_min_port=50000
pasv_max_port=60000
systemctl restart vsftpd
2.配置iptables规则:
# INPUT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 21,50000:60000 -m state --state "NEW,ESTABLISHED,RELATED" -j ACCEPT
iptables -A INPUT -j DROP
# OUTPUT
iptables -I OUTPUT -p tcp --sport 22 -m state --state "ESTABLISHED" -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 21,50000:60000 -m state --state "ESTABLISHED" -j ACCEPT
iptables -A OUTPUT -j DROP