一、了解防火墙
1.防火墙分为硬件和软件,硬件防火墙ASA,软件防火墙iptables(linux)如ISA(windows)。
2.linux的防火墙分为netfilter(内核模块)、iptables(用户工具)、firewall(用户工具)


二、了解iptables结构
1.表中存放链,链中放规则,规则对数据包进行处理
2.表依据功能进行划分:row状态跟踪、mangle标记、net修改、filter过滤
3.链依据时机进行划分:INPUT链:入站   OUTPUT链:出站   FORWARD链:转发   PREROUTING链:路由前    POSTROUTING链:路由后


三、iptables匹配规则

wKiom1i-M66yLz4YAAFRnPx23N4024.png-wh_501.表的匹配顺序:raw-->mangle-->nat-->filter
2.链的匹配顺序
  入站流向:PREROUTING-->INPUT
  出站流向:OUTPUT-->POSTROUTING
  转发数据流向:PREROUTING-->FORWARD-->POSTROUTING
链内规则间匹配:顺序匹配,匹配即停止,LOG除外;无匹配使用默认规则


四、iptables的编写规则
1.Iptables –t 表名(小写) 选项(大写) 链名(大写) 条件(小写) –j 动作(大写)
其中省略表名,默认是filter;省略链名,默认是表中的所有链;同时省略表和链,默认是filter表中的所有链
2.动作:DROP丢弃 ,ACCEPT允许,REJECT拒绝,LOG日志
3.选项:
1) 增:-A(末尾添加)|-I(是i)(指定位置加入,无位置开始添加)
2) 查看:-L(列出显示),-n(数字显示),-v(显示详细),--line-numbers(显示规则的顺序号)
3) 删:-D (删除),-F(清空规则)
4) 设置默认规则:-P
Iptables –P 链名 DROP|ACCEPT
Iptables –t filter –P INPUT DROP
注:一般设置为DROP、默认的策略是ACCEPT,建议只对filter
4.条件
1) 通用条件:协议,ip,接口
-p 协议名地址匹配
-s 源地址、-d 目的地址接口配置
-i 入站网卡、-o 出站网卡
 2) 隐含匹配条件:端口匹配、TCP标记匹配、icmp类型匹配
   --sport 源端口、 –dport 目的端口、 --tcp-dlags 检查范围
   --icmp-type ICMP类型
 3) iptables的状态:
   ESTABLISHED:已建立链接的对话
   NEW:新建立的会话请求
   RELATED:已经建立连接的会话的相关会话
NEW-ESTABLISHED
RELATED-ESTABLISHED
5) 显示匹配条件:多端口匹配、ip地址范围匹配、mac地址匹配、黄太匹配
-m multiport –sports 源端口列表
-m multiport –dports 目的端口列表
-m iprange –src-ange ip范围 (ip1-ip2)
-m mac –mac-source mac地址
-m state –state 链接状态


五、iptables防火墙高级用法
1.SNAT:局域网主机共享单个公网ip上网,隐藏内网主机。通过修改数据包的源IP地址实现
iptables -t nat -A POSTROUTING -s 内网段 -o 外网网卡 -j SNAT --to-source 外网的ip地址(将 SNAT --to-source 改为MASQUERADE代表现在使用的网卡的地址,解决公网地址不断变化)
2.DNAT:发布内部服务器使用,通过修改数据包的目的地址实现,在路由前时机将公网客户机访问网关的数据中目的 修改为内网服务器地址
iptables -t nat -A PREROUTING -i 外网网卡 -d 外网ip 地址 -p tcp --dport 发布的服务端口 -j DNAT --to- destination 内网服务器ip地址:端口


六、常用iptables防火墙使用
1.个人电脑使用
Iptables –I INPUT –I lo –j ACCEPT ##允许主机回环地址访问
Iptables –A INPUT –m start –start ESTABLISHED,RELATED –j ACCEPT ##允许自己访问外网
Iptables –P INPUT DROP  ##配置默认策略拒绝入站访问
Iptables –P FORWRAD DROP  ##配置默认策略拒绝出站访问

2.服务器防火墙使用
 Iptables  -A  INPUT  -p 协议(tcp/udp)  -m  multiport  --dports  对外提供服务端口  -j  ACCEPT  ##发布端口
iptables -A INPUT -s 管理员地址 -p tcp --dport 22 -j ACCEPT ##发布22号端口指定管理员地址,用于管理服务器
iptables -t nat -A PREROUTING -i 本地网卡 -d 公网地址 -p tcp --dport 80 -j DNAT --to-destination web服务器ip地址:80  ##发布web服务
Iptables –I INPUT –I lo –j ACCEPT ##允许本地间相互访问
Iptables –A INPUT –m start –start ESTABLISHED,RELATED –j ACCEPT ##允许自己访问外网
Iptables –P INPUT DROP  ##配置默认策略拒绝入站访问
Iptables –P FORWRAD DROP  ##配置默认策略拒绝出站访问