第一部分:理论
一.   什么是iptables?
iptableslinux的非常重要的一个组件,它的主要作用是包过滤,即防火墙的功能。
二.   在哪里可能用到iptables ?
  1. 企业当中用iptables实现路由器或防火墙
  2. 企业当中用linux作为服务器操作系统
  3. IDC机房中的服务器。
三.   为什么要用iptables
  1. 成本低。用公司里淘汰的电脑做一台路由器,节省开支。
  2. 速度快。转发效率高。
  3. 功能强大:可以做包过滤,可以做nat转换,可以减轻DOS攻击等等。
四.iptables的组成
    由三个表组成:flter   nat    mangle
五. iptables表的组成
filter(默认)包括三个链:INPUT OUTPUT FORWARD
 nat (转换)包括三个链:PREROUTING OUTPUT POSTROUTING
mangle(服务质量等)包括五个链:PREROUTING INPUT OUTPUT FORWARD POSTROUTING
.iptables图解
. iptables服务启动方式
A . /etc/rc.d/init.d/iptables  start
B. service  iptables    start
  iptables配置文件与策略设置文件
iptables配置文件  /etc/sysconfig/iptables-config
策略设置文件     /etc/sysconfig/iptables
iptables服务的启动与停止
iptables服务缺省自动启动
可通过启动脚本手工启动和停止iptables服务
# service iptables start
. 基本命令操作命令
v  Iptables
v  -A 增加一个规则
v  -D 删除规则
v  -R 替换(指定行上替换)
v  -I 插入
v  -L 显示所有规则
v  -F 删除所有规则
v  -P 默认策略
v  --line-numbers显示行号
. 基本命令匹配选项
  -p 指定使用的协议 !号排除
--src IP地址
--dst 目的地址
--in-interface 选择网卡
--fragment 数据包分段
--sport 源端口
--dport 目的端口
--state 状态(RELATED,ESTABLISHED)
十一  Iptables默认策略(重点掌握)
v  Iptables  -P INPUT ACCEPT/DROP
v  Iptables  -P OUTPUT ACCEPT/DROP
v  Iptables  -P FORWARD ACCEPT/DROP
注意:修改默认过滤规则(默认是ACCEPT我们全部修改成DROP)
十二.具体例子
v  防止ping             Iptables -A INPUTp icmp j DROP
v  限制某个端口
 iptables I INPUT p tcp --dport  21 j DROP
v  注意:修改默认过滤规则的时候一定要先把远程ssh打开
v  开启ftp服务
Iptables A INPUT p tcp --dport 21 j ACCEPT
 
 
实验脚本1
2.编辑一脚本文件
[root@localhost]# vi  /bin/firewall.sh
文件内容如下:
 
#!/bin/bash 
echo "Starting iptables rules..."    //显示启动iptables信息
 
echo  "1"  >  /proc/sys/net/ipv4/ip_forward     //启动linux路由功能
 
iptables  -F      //清空所有规则
iptables  -X     //清空所有自定义规则
iptables  -Z     //清空计数器
 
iptables  -P  FORWARD   DROP     //定义默认的转发策略为丢弃
iptables  -P  INPUT   DROP         //定义默认的接收策略为丢弃
iptables  -P  OUTPUT   DROP       //定义默认的发送策略为丢弃
 
//允许访问DNS服务器的往返数据包
iptables  -A  FORWARD  -p  udp  -d  192.168.10.1  --dport  53    -j  ACCEPT
iptables  -A  FORWARD  -p  udp  -s  192.168.10.1  --sport  53    -j  ACCEPT
iptables  -A  FORWARD  -p  tcp  -d  192.168.10.1  --dport  53    -j  ACCEPT
iptables  -A  FORWARD  -p  tcp  -s  192.168.10.1  --sport  53    -j  ACCEPT
//允许访问WEB服务器的往返数据包
iptables  -A  FORWARD  -p  tcp  -d  192.168.10.1  --dport  80    -j  ACCEPT
iptables  -A  FORWARD  -p  tcp  -s  192.168.10.1  --sport  80    -j  ACCEPT
 
//允许访问FTP服务器的往返数据包通过
 
//允许本机与外部主机互ping
iptables  -A  INPUT  -p  icmp  --icmp-type  echo-request  -j  ACCEPT
iptables  -A  INPUT  -p  icmp  --icmp-type  echo-reply  -j  ACCEPT
iptables  -A  OUTPUT  -p  icmp  --icmp-type  echo-request  -j  ACCEPT
iptables  -A  OUTPUT  -p  icmp  --icmp-type  echo-reply  -j  ACCEPT
实验脚本2
iptables  -F
iptables  -X
iptables  -Z
#------------------------default  rule ------------------------------
iptables -P  INPUT  DROP
iptables -P  OUTPUT  DROP
iptables -P  FORWARD  DROP
#------------------------ssh  rule -------------------------------------------
iptables -t filter -A   INPUT  -i  eth0 -p tcp --dport  22  -j  ACCEPT
iptables -t filter -A  OUTPUT  -o  eth0 -p tcp --sport  22  -j  ACCEPT
#------------------------www-ftp-mail-dns  rule --------------------------------
iptables -t filter -A   INPUT  -i   eth0 -p tcp --dport  80     -j ACCEPT
iptables -t filter -A   OUTPUT -o  eth0 -p  tcp --sport  80     -j ACCEPT
iptables -t filter -A   INPUT  -i   eth0 -p tcp --dport  21     -j ACCEPT
iptables -t filter -A   INPUT  -i   eth0 -p tcp --dport  20     -j ACCEPT
iptables -t filter -A   OUTPUT -o  eth0 -p  tcp --sport  21     -j ACCEPT
iptables -t filter -A   OUTPUT -o  eth0 -p  tcp --sport  20     -j ACCEPT
iptables -t filter -A   INPUT -i  eth0  -p tcp  --dport 25     -j ACCEPT
iptables -t filter -A   OUTPUT -o eth0  -p tcp  --sport 25     -j ACCEPT
iptables -t filter -A   INPUT -i  eth0  -p tcp  --dport 110     -j ACCEPT
iptables -t filter -A   OUTPUT -o eth0  -p tcp  --sport 110     -j ACCEPT
iptables -t filter -A   OUTPUT  -o  eth0  -p  udp   --dport 53     -j  ACCEPT
iptables -t filter -A   INPUT  -i   eth0  -p  udp  --sport 53     -j  ACCEPT
#-------------------------ICMP  rule ------------------------------------------
iptables -t  filter -A  INPUT -p    icmp    -j ACCEPT
iptables -t  filter -A  INPUT -p    icmp   -j ACCEPT
iptables -t  filter -A  INPUT -p    icmp   -j ACCEPT
iptables -t  filter -A  OUTPUT -p    icmp   -j ACCEPT
iptables -t  filter -A  OUTPUT -p    icmp   -j ACCEPT
iptables -t  filter -A  OUTPUT -p    icmp   -j ACCEPT
iptables -t  filter -A  OUTPUT -p    icmp   -j ACCEPT
允许ftp访问,
主动模式:
在配置文件中加入:
pasv_enable=no(默认yes
防火墙设置:
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A INPUT -p tcp --sport 20:21 -j ACCEPT
被动模式:
在配置文件中加入:
pasv_enable=yes (默认yes
pasv_min_port=40000
pasv_max_port=41000
防火墙设置:
iptables -F
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:21 -j ACCEPT
iptables -A INPUT -p tcp --dport 40000:41000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 40000:41000 -j ACCEPT
3.给/bin/firewall.sh设置可执行权限
[root@localhost]# chmod  755  /bin/firewall.sh
 
4.执行/bin/firewall.sh
[root@localhost]#  /bin/firewall.sh
 
5.让计算机下次启动时自动执行/bin/firewall.sh
[root@localhost]# echo    ‘/bin/firewall.sh’  >>  /etc/rc.local
附加实验
如何通过iptables开启ftp服务,包括主动和被动.
 
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to 1.1.1.1-1.1.1.222
 
 
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 81   -j   DNAT --to 192.168.0.2:80