保障4-0416任务打卡

任务列表:
10.12 firewalld和netfilter
10.13 netfilter5表5链介绍
10.14 iptables语法
10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用

10.12 firewalld和netfilter

10.12.1 临时关闭selinux

setenforce 0

10.12.2 永久关闭selinux

  • 编辑/etc/selinux/config文件
    vi /etc/selinux/config
  • 10-28.png
  • selinux的三种状态:
    enforcing 打开
    permissive 警告触碰selinux规则的内容。会单独记录到一个文件。
    disable 关闭
    可以通过getenforce 命令查看。

10.12.3 netfilter与firewalld

  • CentOS7之前使用netfliter,之后使用firewalld服务。
  • 如何在CentOS7关闭firewall,使用netfliter
systemctl disable firewalld #禁止开机启动
systemctl stop firewalld #停止服务  
yum install -y iptables-services #安装netfilter
systemctl enable iptables #设置开机启动
systemctl start iptables #启动netfilter服务
  • 查看iptables规则
    10-29.png
  • netfilter是防火墙的名称,区别与firewalld。iptables是它的一个工具。

10.13 netfilter5表5链介绍

10.13.1 netfilter的五个表

  • filter:
    默认的表,包含了三个链:INPUT(数据包进入时经过的链) FORWARD(转发链) OUTPUT(本机产生的包出口链)
  • nat:
    地址转发表,包含了三个链: PEROUTING(路由前匹配的链) POSTROUTING(路由后匹配的链) OUTPUT(同上)
  • 链与表的关系
    10-27.png

10.14 iptables语法

10.14.1 查看规则

iptables -nvL

  • 如果不指定默认查看的是filter表
  • iptables -t nat -nvL
    -t指定查看的表
  • 默认规则的保存路径
    cat /etc/sysconfig/iptables

10.14.2 清空规则

iptables -F
10-30.png

  • 重启后会加载默认规则

10.14.3 保存规则

  • service iptabels save
  • 写完规则后,只是保存在内存中。想让重启后还加载修改后的规则,需要执行保存命令。

10.14.4 计数器清零

  • iptables -Z

10.14.5 添加规则

iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
iptables -I/-A
  • -A 添加,将后边的规则添加到最后一排。
  • -I 插入,将后边的规则插入到第一排。
  • 规则由上至下执行,如果有相同的IP受到了上层规则的影响,将不会执行下层的规则。
  • 声明添加或删入后要跟针对的链,比如INPUT OUTPUT
  • -s 来源IP
  • -p 指定协议
  • –sport 来源端口
  • -d 目标IP
  • –dport 目标端口
  • -j 后边跟规则的操作指令,比如DROP丢弃,REJECT驳回。
  • -i 指定网卡
  • -t 指定表,默认filter表

10.14.5 删除规则

  • 如果记得规则的命令:
    iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
  • 如果不记得规则的命令:
    1,先用iptables -nvL --line-numbers查看规则的编号
    2,iptables -D INPUT 编号

10.14.6 更链改默认策略

10-31.png

  • 警告:不能直接接触物理服务器,请谨慎使用本命令。
    iptables -P OUPUT DORP
  • 可以禁止对外的任何通信。所以远程终端会马上断开连接。

10.15 iptables filter表小案例

vi /usr/local/sbin/iptables.sh //加入以下内容
#! /bin/bash
ipt="/usr/bin/iptables"
$ipt -F  #清空规则
$ipt -P INPUT DROP  #输入默认DROP
$ipt -P OUTPUT ACCEPT 
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
#针对RELATED和ESTABLISHED状态放行。作用是22 80 21相关的端口都能通信
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
# 只有192.168.133.0/24网段的主机可以访问22端口
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
#开放80端口
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
#开放21端口
  • icmp示例
iptables -A INPUT -p icmp --icmp-tpye 8 -j DROP

可以使ping命令只能本机对外,外面的机器没有办法PING本机。

10.16/10.17/10.18 iptables nat表应用

10.16环境布署

  • A机器可以联外网,也可以联内网。双网卡。

10-32.png
配置网卡文件,设置定ip 192.168.100.1

  • B机器只有一块内网网卡,和A在同一区段

10-33.png
配置网卡文件,设置IP 192.168.100.2

最终实现目标
A机器可以上网,可以PING通B机器的192.168.100.2网卡。
B机器不可以上网,可以PING通A机器的192.168.100.1网卡。
AB机器的新网卡都不能被外部网PING通。

10.17.1 开启A机器的内核路由转发。

echo "1" >/proc/sys/net/ipv4/ip_forward
  • 默认这个文件的值是0,也就是不开启路由转发。

10.17.2 添加规则

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

10.17.3 为B机器设置网关

route add default gw 192.168.100.1

10.17.4 实验失败原因

  • 确保iptables里默认设置。
    iptables-t nat -F #清除原有的nat表中的规则

iptables -F #清除原有的filter有中的规则

iptables -P FORWARDACCEPT #缺省允许IP转发

  • cat /proc/sys/net/ipv4/ip_forward
    确保返回值为1,重启网络服务会变回零。
  • 确保A机器能联外网
  • 出问题先从源头查起。本次问题就是尾结决了,源又出问题结果一直绕圈子。

10.18.1 映射端口(因为xshell是通过22端口访问的,所以这里用22端口举例)

  • 原理:拿A机器上一个不用的端口假冒成B机器的22端口,让远程用户访问。
  • 规则:
    iptables -t nat -A PREROUTING -d 192.168.19.131(外网IP) -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 # 接收到的包的地址指定由外网网卡,转到内网指定的IP和端口上。
    iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.168.19.131 #把发出的包由指的IP伪装转化成指定IP
  • 访问时通过192.168.131:1122这个端口就可以访问到192.168.100.100:22这台机器了。
  • 这样联通后就可以直接访问外网了。因为这相当于直接用22端口打开了一个通道。

直播笔记

扩展:

10-26.png
10-27.png

1.针对网段

iptables -I INPUT -m iprange --src-range 61.4.176.0-61.4.191.255 -j DROP
192.168.1.0/24 
iptables -I INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT  
-m 后面跟模块名字,iprange是一个模块名字,用来支持一个网段
--src-range 指定来源的ip范围
--dst-range 指定目标ip范围
  1. sant dnat masquerade http://ask.apelearn.com/question/7255
  2. 在iptables上一共有四种状态,分别被称为NEW、ESTABLISHED、INVALID、RELATED
  • NEW:NEW说明这个包是我们看到的第一个包。
    意思就是,这是conntrack模块看到的某个连接的第一个包,它即将被匹配了。
    比如,我们看到一个SYN 包,是我们所留意的连接的第一个包,就要匹配它。
  • ESTABLISHED: ESTABLISHED已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。
    处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。
    一个连接要从NEW变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。
    ICMP的错误和重定向等信息包也被看作是ESTABLISHED,只要它们是我们所发出的信息的应答。
  • RELATED: RELATED是个比较麻烦的状态。
    当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。
    换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。
    这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是 RELATED的了,当然前提是conntrack模块要能理解RELATED。
    ftp是个很好的例子,FTP-data 连接就是和FTP-control有关联的,如果没有在iptables的策略中配置RELATED状态,FTP-data的连接是无法正确建立的。
    还有其他的例子,比如,通过IRC的DCC连接。有了这个状态,ICMP应答、FTP传输、DCC等才能穿过防火墙正常工作。注意,大部分还有一些UDP协议都依赖这个机制。这些协议是很复杂的,它们把连接信息放在数据包里,并且要求这些信息能被正确理解。
  • INVALID:INVALID说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西,因为防火墙认为这是不安全的东西。
  1. 限速
iptables -N syn-flood
iptables -A syn-flood -m limit --limit 5/s --limit-burst 500 -j RETURN
iptables -A syn-flood -j DROP
iptables -I INPUT -j syn-flood
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值