博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables小案例
阅读量:5789 次
发布时间:2019-06-18

本文共 4169 字,大约阅读时间需要 13 分钟。

hot3.png

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@linux-128 ~]# vim /usr/local/sbin/iptables.sh

添加内容:

#! /bin/bashipt="/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端口数据包放行

执行脚本:

[root@linux-128 ~]# sh /usr/local/sbin/iptables.sh
[root@linux-128 ~]# iptables -nvLChain 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:21Chain 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

注意:为什么这里要用脚本:因为这里有INPUT DROP,肯定要把你的远程连接给断开,所以需要执行脚本把你的命令批量执行。


icmp示例

iptables -I INPUT -p icmp --icmp-type 8 -j DROP 这个规则会产生一个效果,让你ping外面的机器还可以ping通,但是ping本机的时候,就不会通了

[root@linux-128 ~]#iptables -I INPUT -p icmp --icmp-type 8 -j DROP

注意:这里会发现可ping通外面的网络,但自己的虚拟机和物理机则无法连接

[root@linux-128 ~]# ping www.baidu.comPING www.a.shifen.com (180.97.33.107) 56(84) bytes of data.64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=1 ttl=128 time=17.4 ms64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=2 ttl=128 time=17.5 ms64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=3 ttl=128 time=17.8 ms^C--- www.a.shifen.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2004msrtt min/avg/max/mdev = 17.403/17.614/17.895/0.206 ms

这时用自己的物理机去ping虚拟机,会发现无法连接

输入图片说明

这时,再来删除这条命令

[root@linux-128 ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROPiptables: Bad rule (does a matching rule exist in that chain?).

service iptables restart 重启iptables服务

[root@linux-128 ~]# service iptables restart    //重启iptables服务Redirecting to /bin/systemctl restart  iptables.service[root@linux-128 ~]# 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

这里物理机去ping虚拟机IP,会发现再次ping通
注意:里的物理机和虚拟机不通,并不指不能连接,这里仅仅是做了一个禁ping而已(是可以ping通外网的,但别人无法ping通你)

转载于:https://my.oschina.net/u/3706916/blog/1583250

你可能感兴趣的文章
source insight中的快捷键总结
查看>>
PC-IIS因为端口问题报错的解决方法
查看>>
java四种线程池简介,使用
查看>>
ios View之间的切换 屏幕旋转
查看>>
typedef BOOL(WINAPI *MYFUNC) (HWND,COLORREF,BYTE,DWORD);语句的理解
查看>>
jsp 特殊标签
查看>>
[BZOJ] 1012 [JSOI2008]最大数maxnumber
查看>>
gauss消元
查看>>
多线程-ReentrantLock
查看>>
数据结构之链表与哈希表
查看>>
IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求...
查看>>
http返回状态码含义
查看>>
响应式网站对百度友好关键
查看>>
洛谷P2179 骑行川藏
查看>>
(十八)js控制台方法
查看>>
VB关键字总结
查看>>
android代码生成jar包并混淆
查看>>
一个不错的vue项目
查看>>
屏蔽指定IP访问网站
查看>>
python学习 第一天
查看>>