linux安全

这里写目录标题

  • 一.安全技术和防火墙
    • 1 安全技术
    • 2.防火墙的分类
  • 二.firewalld服务
    • 1.firewalld 介绍
    • 2.归入zone顺序
    • 3.命令行配置
      • 3.1.基础命令
      • 3.2.查看现有firewall设置
      • 3.3.设置查看默认区
      • 3.4.添加源地址(网段)及端口 及服务
  • 三.iptables
    • 1.iptables的组成概述
    • 2.实际操作
      • 查看
      • 删除、清空规则
  • 四.band
    • 1.命令过程
    • 2.脚本设置
  • 五.S/DNAT策略与应用过程
    • 1.SNAT
    • 2.DNAT
  • 六.tcpdump—Linux抓包

一.安全技术和防火墙

1 安全技术

-入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

  • 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)
  • 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中.

2.防火墙的分类

按保护范围划分:

  • 主机防火墙:服务范围为当前一台主机
  • 网络防火墙:服务范围为防火墙一侧的局域网

按实现方式划分:

  • 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等
  • 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

TMG
按网络协议划分:

  • 网络层防火墙:OSI模型下四层,又称为包过滤防火墙
  • 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

二.firewalld服务

1.firewalld 介绍

firewalld是CentOS 7.0新推出的管理netfilter的用户空间软件工具,也被ubuntu18.04版以上所支持(apt install firewalld安装即可)
firewalld是配置和监控防火墙规则的系统守护进程。可以实iptables,ip6tables,ebtables的功能firewalld服务由firewalld包提供

2.归入zone顺序

  • 先根据数据包中源地址,将其纳为某个zone
  • 纳为网络接口所属zone
  • 纳入默认zone,默认为public zone,管理员可以改为其它zone
  • 网卡默认属于public zone,lo网络接口属于trusted zone

firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则

  1. 已经存在了zone区域
  2. 使用firewall,就是将特定的流量关联到某个zone中
  • 通过源网段关联zone
  • 通过网卡关联zone区域
  • 如果两者都没有关联的数据报文,那就会去default zone
    3.进入到zone以后,开始匹配zone内的规则
    firewalld zone 分类
zone名称 默认配置
trusted 允许所有流量
home 拒绝除和传出流量相关的,以及ssh,mdsn,ipp-client,samba-client,dhcpv6-client预 定义服务之外其它所有传入流量
internal 和home相同
work 拒绝除和传出流量相关的,以及ssh,ipp-client,dhcpv6-client预定义服务之外的其它所有传入流量
public 拒绝除和传出流量相关的,以及ssh,dhcpv6-client预定义服务之外的其它所有传入流 量,新加的网卡默认属于public zone
external 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量,属于external zone的传出ipv4流量的源地址将被伪装为传出网卡的地址。
dmz 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量
block 拒绝除和传出流量相关的所有传入流量
drop 拒绝除和传出流量相关的所有传入流量(甚至不以ICMP错误进行回应)

预定义服务

服务名称 配置
ssh Local SSH server. Traffic to 22/tcp
dhcpv6- client Local DHCPv6 client. Traffic to 546/udp on the fe80::/64 IPv6 network
ipp- client Local IPP printing. Traffic to 631/udp.
samba- client Local Windows file and print sharing client. Traffic to 137/udp and 138/udp.
mdns Multicast DNS (mDNS) local-link name resolution. Traffic to 5353/udp to the 224.0.0.251 (IPv4) or ff02::fb (IPv6) multicast addresses.

firewalld 两种配置方法

  • firewall-config 图形工具: 需安装 firewall-config包
  • firewall-cmd 命令行工具: firewalld包,默认安装
  • 可以打开 Xmanager - Passive
`[root@localhost ~]# export DISPLAY=192.168.133.1:0.0
###ip地址为自己的Windows地址
[root@localhost ~]# firewall-config`

3.命令行配置

3.1.基础命令

firewall-cmd [OPTIONS...]
firewall-cmd   
#基础命令
--permanent
#设置永久生效
--add-port=端口号/协议(tcp/udp) 
设置端口号和协议
--reload
#重新加载防火墙设置
--remove
#移除规则
--get-zones 列出所有可用区域
--get-default-zone 查询默认区域
--set-default-zone=<ZONE> 设置默认区域
--get-active-zones 列出当前正使用的区域
--add-source=<CIDR>[--zone=<ZONE>] 添加源地址的流量到指定区域,如果无--zone= 选项,使用
默认区域
--remove-source=<CIDR> [--zone=<ZONE>] 从指定区域删除源地址的流量,如无--zone= 选项,
使用默认区域
--add-interface=<INTERFACE>[--zone=<ZONE>] 添加来自于指定接口的流量到特定区域,如果无--
zone= 选项,使用默认区域
--change-interface=<INTERFACE>[--zone=<ZONE>] 改变指定接口至新的区域,如果无--zone=
选项,使用默认区域
--add-service=<SERVICE> [--zone=<ZONE>] 允许服务的流量通过,如果无--zone= 选项,使用默
认区域
--add-port=<PORT/PROTOCOL>[--zone=<ZONE>] 允许指定端口和协议的流量,如果无--zone= 选
项,使用默认区域
--remove-service=<SERVICE> [--zone=<ZONE>] 从区域中删除指定服务,禁止该服务流量,如果
无--zone= 选项,使用默认区域
--remove-port=<PORT/PROTOCOL>[--zone=<ZONE>] 从区域中删除指定端口和协议,禁止该端口
的流量,如果无--zone= 选项,使用默认区域
--reload 删除当前运行时配置,应用加载永久配置
--list-services 查看开放的服务
--list-ports   查看开放的端口
--list-all [--zone=<ZONE>] 列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如
果无--zone= 选项,使用默认区域

3.2.查看现有firewall设置

[root@localhost ~]#systemctl status firewalld
#查看状态
[root@localhost ~]#firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

3.3.设置查看默认区

[root@localhost ~]#firewall-cmd --zone=
#查看区域
block     dmz       drop      external  home      internal  public    trusted   work
[root@localhost ~]#firewall-cmd --get-default-zone 
#查看默认区域

3.4.添加源地址(网段)及端口 及服务

[root@localhost ~]#firewall-cmd --permanent --add-port=80/tcp
#添加80端口
[root@localhost ~]#firewall-cmd --permanent --add-port=80/tcp --zone=home 
#可以指定区域
success
[root@localhost ~]#firewall-cmd --add-service=http
#允许http服务
[root@localhost ~]#firewall-cmd --permanent --add-icmp-block=echo-request
#禁止ping
success
[root@localhost ~]#firewall-cmd --permanent --add-source=192.168.100.0/24
#					基础命令       永久生效      添加 源      网段     子网掩码

三.iptables

1.iptables的组成概述

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。
netfilter/iptables:IP 信息包过滤系统,它实际上由两个组件 netfilter 和 iptables组成。
主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理。

-netfilter/iptables关系:
netfilter:
属于“内核态”又称内核空间(kernel space)的防火墙功能体系。linux 好多东西都是内核态 用户态,那我们运维人员关注的是用户态, 内核我们关注不是很多,内核基本是我们开发人员关心的事情是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables :
属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。
netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

ptables由五个表table和五个链chain以及一些规则组成
linux安全_第1张图片

INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

filter、nat、mangle、raw、security
security -->raw–>mangle–>nat–>filter
linux安全_第2张图片

2.实际操作

CentOS7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables
语法格式

iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
linux安全_第3张图片

  • ACCEPT:允许数据包通过。
  • DROP:直接丢弃数据包,不给出任何回 应信息。
  • REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。
管理选项 用法示例
-A 在指定链末尾追加一条 iptables -A INPUT (操作)
-I 在指定链中插入一条新的,未指定序号默认作为第一条 iptables -I INPUT (操作)
-P 指定默认规则 iptables -P OUTPUT ACCEPT (操作)
-D 删除 iptables -t nat -D INPUT (操作)
-p 服务名称
-R 修改、替换某一条规则 iptables -t nat -R INPUT (操作)
-L 查看 iptables -t nat -L (查看)
-n 所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL (查看)
-v 查看时显示更详细信息,常跟-L一起使用 (查看)
–line-number 规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number
-F 清除链中所有规则 iptables -F (操作)
-X 清空自定义链的规则,不影响其他链 iptables -X
-Z 清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-S 查看链的所有规则或者某个链的规则/某个具体规则后面跟编号
参数 功能
[!]-p 匹配协议,! 表示取反
[!]-s 匹配源地址
[!]-d 匹配目标地址
[!]-i 匹配入站网卡接口
[!]-o 匹配出站网卡接口
[!]–sport 匹配源端口
[!]–dport 匹配目标端口
[!]–src-range 匹配源地址范围
[!]–dst-range 匹配目标地址范围
[!]–limit 四配数据表速率
[!]–mac-source 匹配源MAC地址
[!]–sports 匹配源端口
[!]–dports 匹配目标端口
[!]–stste 匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
[!]–string 匹配应用层字串

添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。

查看

查看已有的防火墙规则时,使用管理选项“-L”,结合“–line-numbers”选项还可显示各条规则在链内的顺序号。例如,若要查看 filter 表 INPUT 链中的所有规则,并显示规则序号, 可以执行以下操作
iptables [-t表名] -n -L [链名] |[-- line-numbers]

iptables - [vn]L
注意:不可以合写为-Ln

删除、清空规则

iptables -D INPUT 5
iptables -L INPUT --line-numbers
iptables -t filter -D INPUT -P icmp - j REJECT
清空指定链或表中的所有防火墙规则,使用管理选项“-F”。例如,若要清空 filter 表 INPUT 
链中的所有规则,可以执行以下操作。

[root@localhost ~]# iptables -F INPUT
[root@localhost ~]# iptables -nL INPUT

四.band

1.命令过程

nmcli connection add con-name mybond0 ifname bond0 type bond ipv4.method manual ipv4.addresses 192.168.133.50/24 mode active-backup
nmcli connection add type bond-slave ifname ens33 master bond0
nmcli connection add type bond-slave ifname ens37 master bond0
systemctl restart network

2.脚本设置

ifcfg-bond0
linux安全_第4张图片
ifcfg-ens37和ens33同样设置
linux安全_第5张图片
配置bonding
没有该文件就新创建一个

[root@studying network-scripts]# vim  /etc/modprobe.d/dist.conf

末尾增加以下两行

alias bond0 bonding
options bond0 miimon=100 mode=1

在/etc/rc.d/rc.local文件中加入如下语句,是系统启动自动运行

ifenslave  bond0  ens33 ens37

重启网卡前先禁用此服务

systemctl stop NetworkManager
systemctl disable NetworkManager

再重启网卡

systemctl restart network
查看结果
cat /proc/net/bonding/bond0

linux安全_第6张图片

五.S/DNAT策略与应用过程

首先设置三台虚拟机
其中一台作为服务器
四块网卡设置如下
服务器内、外网
linux安全_第7张图片
linux安全_第8张图片
外网主机网卡设置
linux安全_第9张图片
内网主机
linux安全_第10张图片
所有电脑都要安装httpd和iptables服务

 [root@localhost ~]#yum install httpd -y
 [root@localhost ~]#yum install iptables -y
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
[root@localhost ~]#systemctl start httpd
[root@localhost ~]#systemctl start iptables

在服务器上要修改个文件

[root@localhost ~]#vim /etc/sysctl.conf 

增加如下一行,让内外网连起来
linux安全_第11张图片

1.SNAT

上服务

[root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.101.0/24 -o ens39 -j SNAT --to-source 12.0.0.1

在这里插入图片描述
linux安全_第12张图片
上了服务以后
在这里插入图片描述

清空服务以后
在这里插入图片描述

2.DNAT

转换1∶ 发布内网的Web服务

#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.100.102
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80 -j DNAT --to 192.168.100.102
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80-j DNAT --to-destination 192.168.100.102

————————————————
版权声明:本文为CSDN博主「小小考拉123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_51160032/article/details/121106271

转换2∶ 发布时修改目标端口

#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 250-jDNAT --to 192.168.100.102:22
#在内网上安装httpd并开启服务
[root@localhost yum.repos.d]# yum install -y httpd
[root@localhost yum.repos.d]# systemctl start httpd
 
#关闭防火墙和selinux
[root@localhost yum.repos.d]# systemctl stop firewalld.service 
[root@localhost yum.repos.d]# setenforce 0

在网关服务器添加iptables规则

#先清空规则
[root@localhost yum.repos.d]#iptables -F -t nat
#添加规则
[root@localhost yum.repos.d]#iptables -t nat -A PREROUTING -i ens38 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.102
 
#查看规则
[root@localhost yum.repos.d]#iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            12.0.0.1             tcp dpt:80 to:192.168.100.102
 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

测试外网是否能访问内网

#在外网服务器上
[root@localhost ~]# curl 12.0.0.1
 
#在内网服务器上
[root@localhost yum.repos.d]# tail /etc/httpd/logs/access_log 
127.0.0.1 - - [02/Nov/2021:18:05:31 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"
12.0.0.100 - - [02/Nov/2021:18:19:45 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

在这里插入图片描述

六.tcpdump—Linux抓包

tcpdump tcp-i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1)tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i ens33 ∶只抓经过接口ens33的包
(3)-t ∶不显示时间戳
(4)-s 0 ∶ 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
(5)-c 100 ∶只抓取100个数据包
(6)dst port ! 22 ∶不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 ∶数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机
(8)-w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析

你可能感兴趣的:(LINUX网页服务,linux,安全,网络)