第一部分:
理论
一.
什么是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,如需转载请自行联系原作者