概念:
(1) Linux 防火墙 :
集成在内核里的 Netfilter 组件里,Linux 内核里已经自带一些防火墙的基本功能。并且,把我们生活中和工作中常用的常见的防火墙功能分成 PREROUTING INPUT OUTPUT FORWARD POSTROUTING 等五个功能模块,称之为hook。用iptables 命令工具向其写入规则!
(2) Linux 防火墙工具 :
iptables:命令行工具,工作在用户空间;用来编写规则,写好的规则被送往netfilter ,告诉内核如何去处理信息包
firewalld :CentOS 7 引入的新的前端管理工具,这里不细讲
iptables组成:
(1) 四个表table : raw-->mangle-->nat-->filter
raw: 关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
mangle: 修改数据标记位规则表
nat: 地址转换规则表
filter: 过滤规则表,根据预定义的规则过滤符合条件的数据包
(2) 五个链chain : INPUT OUTPUT PREROUTING FORWARD POSTROUTING
(3) Netfilter 表和链对应关系与图:
iptables防火墙策略命令行语法:
iptables + 表 + 链 + 规则(匹配条件 + 处理动作)
**** iptables命令行输入顺序 ****
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
常用选项:
-t <表> : 指定要操纵的表;
-A : 向规则链中添加条目;
-D : 从规则链中删除条目;
-i : 向规则链中插入条目;
-R : 替换规则链中的条目;
-L : 显示规则链中已有的条目;
-F : 清楚规则链中已有的条目;
-Z : 清空规则链中的数据包计算器和字节计数器;
-N : 创建新的用户自定义规则链;
-P : 定义规则链中的默认目标;
-h : 显示帮助信息;
-p : 指定要匹配的数据包协议类型;
-s : 指定要匹配的数据包源ip地址;
-j <目标> : 指定要跳转的目标;
-i <网络接口> : 指定数据包进入本机的网络接口;
-o <网络接口> : 指定数据包要离开本机所使用的网络接口;
Linux防火墙iptables实例:
查看防火墙策略:
~]# iptables -vnL <-- 最最基本也要用这三个选项!裸配了...
清除已有规则:
~]# iptables -F <-- 基本都用这个
~]# iptables -X
~]# iptables -Z
屏蔽IP:DROP是丢弃的意思
~]# iptables -I INPUT -s 123.45.6.7 -j DROP <-- 屏蔽单个IP的命令
~]# iptables -I INPUT -s 123.0.0.0/8 -j DROP <-- 封整个段即从123.0.0.1到123.255.255.254的命令
~]# iptables -I INPUT -s 124.45.0.0/16 -j DROP <-- 封IP段即从123.45.0.1到123.45.255.254的命令
~]# iptables -I INPUT -s 123.45.6.0/24 -j DROP <-- 封IP段即从123.45.6.1到123.45.6.254的命令
开放指定端口:
~]# iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT <-- 允许本地回环接口(即运行本机访问本机)
:
~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT <-- 允许已建立的或相关连的通行
~]# iptables -A OUTPUT -j ACCEPT <-- 允许所有本机向外的访问
~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT <-- 允许访问22端口
~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT <-- 允许访问80端口
~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT <-- 允许ftp服务的21端口
~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT <-- 允许FTP服务的20端口
~]# iptables -A INPUT -j REJECT <-- 禁止其他未允许的规则访问
~]# iptables -A FORWARD -j REJECT <-- 禁止其他未允许的规则访问
结语:
这里只要还是以理论为主,iptables还有SNAT 和 DNAT模式才是重点;
NAT :
- 请求报文: 修改源/ 目标IP,自由定义如何修改!
- 响应报文:修改源 源/ 目标IP ,根据跟踪机制自动实现!
SNAT :
- 让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装!
- 请求报文:修改源IP
DNAT :
- 把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射) ,但隐藏真实IP!
- 请求报文:修改目标IP