Linux网络安全篇,认识防火墙(二),Netfilter
一.概述
因为iptables软件利用的是数据包的过滤的机制。所以它会分析数据包的报头数据。根据报头数据与定义的规则来决定该数据是否可以放行。若数据包内容与规则内容相同则放行,否则继续与下一条规则进行比较。我们可以发现这些规则是有顺序的。如果数据符合第一条规则,则不再理会后续的规则了。因此,规则的排列顺讯是非常重要的。
如果该数据与所有规则都不符合,则会通过默认操作,即数据包策略Policy。
二.iptables的整体框架
从名字我们就可以得知,iptables是一个管理多个表格的软件。而每个表格又有很多链(chain)。我们在上面(概述)提到的工作流程其实只是某个表格的某个链的执行原理。
如何查看当前iptables中已经存在的表以及其中的规则呢?
iptables [-t tables] [-L] [-nv]
-t ===> 后面接table,若省略则默认使用filter
-L ===> 列出目前的table的规则
-n ===> 不进行IP和HOSTNAME的反查
-v ===> 列出更多的信息
eg:

字段属性:
target ===> 代表进行的操作,ACCEPT事放行,而REJECT则是拒绝,DROP是丢弃
prot ===> 代表使用的数据包协议
opt ===> 额外的选项说明
source ===> 代表此规则是针对哪个来源IP进行限制
destination ===> 代表此规则是针对哪个目标IP进行限制
主要的表及其内部包含的链:
Filter(过滤器):
主要跟进入Linux本机的数据包有关,是默认的table。
INPUT:与要进入本机的数据包有关
OUTPUT:与本机要送出的数据包有关
FORWARD:与本机没有关系,可以传递数据包到后端的计算机中,与NAT的相关性较高
NAT(地址转换):
PREROUTING:路由判断之前要进行的规则
POSTROUTING:路由判断之后要进行的规则
OUTPUT:与发送出去的数据包有关
这个用来进行来源与目的地的IP或port的转换,与本机无关,主要与Linux主机后的局域网内计算机有关
Mangle(破坏者):
特殊的数据包。该表与特殊标志相关性较高
三、常用命令
1.查看完整的防火墙规则(没有格式化输出)
iptables-save [-t table]
2.清除规则
iptables [-t tables] [-FXZ]
-F ===> 清除所有的已制定规则
-X ===> 删除所有用户“自定义”的链(chain)
-Z ===> 将所有用户的链(chain)的计数与流量都归零
注意:这三条命令会将本机防火墙规则都清除,但是不会改变默认策略(policy)
3.定义默认策略
策略(policy) :当数据包不在我们设置的规则之内时,它的通过与否是以策略(policy)的设置为准。
iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT|DROP]
-P ===> 定义策略(Policy)
ACCEPT ===> 该数据包可接受
DROP ===> 该数据包直接丢弃,不会让Client端知道为何丢弃
eg:
将本机的INPUT设置为DROP
iptables -P INPUT DROP
4.数据包的基础对比
iptables [-A/I 链名] [-i/o 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|REJECT|LOG]
-A ===> 新增一条规则到该链的最后面
-I ===> 插入一条规则,若没有指明此规则的顺序,则默认插入变成第一条规则
-i ===> 设置数据包进入网络接口(eth0,lo等)的规范,需要与INPUT链配合
-o ===> 设置数据包传出网络接口的规范,需要与OUTPUT链配合
-p ===> 设置改规则适用于哪种数据包格式(tcp,udp,icmp,all)
-s ===> 设置此规则之数据包的来源地,可以为IP(如192.168.1.1)或网络(如192.168.1.0/24或192.168.1.0 255.255.255.0)
-d ===> 设置此规则之数据包的目标IP或网络
-j ===> 后面接操作,ACCEPT(接受),DROP(丢弃),REJECT(拒绝),LOG(记录)
注意:如果没有设置某个参数,则代表无论该参数代表的值为何值都接受
eg:
(1).
iptables -A INPUT -i lo -j ACCEPT
该命令的意思是:设置lo成为受信任的设备,亦即进入和出去lo的数据都予以接受。
(2).
iptables -A INPUT -i eth1 -j ACCEPT
该命令的意思是:设置eth1网卡为信任网卡。即该网卡没有任何防备。
5.TCP、UDP的规则比对:针对端口设置
iptables [-A/I 链] [-i/o 网络接口] [-p tcp,udp] [-s 来源IP/网络] [--sport 端口范围] [-d 目标IP/网络] [--dport 端口范围] -j [ACCEPT|DROP|REJECT]
--sport ===> 端口范围,限制来源的端口号码
--dport ===> 端口范围,限制目标的端口号码
注意:因为仅有tcp与udp数据包具有端口,因此要想使用--dport,sport时,需要加上-p tcp或-p udp的参数才会成功
eg:将想要连接进入本机port 21的数据包全部阻挡
iptables -A INPUT -i ens33 -p tcp --dport 21 -j DROP
6.特殊标志,对主动连接SYN的处理
eg:
将来自任何地方来源port 1:1023的主动连接到本机端的 1:1023连接丢弃
iptables -A INPUT -i ens33 -p tcp --sport 1:2023 --dport 1:1023 --syn -j DROP
注意:一般来说,客户端启用的port都大于1024,而服务器端启用的端口都小于1023。
7.iptables外挂模块:mac与state
iptables -A INPUT [-m state] [--state 状态]
-m ===> 接iptables的外挂模块
常见的外挂模块有:
state:状态模块
mac:网卡硬件地址
--state ===> 接数据包的状态
常见状态主要有:
INVALID:无效的数据包
ESTABLISHED:已经连接成功的连接状态
NEW:想要新建立连接的数据包状态
RELATED:表示这个数据包是与主机发送出去的数据包有关
eg:
(1).只要已建立连接或与已发出请求相关的数据包就予以通过
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(2).针对局域网内的aa:bb:cc:dd:ee:ff主机开放其连接
iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
Linux网络安全篇,认识防火墙(二),Netfilter的更多相关文章
- Linux网络安全篇,认识防火墙(一)
一.概念 防火墙分为软件防火墙和硬件防火墙.我们的主要讨论范围为软件防火墙. 软件防火墙又分为网络型和单一型的管理. 1.单一主机型防火墙 (1)数据包过滤型的Netfilter (2)依据服务软件程 ...
- Linux网络安全篇,认识防火墙(三),TCP Wrappers
1.防火墙设置文件 任何以xinetd管理的服务都可以通过 /etc/hosts.allow /etc/hosts.deny 这两个文件来设置防火墙(针对源IP或域进行允许或操作的设置). 其实/et ...
- Linux网络安全篇,配置Yum源(二),阿里Yum源
官网教程: https://opsx.alibaba.com/mirror 1.下载配置文件到 /etc/yum.repos.d 目录 wget -O /etc/yum.repos.d/CentOS- ...
- Linux网络安全篇,进入SELinux的世界(二)
一.简单的网页制作 1.启动httpd服务 /etc/init.d/httpd start 2.编写首页网页文件 echo "hello,this is my first webPage&q ...
- Linux网络安全篇,进入SELinux的世界(一)
SELinux 即安全强化的Linux. 一.基本概念 SELinux是通过MAC(强制访问控制,,可以针对特定的进程与特定的文件资源来进行访问权限的控制!也就是说即使你是root,在使用不同的进程时 ...
- Linux网络安全篇,FTP服务器的架设
一.FTP简介 FTP基于TCP协议.而且FTP服务器使用了命令通道和数据流通道两个连接.两个连接都会分别进行三次握手.在命令通道中客户端会随机取一个大于1024的端口与FTP服务器的21端口建立连接 ...
- Linux网络安全篇,进入SELinux的世界(三)
SELinux防火墙配套的服务 一.auditd 1.基本功能 将详细信息写入到 /var/log/audit/audit.log文件 2.设置开机自动启动 chkconfig --list audi ...
- Linux网络安全篇,配置Yum源(一),本地Yum源
1.创建挂载目录 mkdir /mnt/cdrom 2.挂载软件源cdrom mount /dev/cdrom /mnt/cdrom/ 3.建立本地yum源资源文件夹 mkdir /usr/local ...
- Linux网络安全篇,进入SELinux的世界(四)
SELinux的策略与规则管理set 1.安装SELInux工具 yum install setools-console 2.基本的命令 seinfo [-Atrub] -A ===> 列出SE ...
随机推荐
- 一个交互式可视化Python库——Bokeh
本篇为<Python数据可视化实战>第十篇文章,我们一起学习一个交互式可视化Python库--Bokeh. Bokeh基础 Bokeh是一个专门针对Web浏览器的呈现功能的交互式可视化Py ...
- Spark入门(三)--Spark经典的单词统计
spark经典之单词统计 准备数据 既然要统计单词我们就需要一个包含一定数量的文本,我们这里选择了英文原著<GoneWithTheWind>(<飘>)的文本来做一个数据统计,看 ...
- 测试必知必会系列- Linux常用命令 - cp
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 复制文 ...
- 嵌入式LCD闪烁--emWin使用内存设备避免闪烁
0.引子 近日在论坛看到有人说屏幕闪烁,问道怎么解决.在嵌入式gui使用方面,屏幕闪烁一般多出现在多个窗口层叠.多图层层叠.更新图层时.受限于接口速度,即使屏幕有很高的刷新率,也做不到无闪烁,所以要从 ...
- Django实现简单的用户添加、删除、修改等功能
一. Django必要的知识点补充 1. templates和static文件夹及其配置 1.1 templates文件夹 所有的HTML文件默认都放在templates文件夹下. 1.2 stati ...
- PHP session反序列化
先来了解一下关于session的一些基础知识 什么是session 在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 ...
- 洛谷 P3935 Calculating 题解
原题链接 一看我感觉是个什么很难的式子-- 结果读完了才发现本质太简单. 算法一 完全按照那个题目所说的,真的把质因数分解的结果保留. 最后乘. 时间复杂度:\(O(r \sqrt{r})\). 实际 ...
- Manjaro更新后 搜狗拼音输入法突然无法正常使用
之前Manjaro已经用了很久了,很多该配置的都已经配置好了,但是搜狗拼音在系统更新后突然无法使用 1检查 如下依赖 2.检查配置文件 3.发现一切配置没问题,此时输入 sogou-qimpanel ...
- MySQL优化之慢查询日志
慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能. 慢查询日志选项默认是关闭的, ...
- MySQL的死锁系列- 锁的类型以及加锁原理
疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象: ERROR 1213 (40001): De ...