[计算机网络]十二、(网络层)防火墙以及设置防火墙的相关命令-1

目录

1、防火墙(firewall)

1.1、攻击类型

2、iptables

2.1、包过滤机制(netfilter)

2.1.1、iptables和netfilter的关系

2.2、内核态和用户态

2.3、面试问题——什么时候用户启动的进程的状态可以变成内核态?

2.4、包过滤防火墙工作在TCP/IP的网络层

3、内核是什么?

3.1、查看内核版本

4、iptables的规则表、链结构

4.1、规则链

4.2、规则表

4.3、数据包过滤匹配流程

5、管理和设置iptables规则

5.1、iptables命令管理选项

5.1.1、设置规则内容

5.1.2、列表查看规则

5.1.3、设置规则内容

5.1.4、清除规则

5.1.5、自定义规则链

5.1.6、其他

5.2、设置匹配数据包的条件

5.2.1、通用条件匹配

5.2.2、隐含条件匹配

5.2.3、显式条件匹配


1、防火墙(firewall)

只是充当保安的工作,并不能够杀死 病毒

主要的功能:保护安全,隔离防火墙认为有危害的数据

1.1、攻击类型

  • ddos攻击(Distributed Denial of Serivice,分布式拒绝服务攻击):人为攻击,一般指分布式拒绝服务攻击。这个攻击很难防,因为有很多IP地址进行攻击,很难找到它的所有IP地址。

CC(Challenge Collapsar):攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装

  • dos攻击(Denial of Service,即拒绝服务):将对方的机器的cpu、内存、带宽、磁盘IO等资源消耗殆尽,不能继续为后边的新用户提供服务

解决办法:

  • 加服务器
  • 购买专业的流量清洗服务
  • 报警
  • 封IP

2、iptables

是linux里的一个软件防火墙工具。实际生活中还有硬件防火墙。

  • 位于"/sbin/iptables",是用来管理防火墙的命令工具
  • 为防火墙体系提供过滤规则/策略,决定如何过滤和处理到达防火墙的数据包
  • 称为Linux防火墙的"用户态"

2.1、包过滤机制(netfilter)

位于Linux内核中的包过滤防火墙功能体系,称为linux防火墙的“内核态”

2.1.1、iptables和netfilter的关系

iptables,给内核里的netfilter传递参数的工具,与人打交道,人把规则告诉iptables,iptables拿到规则之后,传递给netfilter

2.2、内核态和用户态

内核态:工作在内核空间里的进程的状态

用户态:工作在用户空间里的进程状态

用户态的进程不能够访问内核空间,内核态的进程可以访问用户空间

2.3、面试问题——什么时候用户启动的进程的状态可以变成内核态?

  • 系统调用的时候
  • 中断的时候:硬件出现问题的(异常)、IO(input output)的时候(网络IO、磁盘IO)

进程在运行状态的时候被打断终止了,内核的代码把进程中断的。

2.4、包过滤防火墙工作在TCP/IP的网络层

3、内核是什么?

内核(kernel):是linux操作系统内部最核心的软件

作用:是和硬件打交道的

  • 对cpu进行调度管理
  • 对内存空间进行分配和管理
  • 对进程进行管理
  • 对磁盘里的文件系统进行管理
  • 对网络进行管理
  • 其他硬件进行管理

3.1、查看内核版本

[root@fttsaxf ~]# uname -r
3.10.0-1160.el7.x86_64
[root@fttsaxf ~]# uname -a
Linux fttsaxf 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

centos版本越高,内核版本越高,功能越强大,bug越少。

[root@fttsaxf ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

4、iptables的规则表、链结构

iptables区分大小写,所以写规则表和规则链的时候要注意大写。

4.1、规则链

🦖[规则链]🦖

[默认的5种规则链](牢记)

🚀[情景记忆:五虎上将图]🚀 

下面给出一个情景来记这个五种规则链

刘贤是客户端,刘备是进程。客户端访问本机的进程的端口要经过这套体系的过滤。当我们要访问本机的进程(就是刺客进皇宫);若是只是访问局域网中其他的机器,本机做路由器来用的(就走城市街道)。这些线路都是单向的线路,不能够返回的。

若是要访问本机的数据,只需要守住INPUT链就行了

🍓[FORWARD]🍓 

[root@fttsaxf ~]# cat /proc/sys/net/ipv4/ip_forward
0
# 要这个值为1,FORWARD这里才能够发挥作用

# 修改这个值
# 临时修改
[root@fttsaxf ~]# echo 1 >/proc/sys/net/ipv4/ip_forward

# 永久修改,修改"/etc/sysctl.conf"文件,在末尾追加"net.ipv4.ip_forward = 1"这个命令,然后使用"sysctl -p",让内核重新读取这个参数,就能够生效了,即开启路由功能

4.2、规则表

🦖[规则表]🦖

⭐[默认的4个规则表]⭐(牢记)

🍓[filter表]🍓⭐⭐⭐⭐,表示常用

在上边五虎上将图中,要在必经之地做过滤,即皇宫入口(INPUT)、皇宫出口(OUTPUT)和城市街道(FORWARD)

图片解释: policy是策略,规则 ;target是目标;prot是协议;opt是选项;source是源;destination是目的地

🍓[nat表]🍓⭐⭐⭐

作用:可以修改IPi地址和端口号

🍓[raw表]🍓

作用:记录状态,是新的数据包(SYN),还是旧的数据包(状态是ESTAB-LISHED)

实例: 

vsftpd有两个端口,在主动模式中端口号是(21[命令连接:传输命令]和20[数据连接:传输数据]);在被动模式中,客户访问的时候,首先访问的命令端口(21),但是数据端口是不定的。若是只允许客户机访问vsftpd服务,在主动模式中,数据端口是从20开始发的,20和21是固定死的,所以只需要只允许客户机访问20和21号端口就行了;被动模式中,数据端口是随机产生的,所以要是用端口号来限制,就很难限制,所以要用状态机制,只有建立了ESTAB-LISHED才能访问,其他的就不允许访问。

🍓[mangle表]🍓

作用:给数据包里插入标记

实例:把访问了80端口的IP地址都记录下来,并且放进日志中,这就需要mangle表来打标记了。

4.3、数据包过滤匹配流程

规则表间的优先顺序:raw、mangle、nat、filter

规则链内的匹配顺序:

  • 按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)
  • 若在该链内找不到相匹配的规则,则按该链的默认策略(policy ACCEPT)处理 

🍓[测试1]🍓

🍓[测试2,找不到匹配规则,就按默认的策略处理]🍓

这是这台机器的端口号 

 ​​​​

 

这个时候,外部的人是不能ping通自己的 

 ===============================================================

 

修改规则之后,外部的人就能ping通自己了 

注意,若是这个时候使用"iptables -F",清除规则(不会把默认规则DROP改为ACCEPT)之后,我们会因为"iptables -P INPUT DROP",导致ssh连接失效。这个时候,我们只要在VMware中使用"iptables -P INPUT ACCEPT"这条命令,xshell又能重新连接了。或者使用另外一种方法,使用计划任务,执行一个里边包含"iptables -P INPUT ACCEPT"这条命令的脚本。例如,

[root@fttsaxf rough_book]# cat clear_iptables.sh 
#!/bin/bash

iptables -F -t filter
iptables -F -t nat

iptables -P INPUT ACCEPT

计划任务的日志文件是"/var/log/cron"。

若是你执行计划任务的时候出现了没有改为ACCEPT,你可以看一下"/var/log/cron"这个文件

若是出现这样的错误,你要在脚本中用iptables命令的绝对路径来书写命令,这样就能成功。其他的命令若是也出现了这种错误,也可以以此类推。

🍓[数据包过滤匹配流程]🍓

路由选择是根据IP包里边的目的IP来决定的

5、管理和设置iptables规则

iptables命令的语法格式

链名需要大写;

目标动作有:

  • ACCEPT

接受数据

  • DROP

不给任何回复,直接丢弃

  • REJECT

给不能到达的回复,虽然拒绝了,但是给了回复

🍓[注意事项]🍓

  • 不指定表名时,默认表示filter表

  • 不指定链名时,默认表示该表内所有链
  • 除非设置规则链的缺省策略,否则需要指定匹配条件

5.1、iptables命令管理选项

写规则的时候,最好写成脚本

5.1.1、设置规则内容

5.1.2、列表查看规则

  

5.1.3、设置规则内容

INPUT表后边接数字就就是表示插到第几行。这个规则内容可以跟着敲。多练练手!

[root@fttsaxf rough_book]# cat iptables.sh 
#!/bin/bash

iptables -F
iptables -t filter -A INPUT -p tcp -j ACCEPT
iptables -I INPUT -p udp -j ACCEPT
iptables -I INPUT 2 -p icmp -j ACCEPT
iptables -P INPUT DROP
iptables -L INPUT --line

敲完了嘛,敲完了。之后你试试"iptables -F",清除规则看看呢?

敲完之后,是否发现你的xshell动不了了呢? 那么怎么解决这个问题,那就要靠友友们自己在博客前边的内容里发现了,这里就不做提及了。 

5.1.4、清除规则

 

5.1.5、自定义规则链

 

🚀[创建一个链"sanchuang" ]🚀

🚀[那么怎么让自定义的链生效呢?]🚀

把INPUT表中icmp协议的规则交给sanchuang来管理

新建和应用自定义链一个命令完成

[root@fttsaxf ~]# iptables -t filter -A sanchuang -p icmp -j DROP

🚀[删除自定义链]🚀

 

只有这样再使用"iptables -X sanchuang"才能把这条自定义链删除。

5.1.6、其他

5.2、设置匹配数据包的条件

  • 通用条件匹配

  • 隐含条件匹配

  • 显式条件匹配

5.2.1、通用条件匹配

🍓[协议匹配]🍓

🍓[地址匹配]🍓

🍓[接口匹配]🍓

5.2.2、隐含条件匹配

🍓[端口匹配]🍓

端口号一定要指明是哪个协议,不然会报错的

🍓[TCP标记匹配]🍓

🍓[ICMP类型匹配]🍓

5.2.3、显式条件匹配

🍓[MAC地址匹配]🍓

🍓[多端口匹配]🍓

🍓[IP地址范围匹配]🍓

🦖[例子]🦖 

5.3、导入、导出防火墙规则

🍓[导出规则]🍓

  • iptables-save
  • 结合重定向输出">"符号保存规则信息

🍓[导入规则]🍓

  • iptables-restore
  • 结合重定向输入"<"符号恢复规则信息

 5.3.1、开机自动加载我们的iptables规则

(1)开机执行脚本

修改"/etc/rc.local"文件,这是一个脚本文件,里边存放需要开机自动运行的命令。在这个文件里边加入"bash iptables.sh",并且给这个文件可执行权限,就能实现开机自动加载我们的iptables规则。

[root@fttsaxf rough_book]# cat iptables.sh 
#!/bin/bash

iptables -F
iptables -t filter -A INPUT -p tcp -j ACCEPT
iptables -I INPUT -p udp -j ACCEPT
iptables -I INPUT 2 -p icmp -j ACCEPT
iptables -P INPUT DROP
iptables -L INPUT --line
[root@fttsaxf rough_book]# chmod +x /etc/rc.d/rc.local  # 可能看到这,很多小伙伴就要问了不是给"/etc/rc.local"赋予可执行权限吗?怎么这里不是这个文件呢?因为这是一个链接文件
[root@fttsaxf ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 11月 20 17:32 /etc/rc.local -> rc.d/rc.local
[root@fttsaxf ~]# vim /etc/rc.local 

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
bash /root/linux/rough_book/iptables.sh

(2)iptables-restore恢复

仍然是修改"/etc/rc.local"文件,添加命令"iptables-restore < /root/linux/rough_book/iptables.rule',并且给"/etc/rc.local"文件可执行权限

# iptables.rule是之前规则导入的文件
[root@fttsaxf rough_book]# ls
clear_iptables.sh  iptables.rule  iptables.sh
[root@fttsaxf ~]# vim /etc/rc.local 

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
iptables-restore < /root/linux/rough_book/iptables.rule

5.4、ko结尾的文件

内核里的一些库文件,是动态加载的。即需要的时候就加载到内存里。

[root@fttsaxf netfilter]# ls |head -10
ipset
ipvs
nf_conntrack_amanda.ko.xz
nf_conntrack_broadcast.ko.xz
nf_conntrack_ftp.ko.xz
nf_conntrack_h323.ko.xz
nf_conntrack_irc.ko.xz
nf_conntrack.ko.xz
nf_conntrack_netbios_ns.ko.xz
nf_conntrack_netlink.ko.xz
[root@fttsaxf netfilter]# pwd
/usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/net/netfilter

5.4.1、查看内核里加载了哪些模块

[root@fttsaxf netfilter]# lsmod|head -5
Module                  Size  Used by
binfmt_misc            17468  1 
ip6t_rpfilter          12595  1 
ip6t_REJECT            12625  2 
nf_reject_ipv6         13717  1 ip6t_REJECT

5.4.2、加载内核模块

[root@fttsaxf netfilter]# modprobe nf_conntrack_ftp

# 这个模块的名字就是"ko"前边的名字。例如该例题,nf_conntrack_amanda.ko.xz

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FanMY_71

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值