防火墙 iptables
iptables是内核的功能,iptables再内核中叫做netfilter,iptables只是用来管理netfilter的一个工具 iptables有四个功能(四个表)
1.raw 流量跟踪 自己阻止
2.mangle 流量标记整形 手动阻止 (上面的这两种形式可以是再硬件中实现的,再Linux中一般不可用)
3.NAT 网络地址转换
SNAT 源地址转换
DNAT 目标地址转换
4.filter 网络过滤
iptables 防火墙启动/关闭的两种方式:
通过程序:service iptables stop(start) ----通过service服务
通过程序源文件: /etc/init.d/iptables stop(start) ----直接通过源文件
通过setup(可视化图像):防火墙配置-->启用(按空格)有星号代表启动
查看防火墙信息:
基本语法: iptables -t 表名 参数
解释: 表名:nat filter
参数:v n L
-v 显示详细信息
-n 以数字的形式显示地址、端口等信息
-L 列出所有的条目规则
举例:iptables -t filter -nvL
解释: -t table 表 使用-t意思是 查看那个表的信息
注意:1、查看防火墙信息的时候 -t 可以不写
2、不写上面的-t 默认查看的是filter(过滤)
3、添加防火墙规则的时候尤为重要,因为不写表名,默认就是在filter表中添加规则
filter表详解:
1、如何查看filter表的详细情况(规则):
iptables (-t filter) -nvL
2、内容解释(三个链):
chain INPUT:入栈链
chain FORWARD:转发链
chain OUTPUT:出栈链
表示的是 数据表往外发所写的规则限制
一般情况下,服务器不限制从内部想外部发送数据的 因此这个链一般是没有规则的
filter表添加规则:
基本语法:
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
解释:
表名:filter nat
选项:-A 在链的末尾添加规则
-I 在链的开头添加规则(规则是在上而下执行的,规则所在的位置就很重了 规则相违背只执行第一条)
-D 删除规则
-P指定链的默认规则(默认规则值接受 ACCEPT , 不理会 DROP,不支持、拒绝REJECT)
-F清空链的所有规则
链名:INPUT OUTPUT FORWARD
条件:all icmp tcp udp 协议
控制类型: REJECT ACCEPT
DROP(丢弃,不做任何回应)LOG(激发日志,不做任何处理,交给下一套规则处理)
举例:iptables -t filter -I INPUT -p icmp -j REJECT
练习:两台linux虚拟机,放在同一个网段
1、linux1 ping linux2能通
2、在linux2上添加防火墙规则:
iptables -t filter -I INPUT -p icmp -j REJECT (icmp 就是ping命令)
会发现linux1 ping不通linux2
注意事项:
1.必须指定表明,不指定表名默认添加到filter表中。
2.必须指定链名,不指定链名默认添加到所有链中。
3.除非是设置链的默认规则,否则必须指定匹配条件。
4.选项、链名、控制类型必须用大写,其余用小写。
实验:添加一个规则,对ping命令实现不回应
iptables -I INPUT -p icmp -j DROP
1.验证:
Linux1 ping Linux2
ping 172.16.0.100 (windows中ping后面加-t表示一直ping Linux中不用加)
2.再被ping的Linux2上查看防火墙状态:
watch -n1 iptables -nvL 表示1秒钟查看一次
3.删除防护墙的规则:
iptables [-t filter] -D INPUT 2 删除filter表中INPUT链中的第二条规则
4.验证防火墙规则的顺序会影响效果
1.清空防火墙的所有规则:
iptables -F INPUT
2.向指定位置添加规则:
iptables -I INPUT 4 -p icmp -j DROP ----将这条规则添加到input链中的第四位
防火墙规则匹配条件:
通用匹配(非常重要,可以独立使用)
直接使用,不依赖于其他条件或扩展 包括网络协议、IP地址、网络接口条件等
隐含匹配
要求以特定的协议做前提 包括端口、tcp协议、icmp协议
显示匹配
要求以[-m扩展模块]的显示明确指出类型 包括多端口、MAC地址、IP范围、数据包
常见的通用匹配条件:
协议匹配:
-p 协议名如 icmp
地址匹配:
-s 源地址 [就是不想让那个主机上网的主机ip地址,但是只要换个IP地址就能