本文发布于Cylon的收藏册,转载请著名原文链接~
1 防火墙实战
关闭两项功能:
- selinux(生产中也是关闭的),ids入侵检测,MD5指纹将。系统所有核心文件全部做指纹识别,将指纹留下,将来出问题,一看就知道那个文件被改过。
- iptables(生产中看情况,内网关闭,外网打开),大并发的情况,不能开iptables,影响性能。 使用防火墙就不如不使用防火墙,不使用防火墙的前提是不给外网ip,工作中要少给外网服务器ip,这样防火墙使用率较低,防火墙使用也很消耗资源
安全优化:
- 尽可能不给服务器配置外网IP。可以通过代理转发或者通过防火墙映射。
- 并发不是特别大情况再外网IP的环境,要开启iptables防火墙
http://edu.51cto.com/course/course_id-772.html
学好iptables基础:
- OSI7层模型以及不同层对应那些协议?
- TCP/IP三次握手,四次断开的过程,TCP HEADER。
- 常用的服务端口要了如指掌。
1.1 iptables防火墙简介
Netfilter/iptables(以下简称iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出的服务器数据包进行很精细的控制。特别是他可以在一台非常低的硬件配置下跑的非常好(赛扬500MHZ 64M内存的情况部署网关防火墙)提供400人的上网服务四号==不逊色企业级专业路由器防火墙==。iptables+zebra+squid
iptables是linux2.4及2.6内核中集成的服务。其功能与安全性比其老一辈ipwadin ipchains强大的多(长江水后浪推前浪),iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持7层控制(squid代理+iptables)。
1.2 iptables名词和术语
容器:包含或者说属于关系
什么是容器?
在iptables里,就是用老描述这种包含或者说属于的关系
什么是Netfilter/iptables?
Netfilter是表(tables)的容器
什么是表(tables)?
表是链的容器,所有的链(chains)都属于其对应的表。
什么是链(chains)?
链(chains)是规则的容器
什么是规则(policy)
iptables一系列过滤信息的规范和具体方法条款
1.3 iptables工作流程
iptables是采用数据包过滤机制工作的,所以他会对请求的数据包包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
数据包的流向是从左向右的!
iptables工作小结:
防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
如果匹配上规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,知道匹配默认规则得到明确的阻止还是通过。
防火墙的默认规则是对应链的所有的规则执行完才会执行的。
提示:
iptables防火墙规则的执行顺序默认从前到后(从上到下)依次执行,遇到匹配的规则就不在继续向下检查,只有遇到不匹配的规则才会继续向下进行匹配。
重点:匹配上了拒绝规则也是匹配,这点要多注意。
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
$ iptables -nL
Chain INPUT (policy ACCEPT)
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
此时 ``telnet10.0.0.148 3306是不通的,原因就是telnet请求已匹配上了拒绝规则
iptables -A INPUT -p tcp –dport 3306 -j DROP,因此,不会在找下面的规则匹配了。如果希望
telnet 10.0.0.148 3306 连通,可以吧ACCEPT规则中的-A改为-I,即
iptables -I INPUT -p tcp –dport 3306 -j ACCEPT` 把允许规则放于INPUT链第一行生效
==默认规则是所有的规则执行完才会执行的==。
1.4 iptables表(tables)和链(chains)
默认情况下,iptables根据功能和表的定义划分包含三个表,filter nat mangle,其每个表有包含不同的操作链(chains)。
下面的表格展示了表和链的对应关系
表 | 链(chains) | ||||
INPUT | FORWARD | OUTPUT | PREROUTING | POSTROUTING | |
Filter | |||||
NAT | |||||
Mangle | |||||
注:绿色表示有, 灰色表示无 |
表名 | 作用 |
filter | 强调主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)。filter表是iptables默认使用的表。这个表定义了三个链(chains)。企业工作场景:主机防火墙。 |
nat | 负责网络地址转换,即来源与目的IP地址和port的转换。应用:和主机本身无关。一般用于局域网共享上网或者特殊的端口转换服务相关。 NAT功能一般企业工作场景 1. 用于做企业路由(zebra)或网关(iptables),共享上网(POSTROUTING) 2. 做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务,(PREROUTING) 3. web,单个端口的映射,直接映射80端口(PREROUTING)。这个表示定义了三个链(chains),nat功能就相当于网络的acl控制。和网络交换机acl类似。 |
Mangle | 主要负责修改数据包中特殊的路由标记,如TTL,TOS,NARK等。这个表定义了5个链 |
链名 | 作用 |
INPUT | 负责过滤所有目标地址是本机地址的数据包。通俗的讲,就是过滤进入主机的数据包 |
FORWAED | 负责转发流经主机的数据包。起转发的作用,和NAT关系很大,后面会详细讲LVS NAT模式。 |
PREROUTING | 在数据包到达防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等。(通俗比喻,就是收信时,根据规则重写收件人的地址,这看上去很不地道啊!) 例如:把公网IP:124.42.60.113映射到居于玩分10.0.0.19服务器上。如果是web服务,可以把80端转为局域网的服务器上9000端口。 |
POSTROUTING | 在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址、源端口等。(通俗比喻,就是寄信时,写好发件人的地址,要让人家回信时能后有地址可回。)例如:我们在现在的笔记本和虚拟机都是10.0.0.0/24,就是楚王的时候被我们企业路由器把源地址改成了公网地址了。生产应用:局域网共享上网。 |
由于这个表与特殊标记相关,一般情况下,我们用不到这个mangle表,这里就不做详细介绍了。给初学者的建议:新手学习时最好抓住一个主线向前学,能够跑通路就好,不一定要面面俱到,不然很容易陷进去,而苦恼,甚至失去学习的兴趣
1.5 iptables表和链的流程图
下面这张图清晰的描绘了netfilter对包的处理流程
为了更好的学习将上图简化为如下
1号线:主要是NAT功能,
企业案例:
1. 局域网上网共享(路由和网关),使用NAT的POSTROUTING链
2. 外部IP和端口映射为内部IP和端口(DMZ功能),使用NAT的PREROUTING链。
2号线:主要是FILTER功能,即防火墙功能 FILTER INPUT FORWARD
企业案例:
主要应用就是主机服务器防火墙,使用FILTER的INPUT链
本文发布于Cylon的收藏册,转载请著名原文链接~
链接:https://www.oomkill.com/2016/10/ch1-iptables-introduction/
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。