第一部分:理论
一. 什么是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