firewalld, netfilter, 5表5链, iptables语法, iptables案例

selinux

  • 关闭selinux

setenforce 0

  • 方法2
    vi /etc/selinux #设置SELINUX=disabled;

netfilter - firewalld

centos 7以前内置的防火墙是netfilter, centos 7中变成了firewalld。iptables是linux防火墙netfilter的管理工具。

  • 启用iptable

systemctl disable firewalld #禁用firewalld;
systemctl stop firewalld #停止firewalld;
yum install -y iptables-services #安装iptables-services;
systemctl enable iptables #启用iptables;
systemctl start iptables #运行iptables;
iptables -nvL #查看目前iptables设置;

iptables的规则表和链(忽略centos中的第5个表SECURITY,常用的只是filter, nat)

https://www.cnblogs.com/kevingrace/p/6265113.html

  • 表(tables):提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。

  • 链(chains):是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。

规则链:
1)INPUT——进来的数据包应用此规则链中的策略
2)OUTPUT——外出的数据包应用此规则链中的策略
3)FORWARD——转发数据包时应用此规则链中的策略
4)PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5)POSTROUTING——对数据包作路由选择后应用此链中的规则
(所有的数据包出来的时侯都先由这个链处理)

链可以说是数据包流动的链条,只分两条路,转发出去和到本机的;链条里嵌着表,每个结点的表不一样,可以实现的规则功能和特定结点结合在一起;也可以从表考虑,nat表只影响PREROUTING,POSTROUTING,OUTPUT结点,在链条的前后;filter表只影响FORWARD,INPUT,OUTPUT结点,在链条的中间部分;

  • iptables传输数据包的过程
    1)当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
    2)如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,进程会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
    3)如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
    iptables传输数据包的过程
  • 数据包经过iptables的具体流程图
    规则表之间的优先顺序:Raw——mangle——nat——filter
    iptables

nat可以实现一个公网IP的最大利用,一个公网IP通过端口映射,如将公网IP:8080指向内网机器私网IP:80,外网的机器就可以通过访问公网IP:8080就可以访问到内网机器;可以将不同的端口指向不同的内网机器,这样就需要利用iptables在nat表上的PREROUTING链上做DNAT,在POSTROUTING链上做SNAT,还要在filter表上的INPUT链上对数据包放行,等等,(简单说明)

网络上,IP+端口可实现一个功能或一个服务或对应另外一台机器的一个服务

iptables用法汇总:

  • nat表上的应用,PREROUTING链条上做DNAT,POSTROUTING链条上做SNAT
  • filter表上的应用,INPUT链条上使用很多(拒绝和接受某些包,可按源或目的IP,端口,协议,匹配,逻辑符号!,网卡,连接速度,时间,下载请求数,TCP标志位等为判断条件来定规则);FORWARD链条上使用比较多;OUTPUT链条上有一些;

1)SNAT是source network address translation的缩写,即源地址目标转换。

2)DNAT是destination network address translation的缩写,即目标网络地址转换。

具体实现功能简单列举如下:

  • INPUT filter表:拒绝ICMP - 私网源包丢弃 - 封堵时间 - 限制网段访问SSH - 白名单访问3306 - 开放一段端口 - 屏蔽IP - 屏蔽环回 - 禁止ping出进 - 可ping出不能ping进 - 开放一批端口 - 禁止某些源IP包,或目的IP的包 - 某些IP可以访问某个目的端口 - 拒绝新state,响应established - 防dos攻击 - 限速ping

  • OUTPUT filter表:屏蔽环回 - 禁止ping出进 - 可ping出不能ping进

  • FORWARD filter表:转发除ICMP以外的数据包 - 转发黑名单 - 封堵时间 - 允许DNS解析 - 禁止转发某个mac地址 - 禁止转发某些IP的TCP 包 - 禁止转发New TCP 非syn - 网卡1路由到网卡0

iptables命令中,不选表就是filter表

iptables语法

iptables -F #清空配置,运行后生效,重启恢复默认;

service iptabes save #运行后目前配置保存为默认;

service iptables restart #重启恢复默认;

vim /etc/sysconfig/iptables #保存配置生成这个文件;

-t filter #选表filter,可选nat表;
-Z #计数器清零,可按计数进行一些限制或解除限制的操作;

iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP #-A新增规则,-s源IP,-p协议类型, --sport 1234源端口1234, -d接目的IP, --dport 80目的端口80, 符合前面条件的, -j DROP丢弃包;

  • 防火墙处理数据包的四种方式
    ACCEPT 允许数据包通过
    DROP 直接丢弃数据包,不给任何回应信息
    REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
    LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

iptables -I INPUT -p tcp --dport 80 -j DROP #-I添加规则在第一行;指定端口必须要指定-p;

iptables -D INPUT -p tcp --dport 80 -j DROP #-D删除一条规则,具体内容跟你增加时一样;

iptables -nvl --line-number #查看规则编号,可按编号删除;

iptables -D INPUT 7 #删除INPUT中编号7规则;

iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT #-i接收包的网卡;

iptables -P OUTPUT DROP #-P修改链的默认策略,OUTPUT链全盘丢弃,如果ssh连接中,连接会中断;-P设置会变成默认的一部分,除非另外修改,-F不能清除;
iptables -P OUTPUT ACCEPT #OUTPUT改成接受;

  • 案例:
    请查看以下脚本:
#! /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.133.0/24 -p tcp --dport 22 -j ACCEPT  #对一个网段开放22端口;
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT  #开放80端口;
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT  #开放21端口;

运行上面的脚本不怕掉线,因为脚本运行速度快;
在删除22端口的行的测试中,连接中的ssh没有断开,重新连接就不行了,而-P的修改马上生效;

  • ping出去,不被ping的设置

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值