iptables防火墙

什么是防火墙

  • 一道保护性的安全屏障
  • 保护、隔离
Linux包过滤防火墙
  • RHEL7默认使用firewalld做为防火墙
  • 但firewalld底层还是调用包过滤防火墙iptables

一、安装防火墙软件

[root@ip52 ~]# systemctl stop firewalld
[root@ip52 ~]# systemctl disable firewalld
[root@ip52 ~]# yum -y install iptables-services
[root@ip52 ~]# systemctl restart iptables

iptables的表、链结构

1)iptables的4个表(区分大小写):
iptables默认有4个表,nat表(地址转换表)、filter表(数据过滤表)、raw表(状态跟踪表)、mangle表(包标记表)。
2)iptables的5个链(区分大小写): //数据包传输的方向
INPUT链(入站规则)
OUTPUT链(出站规则)
FORWARD链(转发规则)
PREROUTING链(路由前规则)
POSTROUTING链(路由后规则)

包过滤匹配流程

  • 规则链内的匹配顺序
  1. 顺序对比,匹配即停止(LOG除外)
  2. 若无任何匹配,则按该链的默认策略处理
iptables用法解析

iptables基本用法

  • 管理程序位置
    /sbin/iptables
  • 指令组成
    iptables [-t表名] 选项 [链名] [条件] [-j目标操作]

注意事项/整体规律

  • 可以不指定表,默认为filter表
  • 可以不指定链,默认为对应表的所有链
  • 如果没有匹配的规则,则使用防火墙默认的规则
  • 选项/链名/目标操作用大写字母,其余都小写字母

基本的目标操作

  • ACCEPT:允许通过/放行
  • DROP:直接丢弃,不给出任何回应
  • REJECT:拒绝通过,必要时会给出提示
  • LOG:记录日志,然后传给下一条规则

常用的管理选项

在这里插入图片描述

(1)往该主机的filter(数据包过滤表)表中插入INPUT(入站)链,写入规则是拒绝(REJECT)所有从本机进入的icmp包(ping)

[root@ip51 ~]# iptables -t filter -I INPUT -p icmp -j REJECT

(2)测试

[root@ip52 ~]# ping 192.168.4.51
PING 192.168.4.51 (192.168.4.51) 56(84) bytes of data.
From 192.168.4.51 icmp_seq=1 Destination Port Unreachable

(3)往本机filter表中的第一个序号处插入一条规则,允许22端口进

[root@ip51 ~]# iptables -t filter -I INPUT 1 -p 22 -j ACCEPT

(4)查看filter表中所有的规则

[root@ip51 ~]# iptables -t filter -nL --line-numbers

(5)清除filter表中编号为1的规则

[root@ip51 ~]# iptables -t filter -D INPUT 1

(6)清除filter表的所有规则

[root@ip51 ~]# iptables -t filter -F

[root@ip51 ~]# iptables -F //默认清空filter表

(7)清空四个表的规则

[root@ip51 ~]# iptables -t filter  -F
[root@ip51 ~]# iptables -t nat  -F
[root@ip51 ~]# iptables -t mangle  -F
[root@ip51 ~]# iptables -t raw  -F

设置默认规则

  • 所有链的初始默认规则均为ACCEPT
  • 通过-P选项可重置默认规则
    ACCEPT或者DROP
防护类型及条件

根据防火墙保护的对象不同,防火墙可以分为主机型防火墙与网络型防火墙,如图所示。
在这里插入图片描述
主机型防火墙,主要保护的是服务器本机(过滤威胁本机的数据包)。
网络防火墙,主要保护的是防火墙后面的其他服务器,如web服务器、FTP服务器等。
开启内核的IP转发

  • 做为网关、路由的必要条件
[root@ip51 ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf 

或者

[root@ip51 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

基本的匹配条件

  • 通用匹配
    可直接使用,不依赖于其他条件或扩展
    包括网络协议、IP地址、网络接口等条件
  • 隐含匹配
    要求以特定的协议匹配作为前提
    包括端口、TCP标记、ICMP类型等条件

在这里插入图片描述

注:需要条件取反时,用前面加!,如 !-p tcp,就是除tcp之外的协议

(1)配置51主机往filter表中的INPUT链中添加策略,允许tcp协议的22端口的数据包通过

[root@ip51 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

(2)将本机的默认策略修改为DROP

[root@ip51 ~]# iptables -t filter -P INPUT DROP

(3)查看策略

[root@ip51 ~]# iptables -t filter -nL --line-numbers

(4)使用50主机ssh 51主机

[root@ip50 ~]# ssh 192.168.4.51

(5)禁止50主机ssh 51

[root@ip51 ~]# iptables -t filter -I INPUT -s 192.168.4.50 -p tcp --dport 22 -j DROP

(6)允许外网访问本机的80端口

[root@ip51 ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

(7)将防火墙配置规则永久保存

[root@ip51 ~]# iptables-save > /etc/sysconfig/iptables

(8)由于OUTPUT默认的规则是ACCEPT,所以添加如下规则,允许本机的ping包进来,就会达到本机能ping外主机,外主机不能ping本机的效果

[root@ip51 ~]# iptables -t filter -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

(9)永久保存配置

[root@ip51 ~]# iptables-save > /etc/sysconfig/iptables
扩展匹配

扩展条件的方法

  • 前提条件
    有对应的防火墙模块支持
  • 基本用法
    -m 扩展模块 --扩展条件 条件值
    示例: -m mac --mac-source 00:0C:29:74:BE:21

常见的扩展条件类型

选项用法
MAC地址匹配-m mac --mac-source MAC地址
多端口匹配-m multiport --sports 源端口列表
-m multiport --dports 目标端口列表
IP范围匹配-m iprange --src-range IP1-IP2
-m iprange --dst-range IP1-IP2

(1)添加多端口的过滤规则

[root@ip51 ~]# iptables -t filter -I INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT

(2)删除单条的22跟80的tcp的过滤规则,使用上一条规则代替

[root@ip51 ~]# iptables -t filter -D INPUT 3

(3)添加允许250~254主机的ping包进来

[root@ip51 ~]# iptables -t filter -I INPUT -p icmp --icmp-type echo-request  -m iprange --src-range  192.168.4.250-192.168.4.254 -j ACCEPT

(4)根据MAC地址封锁主机

[root@ip51 ~]# arp -n    //获取ping过本主机的其他主机对应的mac地址

[root@ip51 ~]# iptables -t filter -I INPUT 4 -p icmp --icmp-type echo-request -m mac --mac-source 52:54:00:37:78:11 -j DROP     //添加到上一条配置ip范围的过滤规则之前

NAT转换原理

私有地址的局限性

  • 从局域网访问互联网的时候
    比如看网页、收邮件、。。。。。
    源地址为私有地址,服务器如何正确的给出回应?

SNAT源地址转换

  • Source Network Address Translation
    修改数据包的源地址
    仅用于nat表的POSTROUTING链

一,修改2-54主机网关(eth0:192.168.4.54,eth1:192.168.2.54)

[root@ip2-54 ~]# systemctl stop NetworkManager

//设置网关
[root@ip2-54 ~]# route add default gw 192.168.2.52
//删除网关
[root@ip2-54 ~]# route add default gw 192.168.2.52

//查看网关
[root@ip2-54 ~]# route -n

二,修改网关设备的防火墙规则(eth0:192.168.4.52,eth1:192.168.2.52)

(1)开启路由转发功能

[root@ip52 ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf 

(2)配置防火墙的nat规则

[root@ip52 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.4.52 
[root@ip52 ~]# iptables-save > /etc/sysconfig/iptables
[root@ip52 ~]# iptables -t nat -nL

(3)客户端测试

[root@ip2-54 ~]# curl 192.168.4.51

地址伪装策略

  • 共享动态公网IP地址实现上网
    主要针对外网接口的IP地址不固定的情况
    将SNAT改为MASQUERADE即可
    对于ADSL宽带拨号连接,网络接口可写为ppp+
[root@ip52 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE      //指定网关域名跟外网网卡(eth0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值