Linux基础-安全管理

linux安全管理     windows的安全靠什么?

什么是防火墙?    硬件防火墙  软件防火墙 

防火墙对数据封包取得方式来分类     

可以分为 代理服务器  proxy    封包过滤机制 IP filter

防火墙有三大基础功能:  

  • 代理服务   是一种网络服务,通常架设在路由器上面,可以完整掌控局域网对外连接
  • IP Filter  这种方式可以直接分析底层封包表头数据进行过滤,包括MAC地址,IP,TCP,UDP,ICMP等封包信息都可以进行过滤,用途非常广泛
  • 状态监控包过滤   动态服务,内网主动访问外网的请求,外网回复是可以进来的
  • 其他功能:L2-L7层防御,失陷主机检测,沙盒,waf等等 web专属防御 热点事件预警,鉴黄等等这些功能不是防火墙必须有的,甚至都是要花钱
  • 红帽系列自带的firewall
  • 红帽8是没有防火墙的图形化界面的,只能通过命令行来管理,我们也是可以安装红帽的防火墙图形化  
  • yum install -y  firewall-config
  • firewall-config    打开防火墙图形化界面
  • linux系统中的这个防火墙是软件防火墙
  • firewalld防火墙的区域:
  • firewalld中常用的区域名称及默认策略规则:

区域

默认策略规则

trusted

允许所有的数据包

home

拒绝流入的流量,除非与流出的流量相关;

而如果流量与sshmdnsipp-clientamba-clientdhcpv6-client服务相关,则允许流量

internal

等同于home区域

work

拒绝流入的流量,除非与流出的流量数相关;而如果流量与sshipp-clientdhcpv6-client服务相关,

则允许流量

public

拒绝流入的流量,除非与流出的流量相关;而如果流量与sshdhcpv6-client服务相关,则允许流量

external

拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量

dmz

拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量

block

拒绝流入的流量,除非与流出的流量相关

drop

拒绝流入的流量,除非与流出的流量相关

  • 防火墙firewall有两个应用项:
  • runtime        当前有效
  • permanent      永久有效

SCTP (Stream Control Transmission Protocol)是一种传输协议,在TCP/IP协议栈中所处的位置和TCPUDP类似,兼有TCP/UDP两者特征。SCTP是可以确保数据传输的,和TCP类似。

  • 数据包拥塞控制协议(DCCP)是一个提供双向单播拥塞控制连接的不可靠数据包传输协议,它适合传输相当大的数据量的应用,并且能在时间线和可靠性上权衡。
  • 终端管理工具   firewall-cmd命令的使用及作用:

参数

作用

--get-default-zone

查询默认的区域名称

--set-default-zone=<区域名称>

设置默认的区域,使其永久生效

--get-zones

显示可用的区域

--get-services

显示预先定义的服务

--get-active-zones

显示当前正在使用的区域与网卡名称

--add-source=

将源自此IP或子网的流量导向指定的区域

--remove-source=

不再将源自此IP或子网的流量导向某个指定区域

--add-interface=<网卡名称>

将源自该网卡的所有流量都导向某个指定区域

--change-interface=<网卡名称>

将某个网卡与区域进行关联

--list-all

显示当前区域的网卡配置参数、资源、端口以及服务等信息

--list-all-zones

显示所有区域的网卡配置参数、资源、端口以及服务等信息

--add-service=<服务名>

设置默认区域允许该服务的流量

--add-port=<端口号/协议>

设置默认区域允许该端口的流量

--remove-service=<服务名>

设置默认区域不再允许该服务的流量

--remove-port=<端口号/协议>

设置默认区域不再允许该端口的流量

--reload

永久生效的配置规则立即生效,并覆盖当前的配置规则

--panic-on

开启应急状况模式

--panic-off

关闭应急状况模式

  • 实例:
  • 1.查看firewalld服务当前所使用的区域
  • [root@localhost ~]# firewall-cmd --get-default-zonepublic
  • 2.查询ens33网卡在firewalld服务中的区域
  • [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33public
  • 3.把firewalld服务中ens33网卡的默认区域修改为external,并在系统重启后生效。分别查看当前与永久模式下的区域名称
  • [root@localhost ~]# firewall-cmd --permanent --zone=external --change-interface=ens33
  • The interface is under control of NetworkManager, setting zone to 'external'.    success
  • [root@localhost ~]# firewall-cmd --permanent --get-zone-of-interface=ens33
  • no zone
  • [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
  • external
  • 4.把firewalld服务的当前默认区域设置为public
  • [root@localhost ~]# firewall-cmd --set-default-zone=public
  • Warning: ZONE_ALREADY_SET: public    success
  • [root@localhost ~]# firewall-cmd --get-default-zone
  • public
  • 5.启动/关闭firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用)
  • [root@localhost ~]# firewall-cmd --panic-on
  • [root@localhost ~]# firewall-cmd --panic-off
  • 6.查询public区域是否允许请求SSH和HTTPS协议的流量
  • [root@localhost ~]# firewall-cmd --zone=public --query-service=ssh
  • yes
  • [root@localhost ~]# firewall-cmd --zone=public --query-service=https
  • no
  • 7.把firewalld服务中请求HTTPS协议的流量设置为永久允许,并立即生效
  • [root@localhost ~]# firewall-cmd --zone=public --add-service=https
  • success
  • [root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=https
  • success
  • [root@localhost ~]# firewall-cmd --reload
  • success
  • [root@localhost ~]# firewall-cmd --zone=public --query-service=httpsyes
  • 8.把firewalld服务中请求HTTP协议的流量设置为永久拒绝,并立即生效
  • [root@localhost ~]# firewall-cmd --zone=public --remove-service=https --permanent
  • success
  • [root@localhost ~]# firewall-cmd --reloadsuccess
  • 9.把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效
  • [root@localhost ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
  • success
  • [root@localhost ~]# firewall-cmd --zone=public --list-ports
  • 8080-8081/tcp
  • 10.把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效
  • firewall-cmd --permanent --zone=<区域> --add-forward-port=port= <源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>`
  • [root@localhost ~]# firewall-cmd --permanent --zone=public 
  • --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.91.128
  • success
  • [c:\~]$ ssh root@192.168.91.128 888Connecting to 192.168.91.128:888...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.Last login: Thu Apr 18 16:20:23 2019 from 192.168.91.1
  • [root@localhost ~]# 
  • 11.firewalld中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。比如,我们可以在firewalld服务中配置一条富规则,使其拒绝192.168.91.0/24网段的所有用户访问本机的ssh服务(22端口)
  • [root@localhost ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule \family="ipv4" \source address="192.168.91.0/24" \service name="ssh" \reject"
  • success
  • [root@localhost ~]# firewall-cmd --reload
  • success
  • [c:\~]$ ssh root@192.168.91.128Connecting to 192.168.91.128:22...Could not connect to '192.168.91.128' (port 22): Connection failed.

iptables  

其实iptables服务并不是真正的防火墙,只是用来定义防火墙功能的防火墙管理工具,将定义好的规则交给内核里面的netfilter功能,即网络过滤器来读取,从而真正实现防火墙功能

 

iptables 抵挡封包的方式:

  • 拒绝让internet 包进入linux主机的某些port
  • 拒绝让某些来源ip封包进入
  • 拒绝让带有某些flag标记的包进入
  • 分析硬件地址mac来提供服务
  • 五链  
  • iptables命令中设置了数据过滤或者是处理数据包的策略,叫做规则。将多个规则合成一个链,叫规则链,规则链则依据数据包位置不同分成5类

PREROUTING     //在进行路由判断之前所要进行的规则(DNAT/REDIRECT)

INPUT             //处理入站的数据包

OUTPUT           //处理出站的数据包

FORWARD         //处理转发的数据包

POSTROUTING     //在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)

  • 四表:

iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则。

raw

确定是否对该数据包进行状态跟踪

mangle

为数据包设置标记(较少使用)

nat

修改数据包中的源、目标IP地址或端口

filter

确定是否放行该数据包(过滤)

规则表的先后顺序:rawmanglenatfilter 

规则链的先后顺序:

入站顺序

PREROUTINGINPUT

出站顺序

OUTPUTPOSTROUTING

转发顺序

PREROUTINGFORWARDPOSTROUTING

 

 

 

 

 

 

 

 

  • iptables 命令中能常见的控制类型
  • ACCEPT    允许通过
  • LOG       记录日志,传递给下一条规则
  • REJECT     拒绝通过,可以给提示
  • DROP      直接丢弃,不给回应
  • iptables的用法格式
  • iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
  • iptables –[A|I 链] [-i|o 网络接口] [-p 协议] [-s 来源ip/网域] [-d 目标ip/网域] –j[ACCEPT|DROP]

参数

作用

-P

设置默认策略:iptables -P INPUT (DROP|ACCEPT)

-F

清空规则链

-L

查看规则链

-A

在规则链的末尾加入新规则

-I num

在规则链的头部加入新规则

-D num

删除某一条规则

-s

匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。

-d

匹配目标地址

-i 网卡名称

匹配从这块网卡流入的数据

-o 网卡名称

匹配从这块网卡流出的数据

-p

匹配协议,tcp,udp,icmp

--dport num

匹配目标端口号

--sport num

匹配来源端口号

查看规则

[root@localhost ~]# iptables [-t tables] [-L] [-nv]
参数:
-t 
后面接table,例如natfilter,如果省略,默认显示filter
-L 
列出目前的table的规则
-n 
不进行IP与主机名的反查,显示信息的速度会快很多
-v 
列出更多的信息,包括封包数,相关网络接口等

删除规则

[root@localhost ~]# iptables [-t tables] [-FXZ]
参数:
-F 
清除所有的规则
-X 
清除所有自定义规则
-Z 
将计数与流量统计清零

默认策略修改

[root@localhost ~]# iptables [-t tables] -P [链名] [ACCEPT/DROP]

    • 案例1:
    • [root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT
    • # 所有的来自 lo 这个网口的封包,都予以接受
    • [root@localhost ~]# iptables -A INPUT -s 192.168.1.200 -j ACCEPT
    • # 目标来自 192.168.1.200 这个 IP 的封包都予以接受
    • [root@localhost ~]# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
    • [root@localhost ~]# iptables -A INPUT -s 192.168.1.10 -j DROP
    • # 192.168.1.0/24 可接受,但 192.168.1.10 丢弃
    • [root@localhost ~]# iptables -L -n --line-numbers
    • Chain INPUT (policy ACCEPT)
    • num  target     prot opt source               destination         
    • 1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    • 2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    • 3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    • 4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    • 5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    • 6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    • 7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    • 8    ACCEPT     all  --  192.168.1.200        0.0.0.0/0           
    • 9    ACCEPT     all  --  192.168.1.0/24       0.0.0.0/0           
    • 10   DROP       all  --  192.168.1.10         0.0.0.0/0           
    • Chain FORWARD (policy ACCEPT)
    • num  target     prot opt source               destination         
    • 1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    • Chain OUTPUT (policy ACCEPT)
    • num  target     prot opt source               destination         
    • [root@localhost ~]# iptables -D INPUT 10
    • # 删掉INPUT中第10条规则
    • 2.Iptables 开放tcp、udp端口
    • 例:开放samba端口(udp137,138;tcp139,445)
    • [root@localhost ~]# iptables –A INPUT –i eth0 –p udp --dport 137:138 –j ACCEPT
    • [root@localhost ~]# iptables –A INPUT –i eth0 –p tcp --dport 139 –j ACCEPT
    • [root@localhost ~]# iptables –A INPUT –i eth0 –p tcp --dport 445 –j ACCEPT
    • 3.iptables匹配ICMP端口和ICMP类型
    • iptables –A INPUT –p icmp --icmp-type 类型 –j REJECT
    • 参数:--icmp-type :后面必须要接 ICMP 的封包类型,也可以使用代号,
    • 例如 8 代表 echo request 的意思。(可自查询ICMP-type对应表)
    • iptables   -A  INPUT    -p icmp   --icmp-type 8  -j  REJECT
    • iptables   -A  INPUT    -p icmp   --icmp-type echo-request  -j  REJECT
    • ICMP类型
    • TYPE CODE Description
    • 0 0 Echo Reply——回显应答(Ping应答)  
    • 3 0 Network Unreachable——网络不可达  
    • 3 1 Host Unreachable——主机不可达  
    • 3 2 Protocol Unreachable——协议不可达  
    • 3 3 Port Unreachable——端口不可达  
    • 3 4 Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特  
    • 3 5 Source routing failed——源站选路失败  
    • 3 6 Destination network unknown——目的网络未知  
    • 3 7 Destination host unknown——目的主机未知  
    • 3 8 Source host isolated (obsolete)——源主机被隔离(作废不用)  
    • 3 9 Destination network administratively prohibited——目的网络被强制禁止  
    • 3 10 Destination host administratively prohibited——目的主机被强制禁止  
    • 3 11 Network unreachable for TOS——由于服务类型TOS,网络不可达  
    • 3 12 Host unreachable for TOS——由于服务类型TOS,主机不可达  
    • 3 13 Communication administratively prohibited by filtering——由于过滤,通信被强制禁止  
    • 3 14 Host precedence violation——主机越权  
    • 3 15 Precedence cutoff in effect——优先中止生效  
    • 4 0 Source quench——源端被关闭(基本流控制)  
    • 5 0 Redirect for network——对网络重定向  
    • 5 1 Redirect for host——对主机重定向  
    • 5 2 Redirect for TOS and network——对服务类型和网络重定向  
    • 5 3 Redirect for TOS and host——对服务类型和主机重定向  
    • 8 0 Echo request——回显请求(Ping请求)  
    • 9 0 Router advertisement——路由器通告  
    • 10 0 Route solicitation——路由器请求  
    • 11 0 TTL equals 0 during transit——传输期间生存时间为0  
    • 11 1 TTL equals 0 during reassembly——在数据报组装期间生存时间为0  
    • 12 0 IP header bad (catchall error)——坏的IP首部(包括各种差错)  
    • 12 1 Required options missing——缺少必需的选项  
    • 13 0 Timestamp request (obsolete)——时间戳请求(作废不用)  
    • 14 Timestamp reply (obsolete)——时间戳应答(作废不用)  
    • 15 0 Information request (obsolete)——信息请求(作废不用)  
    • 16 0 Information reply (obsolete)——信息应答(作废不用)  
    • 17 0 Address mask request——地址掩码请求  
    • 18 0 Address mask reply——地址掩码应答
    • 4.Iptables --syn的处理方式
    • 指定TCP匹配扩展
    • 使用 --tcp-flags 选项可以根据tcp包的标志位进行过滤。
    • [root@localhost ~]# iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK SYN
    • [root@localhost ~]# iptables -A FROWARD -p tcp --tcp-flags ALL SYN,ACK
    • 上实例中第一个表示SYN、ACK、FIN的标志都检查,但是只有SYN匹配。第二个表示ALL(SYN,ACK,FIN,RST,URG,PSH)的标志都检查,但是只有设置了SYN和ACK的匹配。
    • [root@localhost ~]# iptables -A FORWARD -p tcp --syn
    • 选项--syn相当于"--tcp-flags SYN,RST,ACK SYN"的简写。
    • [root@localhost ~]# iptables -A INPUT -m 模块名 --state 状态参数:
    • -m iptables的模块 state: 状态检查 mac:网卡硬件地址
    • --state 连接追踪中的状态:        NEW: 新建立一个会话        ESTABLISHED:已建立的连接        RELATED: 有关联关系的连接        INVALID: 无法识别的连接
    • [root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT    
    • # 放行ssh的首次连接状态
    • [root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0C:29:56:A6:A2 -j ACCEPT
    • # 对局域网内mac地址为00:0C:29:56:A6:A2主机开放其联机
    • 本地端口转发
    • [root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 6666 -j REDIRECT --to-port 22
    • iptables保存和恢复
    • iptables-save   >    /etc/sysconfig/iptables       保存
    • iptables-restore  /etc/sysconfig/iptables         恢复
上一篇:Spring Boot切换为APR模式


下一篇:fail2ban安装与配置操作实例