iptables防火墙

安全技术和防火墙:

一、安全技术

入侵检测系统:特点是不阻断网络访问,主要是提供报警和事后监督。不主动介入,默默的看着你(监控)

入侵防御系统:透明模式工作,数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞等等进行准确的分析和判断在判定为攻击行为会立即阻断,主动的防御(所有的数据在进入本机之前,必须要通过的设备或者软件)

防火墙:隔离,工作在网络或者主机的边缘 (处于内网和外网的中间)

对网络或者主机的数据包基于一定的规则进行检查。匹配到的规则

放行 ,拒绝 (数据包将会被丢弃)

只开放允许访问的策略(白名单机制 拒绝所有,允许个别)

防水墙:是一种防止内部信息泄露的产品,对外有防火墙的功能,对内是透明模式工作。类似监控

事前,事中,事后都知道

防火墙:

iptables 这个linux自带的防火墙,一般用于内部配置。对外一般不适用(对外都使用专业的。)

firewalld linux自带的防火墙。centos7以后默认的防火墙。功能和iptables一样

包过滤防火墙(数据包进行控制)

网络层对数据包进行选择,选择的依据是防火墙设置的策略

策略:IP地址 ,端口 ,协议。

优点:处理速度块,易于维护

缺点:无法检查应用层数据,病毒无法进行处理

应用层防火墙:在应用层对数据进行检查 比较安全

优点是更安全,问题可以精准定位

缺点:所有数据都会检查 增加防火墙的负载

iptables :工作在网络层,针对数据包实施过滤和限制。包括过滤防火墙

通信的要素 :五大要素和四大要素 面试题

五大要素:源ip 目的ip 源端口 目的端口 协议(TCP/UDP)

四要素:源ip 目的ip 源端口 目的端口 协议

内核态和用户态

内核态:涉及到软件的底层代码或者是系统的基层逻辑,以及一些硬件的编码

开发人员更关注内核态

数据如果是内核态处理,速度相对较快

iptables的过滤规则就是由内核来进行控制

用户态:

应用层软件层面,人为控制的一系列操作,使用功能

运维人员我们只考虑用户态 用

数据只由用户态处理速度是比较慢的

面试题

ipatables的配置和策略

四表五链:

iptables的

四表:

raw表------------同于控制数据包的状态,可以跟踪数据包的状态

mangle表------------可以用来修改数据包的头部信息

NAT 表------------网络地址转换,可以改变数据包的源地址和目的地址

filter------------也是iptables的默认表不做声明 默认就是filter表 主要作用 过滤数据包 控制数据包的进出 以及接受和拒绝数据包

五链:链名大写

PREROUTING链:处理数据包进入本机之前二点规则(NAT表)

input链 :处理数据包进入本机之前的预测

output链:处理本机发出的数据包的规则,或者是数据包离开的本机的规则 (一般都是放行 不做约束)

forward : 处理数据包转发到其他主机的规则 或者是否允许本机进行数据包转发

pastrouting链:处理数据包离开本机之后的规则(NAT表)

表里有链,链里由面有规则

管理选项:在表的链中插入,增加,删除,查看规则

匹配的条件:数据包的ip地址,端口,协议

控制类型:允许,拒绝(丢弃)

注意事项:

1、不指定表名 默认就是filter表

2、不指定链名 默认就是所有链(禁止行为) 可以不指定表一定要指定链

3、除非设置了链的默认策略,否则必须指定匹配条件

4、选项,链名和控制类型都是大写,其余都是小写

控制类型 都要大写 都用-j

ACCEPT:允许数据包通过

DROP:直接丢弃数据包不给任何回应信息

REJECT:拒绝数据包通过,数据包也会被丢弃,但是会有一个响应的信息

SNAT: 修改数据包的源地址source

DNAT:修改数据包的目的地址

管理选项(增删改查):

-t 指定表名

-A 在链中添加一条规则,在链尾添加

-I 指定位置插入一条规则

-P 指定链的默认规则 链的规则一般都是拒绝(iptables默认是允许)

-D 删除规则

-R 修改规则 (慎用)一般不用一般删除重新添加

-vnL v显示详细信息 n数字形式展示内容 L查看

--line-numbers:显示规则的编号,和查看一起使用

-F:清空链中的所有规则 (慎用)

-X: 清楚自定义链中的规则

匹配条件:

-p:指定协议类型

-s:指定匹配的源ip地址

-d:指定匹配的目的ip地址

-i: 指定数据包进入本机的网络设备 (ens33 网卡)

-o:指定数据包离开本机的网络设备 (ens33 网卡)

--sport:指定源端口

--dport :指定目的端口

iptables的命令格式

iptables-t 表名管理选项 链名(大写)匹配条件 -j 控制类型 所有的控制类型前都用-j

匹配规则

每个链中的规则都是从上到下的顺序匹配,匹配到之后就不再向下匹配

如果链中没有规则,则执行链的默认策略

禁止ping

ssh限制登录

禁止访问nginx

删除

iptables -D +链+序号

修改策略

拒绝整个网段

一次性对多个端口进行操作

-m 使用拓展模块,一次性禁止多端口,ip范围,指定mac地址

multiport多端口

iprange ip范围

mac地址

alias wangka='vim /etc/sysconfig/network-scripts/ifcfg-ens33'

ctrl+alt 可以随意取

规则永久生效

自定义链

snat和dnat:

snat: 源地址转换

内网-----外网 内网ip转换成可以访问外网的ip

内网的多个主机可以只有一个有效的公网ip地址访问外部网络

DNAT:目的地址转发

外部用户,可以通过一个公网地址访问服务内部的私网服务

私网的ip

在linux当中如何抓包

tcpdump就是linux自带的抓包工具(最小化安装是不带的需额外安装)

tcpdump tcp =i ens33 -t -s0 and dst port 80 and src net 192.168.183.0/24 -w/opt/target.cap

tcp指定抓包协议 udp icmp 第一个参数可以不指定协议

-i 只抓经过指定设备的包

-t 不显示时间戳

-s0 抓完整的数据包

-c 10 抓几个数据包 10个

dst port 指定抓包的目的端口

src net 192.168.183.0/24 指定抓包的ip地址

net 网段

host (主机 ip地址)

src host 192.168.183.10 不能是网段了

-w 保存指定路径

sz ens33.cap下载到桌面

如果要用wireshark对数据包进行分析 tcpdumo抓包的时候,要使用-s0抓取完成格式,否则wireshark无法分析

ubanut 关防火墙

ufw disable

ubantu ufw iptables

他和iptables一样也是包过滤防火墙

ip

端口

协议

firewalld是按照区域来进行划分:

public:公共区域 默认配置了ssh以及DHCPv6预定服务是放通的,其他全部都是拒绝 默认区域

trusted: 信任区域,允许所有的数据包放通

block:限制区域,拒绝所有

drop:丢弃区域 丢弃所有数据包

dmz: 非军事区域,默认就只允许ssh通过

home :家庭区域,默认只允许ssh通过

internal :内部区域和home一摸一样

external :外部区域 也是默认允许ssh通过其他的全部拒绝

work:工作区域默认放通ssh

firewall-cmd #命令行工具

firewall-cmd --get-default -zone#查看当前系统的默认区域

firewall -cmd --set -default -zone=block #切换区域

firewall -cmd --list-all

#查看区域内允许访问的服务

firewall-cmd --list-services

dhcpv6 -client #获取ipv6地址

interfaces :

firewall -cmd --zone=public --change -interface =ens36#添加网卡

#添加网卡会默认的把网卡添加到区域中去

firewall -cmd --add -service=http --zone=publice

firewall -cmd --add-service={ftp,nfs,http} --zone=public --permanent

firewall -cmd --reload

firewall -cmd --remove-service={ftp,nfs,http} --zone=public --permanent

firewall-cmd--zone=public --add-port=80/tcp

firewall -cmd --add-port={21,80,24,3306,25,26}/tcp

实验

test1 :20.0.0.10 ,nginx服务

test2 :两个网卡设备:

  • ens33:20.0.0.254(私网的网关)

  • ens36:12.0.0.254(用来模拟test3的地址是公网地址)

  • 模拟test1的公网IP :10.0.0.10(test1的地址转换成10.0.0.10和test3进行通信)

test3 :12.0.0.10 ,nginx服务

要求:在test2上配置防火墙,使test1作为私网地址,test3作为公网地址,观察双方获取对方web服务时,/var/log/nginx/access.log中记录的访问主机地址,理解NAT的工作方式。

对test1,test2,test3的IP地址分别设置。其中test2两个网卡的IP地址分别作为test1和test3的网关地址。

对test2:

Linux 内核参数的配置文件/etc/sysctl.conf

复制代码
vim /etc/sysctl.conf
#在配置文件中添加行
net.ipv4.ip_forward=1
#开启ipv4的转发功能
#保存退出
sysctl -p
#使内核参数的配置立刻生效

源地址转换:

复制代码
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10
  • -t nat :指定表为nat表

  • -A POSTROUTING :添加规则到链

  • -s 20.0.0.0/24 :指定网段

  • -o :指定输出设备

  • -j SNAT :指定控制参数SNAT

  • --to 10.0.0.10 :20.0.0.0/24网段的源地址转换为10.0.0.10这个公网IP地址

目的地址转换:

复制代码
iptables -t nat -A PREROUTING -d 10.0.0.10 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80
  • -d 10.0.0.10 :指定作为目的地址转换的IP地址

  • -i :从指定设备进入本机

  • -p :指定协议

  • --dport :指定端口

  • -j DNAT :使用目的地址转换

  • --to 20.0.0.10:80 :外网想要访问内网的20.0.0.10:80(端口号80也可以不加)的web服务,只需要访问公网的10.0.0.10这个IP地址。

相关推荐
夜听莺儿鸣10 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP11 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
向成科技12 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
Fcy64812 小时前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
码农小韩13 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论
well061213 小时前
Linux粘滞位与Makefile机制深度解析
linux·运维·服务器
再写一行代码就下班13 小时前
linux sh脚本在windows修改导致无法使用解决方式
java·linux·centos
额额额对了13 小时前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
子木HAPPY阳VIP14 小时前
Ubuntu 关闭防火墙操作步骤
linux·运维·ubuntu
王振超wzc14 小时前
嵌入式开发环境搭建--WM软件安装,Ubuntu操作系统安装
linux·运维·ubuntu