iptables四表五链:
1、“四表”是指 iptables 的功能
——filter 表(过滤规则表):控制数据包是否允许进出及转发
——nat 表(地址转换规则表):控制数据包中地址转换
——mangle(修改数据标记位规则表):修改数据包中的原数据
——raw(跟踪数据表规则表):控制 nat 表中连接追踪机制的启用状况

2、“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含 多个数据链,防火墙规则需要写入到这些具体的数据链中。
——INPUT(入站数据过滤) :处理来自外部的数据
——OUTPUT(出站数据过滤):处理向外发送的数据。
——FORWARD(转发数据过滤):将数据转发到本机的其他网卡设备上
——PREROUTING(路由前过滤) :– 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
——POSTROUTING(路由后过滤): – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

filter表有三个链:forward 、input、output
nat表有三个链:prerouting、postrouting、output
mangle表有五个链:prerouting、forward、input、output、postrouting

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

-i eht0 从哪个口进
-o eth0 从哪个网卡出

处理动作大全:accept、reject、drop、redirect、log、masquerade、dnat、snat、mirror、queue、return、mark

filter表使用的主要动作:accept、reject、drop、log

drop和reject区别是:如果是drop直接超时,不回发任何信息
如果是reject就会返回信息回来提示(目标端口不可达)Destination port unreachable

首先先来翻译一下dport和sport的意思:
dport:目的端口
sport:来源端口
初学iptables比较容易迷糊,但是我尽量用通俗的语言给你讲解。
dport 和sport字面意思来说很好理解,一个是数据要到达的目的端口,一个是数据来源的端口。
但是在使用的时候要分具体情况来对待,这个具体情况就是你的数据包的流动行为方式。(INPUT还是OUTPUT)
比如你的例子:/sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT
注意里面的INPUT参数,这个代表你的这条数据包的进行的 “进入” 操作!
那么你的这条数据包可以这么描述:
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的目的(dport)地址是80,就是要访问我本地的80端口。
3.允许以上的数据行为通过。
总和:允许外部数据访问我的本地服务器80端口。

再看第2条列子:/sbin/iptables -A INPUT -p tcp –sport 80 -j ACCEPT
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。
3.允许以上数据行为。
总结:允许外部的来自80端口的数据访问我的本地服务器。
input方式总结: dport指本地,sport指外部。

如果你的数据包是(OUTPUT)行为,那么就是另外一种理解方式:
比如:
/sbin/iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
1.这是一条从内部出去的数据。
2.出去的目的(dport)端口是80。
3.允许以上数据行为。
output行为总结:dport指外部,sport指本地。

iptables -nvL
查看规划所有

iptables -nvL --line-number
查看规则带编号

iptables -R INPUT 3 -j ACCEPT
修改第三条规则

iptables -F 规则清空
iptables -X
iptables -Z 清空记数器

iptables -R 替换规则

/etc/sysconfig/iptables-config
配置文件
例如增加ftp主和备动访问等模块:
IPTABLES_MODULES=“ip_conntrack_ftp ip_nat_ftp”

/etc/rc.d/init.d/iptables save
centos6保存重启不丢失

/etc/sysconfig/iptables
保存在这个文件里

[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ 确定 ]
centos7保存重启不丢失

iptables -A INPUT -j REJECT
默认放在最后拒绝所有

iptables -I INPUT -p tcp --dport 22 ACCEPT
放行22端口

iptables -I INPUT -s 192.168.1.5 -j DROP
在前面新增拒绝这个ip的所有通信,不写哪行就默认第1行

iptables -I INPUT 3 -s 192.168.1.3 -j DROP
插入一条规则到第3行

iptables -D INPUT -s 192.168.1.5 -j DROP
删除这条规则

iptables -L -n --line-number
看序号,直接删除序号对应的也可以
iptables -t filter -D INPUT 1

直接拒绝icmp 的请求包
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
这时候尝试ping这台主机的话会出现
Reply from 192.168.50.131: Destination port unreachable.

iptables -t filter -P INPUT ACCEPT
input链默认全部允许

如果centos7 做为防火墙或路由网关,那就要两块网卡,内网卡不能设置网关,
只在里面填IP地址和子网掩码,如果再加一块网卡的话,如果从第一个配置文件
ifcfg-eth0复制的话,要注销掉uuid和mac地址,其它名称也要改成对应的。

开启centos7路由转发功能:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

马上生效:
sysctl -p

查看路由:
route -n

添加静态路由(放入脚本开机启动):
route add -net 192.168.100.0/24 gw 192.168.90.20

另一种方法加静态路由:
改配置文件(如果没有就增加这个文件,route-eth?要和出口网关对应上):
vi /etc/sysconfig/network-scripts/route-eth1
ADDRESS0=192.168.100.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.90.20
如果有多个下一跳就把上面的0依次改为1…n
重启网卡服务

只允许22连接centos7路由器,把input链改为默认禁止所有连接,只开22:
iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -P INPUT DROP

iptables在中间以路由模式对其它网段进行过滤全部用FORWARD链
禁止两个网段互ping
iptables -t filter -I FORWARD -p icmp -s 192.168.80.0/24 -d 192.168.100.0/24 -j DROP

禁止80段访问100的远程桌面,但是他可以反向连接
iptables -t filter -I FORWARD -p tcp -s 192.168.80.0/24 -d 192.168.100.0/24 --dport 3389 -j DROP

禁止80段访问100段的123主机的远程桌面,但是他可以反向连接
iptables -t filter -I FORWARD -p tcp -s 192.168.80.0/24 -d 192.168.100.123/32 --dport 3389 -j DROP

基于状态包过滤规则:
–state(NEW,ESTABLISHED,INVALID,RELATED)
new 表示该包属于一个新连接
related表示属于已建立的连接,类似于防火墙上的server-map表(ftp连接要用这个)
iptables -t filter -A INPUT -m state --state RELATED -j ACCEPT

禁止单个方向不能拼通
iptables -I FORWARD -p icmp -m icmp --icmp-type echo-request -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP

禁止多个端口连接
iptables -A FORWARD -p tcp -m multiport --dports 1:1024,3389 -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.80.1-192.168.80.10 -j DROP
限制IP范围段访问

iptables -A FORWARD -p tcp -m limit --limit 3000/second -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP
两个IP地址之间限速(一秒不能超过3000个)

对每个用户限速(每秒只允许最多300个数据包通过限制):
写个脚本生成:
vi /etc/sysconfig/limit.sh
for (i=2;i<254;i++)
do
iptables -I FORWARD -s 192.168.10. i − j D R O P i p t a b l e s − I F O R W A R D − s 192.168.10. i -j DROP iptables -I FORWARD -s 192.168.10. i−jDROPiptables−IFORWARD−s192.168.10.i -m limit --limit 300/sec --limit-burst 400 -j ACCEPT
done

瞬间流量控制(5为数量包的数量):
-m limit --limit-burst 5

限制最大连接数(最多2个连接上去远程桌面):
iptables -A FORWARD -p tcp --dprot 3389 -m connlimit --connlimit-above 2 -s 192.168.80.0/24 -d 192.168.100.0/24 -j DROP

限制MAC地址访问:
iptables -A INPUt -m mac --mac-source C0-9F-8D-5F-6D

限制这个主机的MAC地址访问80网段:
iptables -A FORWARD -d 192.168.80.0/24 -m mac --mac-source C0-9F-8D-5F-6D

LOG动作日志设置在/etc/syslog.conf中,日志记录在:/var/log/message里面
添加iptabls-icmp标记,方便在message里查找
iptables -t filter -I FORWARD -p icmp -d 192.168.100.0/24 -j LOG --log-prefix “iptables-icmp”
iptables -t filter -A FORWARD -p icmp -d 192.168.100.0/24 -j REJECT
先记录日志,再阻止连接

centos7做为web服务器,用iptables保护,只允许123地址远程过来:
iptables -t filter -P INPUT DROP
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -I INPUT -p tcp --dport 22 -s 192.168.10.123/32 -j ACCEPT

recent模块实现服务器安全:
–seconds 指定时间
–set 将地址添加到列表,并更新信息,包含地址加入时间戳。
–rcheck 检查地址是否在列表,以第一个匹配开始计时。
–name 设定列表名,默认DEFAULT
–rsource 源地址,此为默认
–rdest目的地址
–remove列表中删除相应地址
–update和rcheck类似,以最后一个匹配开始计算时间
–hitcount命中次数

SSH连接一个客户端60秒只能连接2回,防穷举攻击,表名定义为SSHPOOL表
iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --rcheck --seconds 60 --hitcount 2 -j DROP //负责读表中的记录是否过了2个
iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --set -j ACCEPT //负责记录连接客户端数量
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT //当已建立了,就允许进入。

保护网站防ddos攻击,每秒建立连接数限制:
iptables -t filter -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix “DDOS” --log-ip-options //先进行日志记录
iptables -t filter -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP //连接数量限制
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT //已建立的连接不阻止。

设置打开端口钥匙(指定ping这个开启22服务的服务器,来打开允许ssh连接,完了再ping一个包就自动关闭连接):
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -j LOG --log-prefix “SSHOPEN” //先记录连接日志
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -m recent --set --name sshopen --rsource -j ACCEPT
//指定ping过来包为1078大小,包含IP头20和icmp头8,所以应该ping -l 1050
iptables -t filter -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 60 --name sshopen --rsource -j ACCEPT //看sshopen表中60秒内的记录如果有源地址就允许访问tcp22端口
iptables -t filter -AINPUT -p icmp --icmp-type echo-request -m length --length 1178 -m recent --name sshopen --remove -j ACCEP //ping个1178包大小就删除22端口连接了
iptables -A INPUT -m state --state ESTABLISHED -j ACCEP //已建立的就允许连接

保护网段安全,先改forward默认drop
从ens34网卡进来的,只可以访问此目标网段内的所有主机3389,其它禁止
iptables -t filter -I FORWARD -p tcp --dport 3389 -d 192.168.80.0/24 -i ens34 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEP //已建立的就允许连接,不然回不了包,建立不起来

NAT地址转换上网(外网ip是192.168.90.10):
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens34 -j SNAT --to-source 192.168.90.10
如果有多个外线IP就:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens34 -j SNAT --to-source 192.168.90.10-192.168.90.12

端口映射(端口映射前必须先做好上面的nat地址转换):
iptables -t nat -A PREROUTING -i ens34 -d 192.168.90.10/32 -p tcp --dport 4000 -j DNAT --to 192.168.80.123:3389

修改通过iptables路由的TTL值,来迷惑攻击者
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 2 //经过就增加2个TTL值
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-dec 3 //经过就删除3个TTL值
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 30 //改TTL回显为30开始递减

iptables应用大全相关推荐

  1. Linux Iptables 语法大全

    Linux Iptables 语法还是比较重要的,让我们来看看有些值得我们关注. 1. 对链的操作 建立一个新链 (-N). 删除一个空链 (-X). 改变一个内建链的原则 (-P). 列出一个链中的 ...

  2. Iptables命令大全

    1./etc/init.d/iptables stop        #关闭iptables命令 2.iptables -nL                        #查看iptables详细 ...

  3. Ubuntu常用命令大全[显示桌面]

    Ubuntu常用命令大全 查看软件xxx安装内容 #dpkg -L xxx 查找软件 #apt-cache search 正则表达式 查找文件属于哪个包 #dpkg -S filename apt-f ...

  4. linux web服务器,防火墙iptables最简配置

    配置防火墙(服务器安全优化) 安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) # iptables –P INPUT ACCEPT # iptables –P OUTP ...

  5. RedHat/CentOS系统信息查看命令大全

    RedHat/CentOS系统信息查看命令大全 http://yangdawei50.blog.163.com/blog/static/1207171082010105114348904/ 系统 # ...

  6. 来不及解释!Linux常用命令大全,先收藏再说

    摘要:Linux常用命令,很适合你的. 一提到操作系统,我们首先想到的就是windows和Linux.Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件.相比较Windo ...

  7. Linux 免费学习路线大全,你想要的都在这里啦(持续更新,欢迎收藏❤️关注点赞加评论)

    为什么学 Linux? 相比于 Windows,Linux 免费.开源.安全.灵活.稳定.便于开发,所以更受企业青睐,甚至 90% 以上 的企业应用都是用 Linux 服务器部署的. 无论是前端.后端 ...

  8. 百度最全的LINUX和Redhat学习教程下载帖大全

    . 实例图解Red Hat Linux 9应用指南 . Redhat Linux 9中文官方文档 . Red Hat Linux学习基础教程 . Red Hat Linux 9.0魔鬼式培训教程 . ...

  9. linux系统信息 命令,Linux_Linux系统信息查看命令大全,系统    # uname -a # - phpStudy...

    Linux系统信息查看命令大全 系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinf ...

最新文章

  1. mybatis-plus对datetime返回去掉.0_华为AI认证-TensorFlow2.0编程基础
  2. MYSQL 查询数据排序数据和分组数据
  3. 《深入Java虚拟机》笔记
  4. linux网卡O I流量查询,查看linux server网络I/0流量的shell脚本
  5. windows上怎么干净彻底的卸载oracle
  6. python123io如何编辑_计算机二级python学习教程(1) 教大家如何学习python
  7. 开发Servlet的方法(2)
  8. (一)UI设计的一些常识
  9. [RK3288][Android7.1][Camera] IMX307 mclk 37.125M补丁
  10. 【WLAN】WLAN室内无线信道模型分析及matlab仿真
  11. 试题 基础练习 圆的面积
  12. 聊聊 GPU 的计算能力上限
  13. 走进小作坊(二十)----商道:胡雪岩叱咤商场的经营智慧
  14. 2019年浙江大学计算机考研复试线,2019年浙江大学考研复试分数线已经公布
  15. TI达芬奇系列TMS320DM8168浮点DSP C674x + ARM Cortex-A8高性能视频处理器
  16. 教你如何让windows系统的C盘空间变富裕,永远都不会用完。
  17. 使用TLC2543来读取电压
  18. 一个小的UGM的Demo
  19. 文本输出API函数:TextOut,ExtTextOut,DrawText,DrawTextEx,PolyTextOut,TabbedTextOut
  20. 编程实用工具大全(前后端皆可用,不来瞅瞅?)

热门文章

  1. 使用http.sys,让delphi 的多层服务飞起来
  2. Rabbitmq之Federation配置
  3. cupy 安装时提示报错 Exception: Your CUDA environment is invalid.
  4. oldlinux 新老论坛索引对照表
  5. UpdatePanel 控件简介
  6. 修改huggingface模型的储存位置的设置方法
  7. 全球NTP服务器列表
  8. “前线”与“后方”—数字化转型时代理解华为品质服务的价值
  9. CAN协议标准及相关内容
  10. 芯片设计之流水线设计-IC学习笔记(四)