防火墙
-
iptables
- iptables 是基于内核的netfilter功能的管理工具。。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理。
这个工具在redhat7.0版本后已经被fireward取代,所以执行命令时有许多与以前版本认知有所不同。我这个实验是在Ubuntu16.0上进行
iptables 其实并不难,主要还是基于包过滤的规则,当然后期为了完善也添加了外挂模块state 基于状态的和 mac 基于网卡的。
摘录了一张图如下:
说下这张图:
-
可以看到数据包共可能有5种状态:prerouting,input,output,forward,postrouting. 路线:
-
IN->prerouting->forward->output->postrouting->OUT;
IN->prerouting->input->LOCALHOST->output->postrouting->OUT 发现每个状态都有多个表起共同作用,
关于先后顺序是图中从下往上,比如 prerouting 中就是先raw表再mangle最后nat表(参考资料而来,未经考证) 。 防火墙处理数据包的四种方式
-
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则 根据上述,我们要做的就是再每个状态中的每个表里面设定我们想设定的规则。so很简单的感觉,接下来只要了解下配置语法就可以了。
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转
命令选项:
-
-A 在指定链的末尾添加(append)一条新的规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-E 重命名用户定义的链,不改变链本身
-F 清空(flushÿ