iptables防火墙

iptables 规则

安全防护技术

入侵检测与管理系统:特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报告和事后监督为主

入侵防御系统:以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以阻断,主动而有效的保护网络的安全,一般采用在线部署方式

防火墙(FireWall):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略

防火墙的分类

按保护范围划分:
主机防火墙: 保护当前主机
网络防火墙: 保护局域网
按实现方式划分:
硬件防火墙: 专用硬件实现部分功能的防火墙,华为,天融信等
软件防火墙: 运行于通用硬件平台之上的防火墙的应用软件
按网络协议划分:
网络层防火墙: OSI模型下四层,又称为包过滤防火墙
应用层防火墙: 代理网关,OSI模型七层

包过滤防火墙:
网络层对数据包进行选择过滤,判断是否运行数据包通过
优点:对用户来说透明,处理速度快且易于维护
缺点:无法检查应用层数据,如病毒等

应用层防火墙:
应用层防火墙/代理服务型防火墙,也称为代理服务器,将所有跨越防火墙的网络通信链路分为两段,内外网用户的访问都是通过代理服务器上的“链接”来实现
优点:在应用层对数据进行检查,比较安全
缺点:增加防火墙的负载

linux防火墙

Linux防火墙由netfilter组件提供,集成在Linux内核中。
Netfilter 是Linux2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

常用防火墙管理工具:
iptables
firewalld centos7开始使用
nftables centos8新特性

netfilter 中五个勾子函数

Netfilter在内核中选取五个位置放了五个勾子function 又称5个链。
INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING,而这五个链向用户开放,用户可以通过一个命令工具(iptables)向其写入规则
由信息过滤表组成,包含控制IP包处理的规则集,规则被分组放在不同的链上

三种报文流向:
流入本机:PREROUTING --> INPUT-->用户空间进程
流出本机:用户空间进程 -->OUTPUT--> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING

在这里插入图片描述

iptables的组成

iptables由五个表table和五个链chain以及一些规则组成
五个表:
filter:  过滤规则表,根据预定义的规则过滤符合条件的数据包
nat:     网络地址转换
mangle:  修改数据标记位规则表
raw:     关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:强制访问控制,由Linux安全模块如SELinux实现

查看表与链对应关系:
iptables -vnL -t filter  #查看filter表支持的链
              -t mangle  #查看mangle表支持的链
  • 优先级由高到低为: security -->raw–>mangle–>nat–>filter

iptables 基本规则

规则: 根据定义的规则对报文进行处理,规则在链上的次序决定生效次序
基本匹配: ip,端口,协议
扩展匹配: 通过复杂高级功能匹配
iptables规则添加考量点:
    实现哪种功能: 判断添加到哪张表上
    报文流经路径: 判断添加在哪个链上
    报文的流向: 判断源地址或目标地址
 #注意:使用iptables防火墙规则建议关闭防火墙服务

iptables 命令
  查看类:
     -n   #以数字格式显示端口和ip
     -v   #显示更加详细
     -L   #列出所有规则
     -t   #指定表,默认为filter表
     --line-numbers  #显示规则序号
  规则管理类:
     -A         #追加规则
     -D         #删除规则
     -I 2       #查入规则,插入的规则序号为2
     -F         #清空规则
     -F INPUT   #清空INPUT链规则   
  处理动作:
     -j ACCEPT   #允许
        DROP     #拒绝,堵塞
        REJECT   #拒绝,有返回信息
        REDIRECT #端口重定向
        DNAT     #目标地址转换
        SNAT     #源地址转换
        MASQUERADE #地址伪装
        
  匹配条件:
     -s 10.0.0.8        #源ip地址
     -s 10.0.0.8,10.0.0.11
     -d 10.0.0.8        #目标ip地址
     -d 10.0.0.8,10.0.0.11
     -p tcp   #指定连接协议,tcp,udp,icmp等  参考:/etc/protocols         
 
案例:
iptables -vnL  #查看所有规则
iptables -vnL --line-numbers  #查看所有规则并显示序号
iptables -F    #清空所有防火墙规则
iptables -D INPUT 1 #删除INPUT链的序号为1的规则
iptables -A OUTPUT -j DROP  #禁止所有连接
iptables -A INPUT -s 10.0.0.8 -j REJECT     #添加规则禁止10.0.0.8的所有访问
iptables -I INPUT 2 -s 10.0.0.10 -j ACCEPT  #插入规则允许10.0.0.10的所有访问
iptables -A INPUT -s 10.0.0.0/24 -j REJECT  #添加规则禁止10.0.0.0网段的所有访问
iptables -A INPUT -p tcp -s 10.0.0.8 -j REJECT #禁止10.0.0.8通过tcp协议连接本主机

显示扩展
   -m 指定扩展模块
multiport  #指定端口匹配
      --dports 目标端口
      --sports 源端口
      --ports  源或目标端
  #禁止远程主机基于tcp协议的22,80端口的访问
iptables -A INPUT -s 10.0.0.8 -m multiport -p tcp --ports 22,80 -j REJECT

connlimit  #客户端ip并发连接数量匹配,可防止dos攻击
     --connlimit-above 5  并发连接大于5时匹配
  #并发连接超过2 拒绝其他主机再次通过ssh协议连接本主机     
iptables -A INPUT -d 10.0.0.17 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT  

state 扩展模块,检查连接的状态
  NEW: 新发出请求;将其识别为第一次发出的请求
  #将第一次发出的请求拒绝
  iptables -A FORWARD -d 192.168.10.0/24 -m state --state NEW -j REJECT 

自定义链管理: 
    -N:自定义一条新的规则链
    -E:重命名自定义链
    -X:删除自定义的空的规则链
iptables -N shi  #创建自定义链
iptables -A shi -s 10.0.0.7 -j REJECT #添加规则
iptables -A INPUT -j shi  #关联到INPUT链上
iptables -F shi   #清空自定义链
iptables -D INPUT 1  #取消关联
iptables -X shi      #删除链
``

**规则优化**

```bash
1. 谨慎放行入站的新请求
2. 匹配范围小的放在前面,用于特殊处理
3. 不同类的规则(访问不同应用,一个是http,另一个是mysql),匹配范围大的放在前面,效率更高
4. 应该将那些可由一条规则能够描述的多个规则合并为一条
5. 设置默认策略,建议白名单。或规则的最后一条定义规则做为默认策略

iptables 规则保存

iptables-save  #输出规则
iptables-save  > /data/iptables-rules  #输出规则重定向到文件中,文件可修改
iptables-restore < /data/iptables-rules #加载规则,还原规则

#实现开机自动加载规则
vim /etc/rc.d/rc.local
 iptables-restore < /data/iptables-rules
 
#CentOS 7,8 可以安装iptables-services 实现开机加载 
yum install -y iptables-services
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值