防火墙(一)主机型防火墙

防火墙(二)SNAT和DNAT 

 

防火墙(一)主机型防火墙

默认防火墙规则

 

​防火墙(一)主机型防火墙_数据包

拒绝与禁止一个数据包

​防火墙(一)主机型防火墙_防火墙_02

IP防火墙的数据包传输

在IP防火墙中,有三个内建的过滤规则链被使用。所有到达接口的数据包都按照输入规则链被过滤。如果数据包被接受,它会被送到路由模块。路由功能决定数据包是被送到本地还是转发到另一个出站接口。

​防火墙(一)主机型防火墙_接口_03

如果被转发,数据包会由转发规则链进行第二次过滤。如果数据包被接受,它会被送到输出规则链。

本地产生的出站数据包和将被转发的数据包都要经过输出规则链。如果数据包被接受,它会被送出接口。

回环路径包括两个规则链,如图示。每一个回环数据包在出回环接口之前需要通过输出规则链,在那里它会被送到回环的输入接口,然后输入规则链被应用。

​防火墙(一)主机型防火墙_数据包_04

Iptables命令的基本语法以iptables本书开始,后面跟着一个或多个选项、一个规则链、一个匹配标准级和一个目标或部署。命令的设计很大程度上取决于要执行的操作。你可以参考这个语法:

Iptables <option> <chain> <matching criteria> <target>

常用命令列表
命令 -A, --append
说明 新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。


命令 -D, --delete

说明 从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。

命令 -R, --replace
说明 取代现行规则,规则被取代后并不会改变顺序。


命令 -I, --insert
说明 插入一条规则,原本该位置上的规则将会往后移动一个顺位。

命令 -L, --list
说明 列出某规则链中的所有规则。

命令 -F, --flush
说明 删除某规则链中的所有规则。


命令 -Z, --zero
说明 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。


命令 -N, --new-chain
说明 定义新的规则链。

命令 -X, --delete-chain
说明 删除某个规则链。

命令 -P, --policy
说明 定义过滤政策。 也就是未符合过滤条件之封包,预设的处理方式。

命令 -E, --rename-chain
说明 修改某自订规则链的名称。


参数 :

 

--source (-s)-----------匹配源IP地址

--destination (-d)---------匹配目标IP地址

--protocol (-p)-------------匹配的协议

--in-interface (-i)------------入口

--out-interface (-o)-----------出口

--state ------------------------匹配一组连接状态

--string-------------------------匹配应用层数据直接序列

--comment-----------------------在内核内存中为一个规则关联多大256个字节的注释数据

目标参数:

ACCEPT----------------------允许数据包通过

DROP-------------------------丢弃数据包

LOG---------------------------将数据信息记录到syslog

REJECT-------------------------丢弃数据包,同时发送适当的响应报文

RETURN--------------------------在调用链中继续处理数据包

 

 

主机型防火墙需要提供服务,所以安全性要最高

所以我们要把默认策略全部改成拒绝!

#!/bin/bash

#防火墙过滤脚本(主机型防火墙)

iptables -t filter -P INPUT ACCEPT     // 首先给2个链 的默认策略改成允许 防止远程操作断开

iptables -t filter -P OUTPUT ACCEPT

iptables -F INPUT    //然后清除所有内容

iptables -F OUTPUT

iptables -I INPUT -p tcp -m multiport --dport 22,25,80,21,110,143 -j ACCEPT   //填写规则

iptables -I INPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 8 -j DROP

iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

iptables -t filter -P INPUT DROP    //再把默认策略改成拒绝

iptables -I OUTPUT -p udp --sport 53 -j ACCEPT

iptables -I OUTPUT -p tcp -m multiport --sport 22,25,80,21,110,143 -j ACCEPT

iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT

iptables -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT

iptables -t filter -P OUTPUT DROP

#从MAC地址匹配

#根据MAC地址封锁主机

#iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP

测试各种服务

首先测试www服务

​防火墙(一)主机型防火墙_主机 Linux防火墙_05

 

我们开放80端口在尝试

​防火墙(一)主机型防火墙_防火墙_06

[root@hao ~]# sh fang.sh

运行脚本

​防火墙(一)主机型防火墙_接口_07

 

 

Web服务前面搭建好了

例如:禁止从其他主机ping主机,但是允许本机ping其他主机

[root@hao ~]# ping 192.168.129.1

PING 192.168.129.1 (192.168.129.1) 56(84) bytes of data.

64 bytes from 192.168.129.1: icmp_seq=1 ttl=128 time=0.150 ms

64 bytes from 192.168.129.1: icmp_seq=2 ttl=128 time=0.190 ms

64 bytes from 192.168.129.1: icmp_seq=3 ttl=128 time=0.127 ms

64 bytes from 192.168.129.1: icmp_seq=4 ttl=128 time=0.150 ms

64 bytes from 192.168.129.1: icmp_seq=5 ttl=128 time=0.136 ms

64 bytes from 192.168.129.1: icmp_seq=6 ttl=128 time=0.289 ms

64 bytes from 192.168.129.1: icmp_seq=7 ttl=128 time=0.131 ms

64 bytes from 192.168.129.1: icmp_seq=8 ttl=128 time=0.175 ms

但是客户端ping主机就是不通

服务端

​防火墙(一)主机型防火墙_数据包_08

主机端

​防火墙(一)主机型防火墙_主机 Linux防火墙_09

 

这时查看下脚本原件

​防火墙(一)主机型防火墙_防火墙_10

 

默认就是 filter

​防火墙(一)主机型防火墙_数据包_11

 

在来测试 dns服务器

​防火墙(一)主机型防火墙_主机 Linux防火墙_12

​防火墙(一)主机型防火墙_防火墙_13

 

加入规则表后 就可以了

​防火墙(一)主机型防火墙_防火墙_14

​防火墙(一)主机型防火墙_主机 Linux防火墙_15

可以正常访问了!主机型防火墙 安全级别最高 因为 INPUT和OUTPUT  默认策略是拒绝所有!这样可以防止防弹木马攻击!