第一部分:理论
一. 什么是iptables?
iptables是linux的非常重要的一个组件,它的主要作用是包过滤,即防火墙的功能。
二. 在哪里可能用到iptables ?
-
企业当中用iptables实现路由器或防火墙
-
企业当中用linux作为服务器操作系统
-
IDC机房中的服务器。
三. 为什么要用iptables
-
成本低。用公司里淘汰的电脑做一台路由器,节省开支。
-
速度快。转发效率高。
-
功能强大:可以做包过滤,可以做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 INPUT–p 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
本文转自 gehailong 51CTO博客,原文链接:http://blog.51cto.com/gehailong/263904,如需转载请自行联系原作者