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的工作方式。

test1test2test3的IP地址分别设置。其中test2两个网卡的IP地址分别作为test1test3的网关地址。

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.1020.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地址。

相关推荐
梅见十柒7 分钟前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Koi慢热10 分钟前
路由基础(全)
linux·网络·网络协议·安全
传而习乎20 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
我们的五年30 分钟前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
IT果果日记1 小时前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教1 小时前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特1 小时前
环境变量简介
linux
小陈phd2 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
是阿建吖!2 小时前
【Linux】进程状态
linux·运维
明明跟你说过2 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump