首页 > 代码库 > iptables综合实验

iptables综合实验

实验目的:

  1. 使用iptables作为公司内网的网关,使内网用户可以正常访问外网。

  2. 内网有一台web服务器需要对外提供

  3. 内网有两台服务器部署了samba,ftp和dns服务,给内网用户使用

  4. 对192.168.1.10-192.168.1.50的用户限速

 

 

GW

192.168.1.200(连接外网)  192.168.2.1(连接内网)

 

WEB Server

192.168.2.202

 

Other Servers

192.168.2.101

192.168.2.102

 

 

一、配置WEB Server的防火墙规则:

目的:

  1. 只开放本机的tcp80端口

  2. 只允许192.168.2.100-192.168.2.120使用ssh登录

  3. WEB服务器可以ping其他主机

 

添加规则:

192.168.2.202 上操作

iptables -t raw -A PREROUTING-d 192.168.2.202 -p tcp --dport 80 -j NOTRACK
 
iptables -t raw -A OUTPUT -s192.168.2.202 -p tcp --sport 80 -j NOTRACK


//上面两条规则对匹配到的流量关闭连接追踪状态

 

iptables -A INPUT -d192.168.2.202 -p tcp --dport 80 -j ACCEPT
 
iptables -A INPUT -d192.168.2.202 -p tcp -m iprange --src-range 192.168.2.100-192.168.2.120 --dport22 -j ACCEPT
 
iptables -A OUTPUT -s192.168.2.202 -p tcp -m multiport --sports 22,80 -j ACCEPT
 
iptables -A INPUT -p icmp -d192.168.2.202 --icmp-type 0 -j ACCEPT
 
iptables -A OUTPUT -p icmp -s192.168.2.202 --icmp-type 8 -j ACCEPT
 
iptables -P INPUT DROP
iptables -P OUTPUT DROP


 

 

二、配置Other Servers的防火墙规则:

目的:

  1. 开放samba,ftp和dns服务

  2. dns服务器之间可以实现主从复制

  3. 只允许192.168.2.100-192.168.2.120使用ssh登录

  4. 服务器可以ping其他主机

 

添加规则:

在192.168.2.101和192.168.2.102上操作

vim/etc/sysconfig/iptables-config

技术分享

service iptables restart   //加载模块

iptables -F          //清空默认规则

 

添加规则:

在192.168.2.101上操作

 

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED-j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -jACCEPT
 
iptables -A INPUT -d 192.168.2.101 -p tcp -m multiport--dports 21,53,139,145 -m state --state NEW -j ACCEPT
 
iptables -A INPUT -d 192.168.2.101 -p udp -m multiport--dports 53,137:138 -m state --state NEW -j ACCEPT
 
iptables -A INPUT -d 192.168.2.101 -p tcp -m iprange--src-range 192.168.2.100-192.168.2.120 --dport 22 -m state --state NEW -jACCEPT
 
iptables -A INPUT -d 192.168.2.101 -p icmp --icmp-type 0-m state --state NEW -j ACCEPT
 
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW-j ACCEPT
 
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW-j ACCEPT
 
iptables -A OUTPUT -s 192.168.2.101 -p icmp --icmp-type 8-m state --state NEW -j ACCEPT
 
iptables -A INPUT -s 127.0.0.1-p tcp --dport 953 -m state --state NEW -j ACCEPT
 
iptables -A OUTPUT -p tcp -d 127.0.0.1 --dport 953 -jACCEPT
 
iptables -P INPUT DROP
iptables -P OUTPUT DROP


 

 

在192.168.2.102上操作

 

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED-j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -jACCEPT
 
iptables -A INPUT -d 192.168.2.102 -p tcp -m multiport--dports 21,53,139,145 -m state --state NEW -j ACCEPT
 
iptables -A INPUT -d 192.168.2.102 -p udp -m multiport--dports 53,137:138 -m state --state NEW -j ACCEPT
 
iptables -A INPUT -d 192.168.2.102 -p tcp -m iprange--src-range 192.168.2.100-192.168.2.120 --dport 22 -m state --state NEW -jACCEPT
 
iptables -A INPUT -d 192.168.2.102 -p icmp --icmp-type 0-m state --state NEW -j ACCEPT
 
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW-j ACCEPT
 
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW-j ACCEPT
 
iptables -A OUTPUT -s 192.168.2.102 -p icmp --icmp-type 8-m state --state NEW -j ACCEPT
 
iptables -A INPUT -s 127.0.0.1-p tcp --dport 953 -m state --state NEW -j ACCEPT
 
iptables -A OUTPUT -p tcp -d 127.0.0.1 --dport 953 -jACCEPT
 
iptables -P INPUT DROP
iptables -P OUTPUT DROP


 

 

三、配置GW:

确保已打开ip转发

vim/etc/sysctl.d/99-sysctl.conf     //使ip转发永久生效

技术分享

 

sysctl -p       //立即生效

技术分享

 

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 ! -d192.168.2.0/24 -j SNAT --to-source 192.168.1.200
 
iptables -t nat -A PREROUTING -d 192.168.1.200 -p tcp--dport 80 -j DNAT --to-destination 192.168.2.202
 
iptables -A FORWARD -m iprange--src-range 192.168.1.10-192.168.1.50 -m connlimit --connlimit-above 10 -j DROP


//限制内网用户发往外网的连接并发数(需要进一步验证)

 

iptables -A FORWARD -m iprange--dst-range 192.168.1.10-192.168.1.50 -m limit --limit 300/minute -j ACCEPT


//限制内网用户的下载速度(需要进一步验证)


iptables综合实验