Linux - iptables

一、iptables 简介

二、iptables规则原理和组成

1、netfilter和iptables

2、iptables的4张表和5条链
iptables规则组成:
组成部分:四张表+五条连(Hook point)+规则
mangle表:修改数据包,改变包头中内容(TTL、TOS、MARK)
raw表:数据包状态的跟踪和分析
filter表:访问控制、规则匹配
nat表:地址转发

3、iptables规则组成
语法:
iptables(选项)(参数)

数据包访问控制:ACCEPT, DROP(不有信息返回), REJECT(有拒绝信息)
数据包改写:SNAT(来源改写), DNAT(到目标改写)
信息记录:LOG(记入日志)

选项:
-t<表>:指定要操纵的表;
-A:新追加一个规则(在规则链尾);
-I:新追加一个规则(在规则链头);
-D:从规则链中删除条目;
-L:显示规则链中已有的条目;
-F:把iptables现有的规则进行一个清理;
-n: 常与-L连起来使用,目的是hostname一些相关的不让其显示出来
-P:设置一个默认的iptables的规则。

规则链名包括:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。

具体的一些参数:
-p tcp 表示它的协议有哪些
-s  它的发起源有哪些
-d  它的目标地址
--sport 发起的源端口
--dport 目标的端口
--dports  端口段
-m  tcp
    state
    multiport  在原有规则上的补充

动作包括:
-j ACCEPT:接收数据包。
   DROP:丢弃数据包。
   REDIRECT:重定向、映射、透明代理。
   SNAT:源地址转换。
   DNAT:目标地址转换。
   LOG:日志记录。

iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

 

三、iptables实践场景一

1、允许其他机子访问本机
iptables -I INPUT -p tcp --dport 80 -j ACCEPT外面的机子访问我的80端口是允许的
iptables -I INPUT -P tcp --dport 10:22 -j ACCEPT访问10-22端口是允许的
iptables -I INPUT -p icmp -j ACCEPT访问icmp协议所有的端口都是允许的
iptables -L列出所有的规则
iptables -A INPUT -j REJECT在现有规则的后面增加一条规则对默认没有允许的规则进行禁止
iptables -D INPUT -p tcp --dport 80 -j ACCEPT 删除这条80规则
iptables -I INPUT -p tcp --dport 80 -j REJECT 不允许访问我的80规则
Ps:检测目标服务器端口开启情况:nmap -sS -p 0-1000 192.168.5.123

2、访问其他机子和本机
iptables -I INPUT -i lo -j ACCEPT 允许对lo过来的数据包,对本地的网卡设备允许访问
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 对外访问时,如果ftp的状态为established和related时允许访问
Ps:看能否访问22端口:telnet 10.10.188.232 22

3、允许指定机子访问本机
iptables -I INPUT -p tcp -s 10.10.188.233 --dport 80 -j ACCEPT 只允许10.10.188.233通过http请求访问本机,-s指定源主机
Ps:返回请求信息:curl -I http://10.10.188.232/

 

四、iptables实践场景二

1、主动模式

2、被动模式


Ps:解释
ftp 10.10.188.233 进入ftp模式
passive 关闭被动模式,自动转成主动模式
ls 显示目录/文件

 

五、iptables实践场景三

iptables -F
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 10.10.188.0/24 -j ACCEPT(允许该IP访问所有)
iptables -A INPUT -s 10.10.140.0/24 -j ACCEPT(自己使用ssh连接电脑的网段)(允许该IP访问所有)
iptabels -A INPUT -p tcp --dport 80 -j ACCEPT(允许所有主机访问80端口)
iptabels -A INPUT -p tcp --dport 1723 -j ACCEPT(允许VPN访问)
iptabels -I INPUT -p icmp -j ACCEPT
接下来拒绝掉所有的未设置的规则
iptables -A INPUT -j REJECT

永久保存:

第一种方法:
/etc/init.d/iptables save 
vim /etc/sysconfig/iptables
chkconfig iptables save
第二种方法:
history,复制粘贴,保存成一个shell文件
vim /etc/rc.local 中加入以下代码:wq即可
/bin/sh /opt/iptable_ssh.sh

 

六、iptables中NAT模式设置

1、iptables规则中SNAT规则设置

步骤:
netstat -luntp | grep 80
ip addr    #查看网关服务器上的两张网卡,在这台服务器上做NAT;
vim /etc/sysctl.conf    #数据包转发需打开内核的参数;
    net.ipv4.ip_forward = 0    改为1;
    sysctl -p    #让配置全部执行;
    sysctl -a | grep ip_forward    #查看是生效;
iptables -t nat -A POSTROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232    #制定转发规则;
iptables -t nat -L    #查看nat表内容
netstat -rn    #在客户端pc上查看当前路由表;
route add 0.0.0.0 gw 10.10.177.232    #在客户端pc上加入路由;
curl http://101.101.101.101/xxxxx/    #进行测试

2、iptables规则中DNAT规则设置

配置:
iptable -t nat -F 规则清零
iptable -t nat -nL 查看规则
转发端口(10.10.188.232:80 <==> 10.10.177.233:80):iptables -t nat -A INPUT PREROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.233:80
转发端口(local_allip:80 <==> 10.10.177.233:8081):iptables -t nat -A INPUT PREROUTING -p tcp --dport -j DNAT --to 10.10.177.233:8081

 

七、iptables防攻击及企业场景应用

1、iptables防止CC攻击

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放羊的牧码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值