10.15 iptables filter表案例

iptables常用知识回顾点

  • iptables -I/-A/-D 后紧跟 链 ,可以是INPUT,OUTPUT,FORWARD
  • iptables -P 用来指定 链的默认策略 ——>最好不要直接操作,否则会造成远程的终端断开

iptables小案例

  • 需求:
    • 把80,22,21端口放行,但22端口指定一个IP段,只允许这个IP段的IP访问的时候,才可访问到,其他段的一概拒绝
  • 实现:(用一个脚本来实现)
    • RELATED状态,这是一个边缘的一个状态
      • 比如:客户端和服务端相互了通信,建立完连接之后,还会有一些额外的链接出来,这时候状态就变成了RELATED(若紧紧只有ESTABLISHED,而没有RELATED,很有可能导致其他的通信被禁掉,因为默认策略是INPUT DROP)
    • ESTABLISHED状态, 保持连接
    • 有时,在没有增加-m --state这条规则,导致增加了80或21端口,但是不能正常通信,加这条规则的目的是为了让通信更加顺畅
[root@hanfeng-001 ~]# vim /usr/local/sbin/iptables.sh

添加以下内容

#! /bin/bash
ipt="/usr/sbin/iptables    //这里ipt是定义个一个变量(写脚本的时候,写全局的路径,就是绝对路径,就是后面再加载它,用变量去代替,看着更加简单)
$ipt -F    //清空之前的规则——>在没有 -t 指定表的时候,默认的就是filter表
$ipt -P INPUT DROP    //把IPPUT的策略给扔掉
$ipt -P OUTPUT ACCEPT    //把OUTPUT放行
$ipt -P FORWARD ACCEPT    //把FORWARD放行
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT    //增加规则,-m  --state 指定了状态,并针对这些状态放行(-m  --state这种用法并不多见,但是这条规则必须写进来,目的是让相关的数据包放行)
$ipt -A INPUT -s 192.168.202.130/24 -p tcp --dport 22 -j ACCEPT    //把该网段的22端口数据包放行——>这里的IP段根据自己的IP段来做实验
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT    //把80端口数据包放行
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT      //把21端口数据包放行

然后保存退出:wq
[root@hanfeng ~]# sh /usr/local/sbin/iptables.sh        //执行脚本
[root@hanfeng ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   30  2148 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       192.168.202.0/24     0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 18 packets, 1816 bytes)
 pkts bytes target     prot opt in     out     source               destination         
[root@hanfeng ~]# 
  • 为什么要写脚本?
  • 因为这里有INPUT DROP,肯定要把你的远程连接给断开,所以需要执行脚本把你的命令批量执行

icmp示例

  1. iptables -I INPUT -p icmp --icmp-type 8 -j DROP 这个规则会产生一个效果,让你ping外面的机器还可以ping通,但是ping本机的时候,就不会通了
[root@hanfeng-001 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP    //会发现可ping通外面的网络,但自己的虚拟机和物理机则无法连接
[root@hanfeng-001 ~]# ping www.qq.com
PING www.qq.com (180.96.86.192) 56(84) bytes of data.
64 bytes from 180.96.86.192: icmp_seq=1 ttl=128 time=7.38 ms
64 bytes from 180.96.86.192: icmp_seq=2 ttl=128 time=6.16 ms
64 bytes from 180.96.86.192: icmp_seq=3 ttl=128 time=7.73 ms
^C
--- www.qq.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 6.166/7.092/7.731/0.677 ms
[root@hanfeng-001 ~]# 
  1. 这时用自己的物理机去ping虚拟机,会发现无法连接
  1. 这时,再来删除这条命令
  • iptables -D INPUT -p icmp --icmp-type 8 -j DROP
[root@hanfeng ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP
iptables: Bad rule (does a matching rule exist in that chain?).
[root@hanfeng ~]#
  1. service iptables restart 重启iptables服务
[root@hanfeng ~]# service iptables restart    //重启iptables服务
Redirecting to /bin/systemctl restart  iptables.service
[root@hanfeng ~]# iptables -nvL    //这里会看到还没禁掉之前的规则
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   81  6996 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            

Chain OUTPUT (policy ACCEPT 61 packets, 6060 bytes)
 pkts bytes target     prot opt in     out     source               destination         
[root@hanfeng ~]# 
  1. 这里物理机去ping虚拟机IP,会发现再次ping通
  • 这里的物理机和虚拟机不通,并不指不能连接,这里仅仅是做了一个禁ping而已(是可以ping通外网的,但别人无法ping通你)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Iptables防火墙 基础知识

Iptables防火墙 基础知识 位置 使用vim /usr/sysconfig/iptables 启动、关闭、保存 service iptables stop...

3106
来自专栏ml

linux开关端口问题

linux开关端口问题: 我们知道一些常用的端口,比如mysql的端口为3306,sql的端口为:1433,以及tomcat的端口为 8008等等一样! ...

8966
来自专栏散尽浮华

通过iptables限制sftp端口连接数

之前在公司服务器上部署了sftp,用于上传业务系统的附件。后来由于程序连接问题,使的sftp连接数过多(做多时高达400多个sftp连接数),因为急需要对sft...

47210
来自专栏编程微刊

动态表格之查看、删除、编辑

2702
来自专栏清晨我上码

第七节 netty前传-NIO 几种channel介绍

FileChannel.write()方法将数据写入FileChannel,该方法将Buffer作为参数。

1394
来自专栏蓝天

iptables简单应用

可以修改/etc/rc.d/boot.local让规则重启后也能生效,如: /sbin/iptables -F /sbin/iptables -A INP...

1053
来自专栏米扑专栏

Linux iptables 防火墙常用规则

上面这两条,请注意--dport为目标端口,当数据从外部进入服务器为目标端口;反之,数据从服务器出去则为数据源端口,使用 --sport 同理,-s是指定源地址...

49512
来自专栏运维

linux下备份脚本主之 遍历目录备份所有二级目录文件

1,备份脚本如下,我这里以备份CVS目录为例,总CVS目录下有几个Project,统统备份

1961
来自专栏搜云库

CentOS7.3 安装 iptables 与详细使用

CentOS7.3 安装 iptables 与详细使用 安装操作 检查状态 先检查是否安装了iptables $ service iptables status...

33510
来自专栏蓝天

Linux操作系统下IPTables配置方法详解

Chain RH-Firewall-1-INPUT (0 references)

4153

扫码关注云+社区

领取腾讯云代金券