0416 第十四次课:日常运维-防火墙

日常运维-防火墙

一、firewalld和netfilter

  1. 关闭selinux

    因为selinux开启增大了运维成本,很多服务都受限于selinux,关闭selinux也不会出现什么安全问题,一般都是关闭的。

  • 临时关闭selinux

    setenforce 0

  • 永久关闭

    修改配置文件:/etc/selinux/config

    修改内容:

    SELINUX=enforcing改为disabled

    修改完成后重启服务器生效

  • 查看selinux状态

    getenforce


  1. netfilter/firewalld

    netfilter是centos6及以前版本使用的防火墙,centos7把netfilter升级为了firewalld。

    目前有些企业还是用的centos6及以前的版本,所以还是需要会使用netfilter。

    由于目前使用时centos7,想要使用netfileter可以把firewalld先关闭。

  • 关闭firewalld

    systemctl disable firewalld 禁止启动

    systemctl stop firewalld 关闭防火墙

  • 开启netfilter

    先安装iptables工具包:

    yum install iptables-services

    启动iptables:

    systemctl enable iptables

    systemctl start iptables

  • 查看iptables规则

    iptables -nvL

二、netfilter 5表5链接

  • netfilter五表:

    • filter:包过滤,用于防火墙规则。有INPUT、FORWARD、OUTPUT三个链

    • nat:地址转换,用于网关路由器。有PREROUTING、OUTPUT、POSTROUTING三个链

    • mangle:用于给数据包打标记,然后根据标记去操作那些表。(不常用)

    • 不常用的表:raw、security

  • netfilter五链:

    • PREROUTING:数据包进入路由表之前
    • INPUT:通过路由表后目的地为本机
    • FORWARD:通过路由表后,目的地不为本机
    • OUTPUT:由本机产生,向外发出
    • POSTROUTING:发送到网卡接口之前
  • 参考文章: http://www.cnblogs.com/metoy/p/4320813.htm

三、iptables语法

  • 查看iptables规则

    iptables -nvL

  • 清空iptables规则

    iptables -F

    清空后未保存规则配置文件(/etc/sysconfig/iptables),服务重启或系统重启后,防火墙服务会重新加载规则配置文件中的原有规则。

  • 保存规则

    iptables save

  • 重启

    service iptables restart

  • 查看nat表

    iptables -t nat -nvL

  • 计数器清零

    iptables -Z

  • 添加iptables规则

    iptables -A INPUT -s 192.168.1.19 -p tcp --sport 8888 -d 192.168.1.12 --dport 80 -i ens33 -j DROP

    解释: 增加一条iptables规则:input链,源IP:192.168.1.19,TCP协议,源端口:8888,目的IP:192.168.1.12,目的端口:80,执行:DROP(丢掉)。

    和DROP类似的还有REJECT,不同的是:接受数据包后REJECT会进行查看,然后丢掉,DROP则是直接丢掉。一般DROP比较常用。

  • 删除iptables规则

    和添加规则类似,把-A改成-D

    iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -i ens33 -j DROP

也可以根据查询规则号进行删除:

  • 查询:

iptables -nvL --line-number

  • 删除

    iptables -D INPUT 编号

  • 插入一条规则

    iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

    插入一条来源网段为 192.168.1.0/24,网卡为eth0,执行放行操作

  • 修改默认规则

    一般不要修改默认规则,有可能导致远程终端无法连接

    修改:

      `iptables -P INPUT DROP`
    

    恢复:

      `ptables -P OUTPUT ACCEPT`
    

四、netfilter案例

  • 案例1:放行端口

    需求:只放行80、21/22三个端口,且22端口只有192.168.43.0/24段才能访问。 使用shell脚本实现:

    vim iptables.sh

    新建一个iptables脚本,写入以下内容:

#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.43.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
  • 案例2:禁ping

    需求:本机可以ping通别的机器,别的机器无法ping通本机

    iptables -I INPUT -p icmp --icmp-type 8 -j DROP

五、iptables nat表应用

  • nat表应用

场景:有两台机器A和B。A机器有两个网卡,ens33(192.168.43.180)和ens37(192.168.100.1),ens33可以使用外网,ens37只能使用内网。B机器只有ens33(192.168.100.1)网卡,不能使用外网,但可以与A机器互通。

  • 需求:让B机器可以连接外网

  • 实现步骤:

  1. A机器添加一块网卡


  1. 设置ip地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens37

uuidgen ens37 // 获取ens37uuid

修改ens37配置文件

vim ifcfg-ens37

ifdown ens37 && ifup ens37


  1. B机器添加网卡
  • 按照以上步骤给B机器添加一个ens37网卡,并把ens33网卡停掉
  1. A机器设置路由

    A机器上打开路由转发

    默认是关闭的,0表示关闭

    打开:

    echo “1”>/proc/sys/net/ipv4/ip_forward

    增加一条防火墙规则:

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

  2. B机器设置网关

    vim /etc/resolv.conf

    添加以下内容:

    nameserver 114.29.29.29

6.测试连接

在B机器ping www.baidu.com 是否能通

六、课堂笔记

  • netfilter 纠正

netfilter是基于内核,在centos7以前版本,防火墙是指iptables,它是一个服务,iptables服务是用来管理加载、调用iptables命令。在centos7版本,叫firewalld,它比iptables更加丰富,同样也可以管理iptables命令设置好的规则。

  • iptables中的5链

  • 针对网段进行设置

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范围

  • 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这个状态的任何东西,因为防火墙认为这是不安全的东西。

  • iptables限制syn速度

    iptables限制syn速度

转载于:https://my.oschina.net/u/3755326/blog/3037527

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值