iptables案例

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@yong-02 ~]# 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.180.0/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@yong-02 ~]# sh /usr/local/sbin/iptables.sh 
[root@yong-02 ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   29  1924 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       192.168.180.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 17 packets, 1492 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@yong-02 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

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

[root@yong-02 ~]# ping www.qq.com
PING www.qq.com (192.168.180.135) 56(84) bytes of data.

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

C:\Users\YueYong>ping 192.168.180.135

正在 Ping 192.168.180.135 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

192.168.180.135 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

这时,再来删除这条命令

[root@yong-02 ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP

service iptables restart 重启iptables服务

[root@yong-02 ~]# service iptables restart //重启iptables服务
Redirecting to /bin/systemctl restart iptables.service  
[root@yong-02 ~]# iptables -nvL   //这里会看到还没禁掉之前的规则
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   34  2304 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    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            state NEW tcp dpt:22
    1    76 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

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            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 24 packets, 1980 bytes)
 pkts bytes target     prot opt in     out     source               destination 

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

转载于:https://my.oschina.net/u/3791387/blog/1809787

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值