Iptables基础整理
Iptables基础框架
aaarticlea/png;base64,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r179L/PmzVvR1tZ2c1NT0/B0108+gySjt7f3f+/bt++tk9see+yxFVOGFUfEcF5e3kXHjx8/9kzfJOfezTffHNddd13cfvvt8c53vjNqampiz549cc8990ReXl685S1viYiIoqKieMUrXhGf/vSnIz8/P5YtWxZbtmyJ+++/P2666aZZW89zNQ8Az45wBIBnLJFIxK233hpvetOb4oEHHoirrrrqlGMdVJgdHn/88eURMTJN1/FHHnmkOJ7cQZKOU5T5Li4uvryhoeFL3d3df9bR0XFXRAxHRIyMjOzYuXPnSyorK6+PiJh63shMjI+PD016eVKJ8sbGxu8WFxdfMT4+Pnzo0KGZJX2clxoaGuJrX/tafPGLX4y3ve1tMTAwEDU1NfHKV74y3vGOd5z0GMtHPvKR+NznPhcf/vCHY2BgIOrr6+OGG26I173udbO6pudqHgCeOeEIAM/K0qVL493vfnfccccd8fznP3/aMQ4qzB7Hjh3be4Yh0z5P9cgjj5REPPmYzebNm6fu6sjce19bW9uHn+naMnNMZ/v27S95pvfl/LNo0aL42Mc+dsZxhYWFccstt8Qtt9xyxrHr1q2b9gDoU7XP9jwAnF3CEQCetbe85S3xwAMPxF133RXXXnvtU/odVAgAwPnMA98APGvJZDJuu+22+OEPf/iUijan46BCAADOB3aOADArli1bFjfccEPcd999M77GQYUAAJwP7BwB4Iyuu+66iIi48sorTzvurW99a6xatepp3fsjH/lIXHnllfHhD384fuVXfiXuueceBxUCAPCcSpzrBQDMBc3NzemIcIges2bDhg0REdHS0uL/1Txn/FnGbPNnGXChsHMEAAAAyGrCEQAAACCrCUcAAACArCYcAQAAALKacAQAAADIasIRAAAAIKsJRwAAAICsJhwBAAAAsppwBAAAAMhqwhEAAAAgqwlHAAAAgKwmHAEAAACymnAEAAAAyGrCEQAAACCrCUcAAACArCYcAQAAALKacAQAAADIasIRAAAAIKsJRwAAAICsJhyBp6GwsPCK5ubm9MSv8fXr13ctXbr0KxFR8VyuY+XKlX+/cuXKf5rSXNrU1JSqra39g8mN1dXVN61fv74rIhLP3QoBAAAuHMIReAZaWlpKW1pacrdt2/bS/Pz8S1auXPnnM7kuPz9/9dq1a7dHRMGzmf/IkSPf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p9PZ0+FwfC3pA9M0O7Vp00YvvPCC3njjDdnt9nNO/9lnn8k0Ta1atUrHjh2T2+3WvHnzipwNczqduv76670/AwYMkKQiw3r16qVbbrmlyLynTZumiRMnatu2bbrtttv0ySefaN26dZKkdevWeX/69u2r/v37q3///srKylL//v21Z88e3XnnnQoODtasWbOUmpqqZ555RkePHtWkSZOKrUdwcLDGjRuntWvXatCgQbLZbD6maY7Nz8+Ps9vts3v06FH8+ntcNOdbo86udz169FBmZqZiY2O942zbtk1du3ZVbGys3G63pNNnPl0ulyIiIiRJqamp+uqrrzR16lTFxcVp3759pba1rPpsGIYuu+wy9e3bV2+99ZZcLpf3yhhcGGrZadSy8iltX6u8tSY+Pl4JCQkaMWKEGjZsKF9fX7Vr1049evQ47zaxfwbUfIQjQDXJzs5WYGBgqb3nZ2RklPl+WQpPm5WVpU2bNunBBx8s9vhCm82mu+66q1z3PleW++67T+3atdO8efNKfD8vL08rV67U2LFjFRjI0wvPl91uv8rhcKw1TXOLpIiGDRtq+vTpWrVqlW688cZSH2WZlpamgQMHKjw8XEFBQcrOztaMGTP00EMP6amnntKUKVN08803q3nz5kWmW79+vb788kt9+eWX+uSTTyTJ+/uXX36p9957r9iygoKCZLPZtGXLFvXt27fM9Vm/fr3Wr1+vgIAArV+/XmFhYZKkJ598Unv37tXNN9+smJgYzZ49u8zOFxs2bKinn35aq1evLugPINgwjL+63e54h8Px56uvvrp6em60sAutUYXrXbNmzdS+fXvt2LHD+/727dt1//33y8/PT9HR0ZKk/fv3KzU1VX/4wx8knf77ateunSIiIhQeHq7IyMgy21ye+hwaGqrhw4frgw8+OOc2QOmoZSWjlpVP4X2titSa5s2bKyAgQC+99JIyMzMrrT3snwE1G+EIcJF5PB7t3btXixYt0n333VfsfdM0FRcXp0WLFmno0KEVmndJ0yYkJCgvL0+dOnUqcZp27drp8OHDFb5C5XwZhqGZM2dqy5Yt+uKLL4q9f+jQIaWnp6tLly4XpT2XIofDMd8wjO8l3RYUFKTx48fr448/1t13333Oe4EXLFigdevWqVGjRlq3bp3uuOMONW7cWNdee61+/fVXbd++XVdcccUFte/1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" alt="" />
Iptables基于内核netfilter安全框架运行,主要有过滤数据包和NAT地址转换功能。
Iptables基本表链结构
filter
|
INPUT
|
FORWARD
|
OUTPUT
|
|
|
nat
|
|
|
OUTPUT
|
PREROUTING
|
POSTROUTING
|
mangle
|
INPUT
|
FORWARD
|
OUTPUT
|
PREROUTING
|
POSTROUTING
|
raw
|
|
|
OUTPUT
|
PREROUTING
|
|
Iptables主要通过规则链的方式进行数据包的过滤和转发以及NAT功能,表是具有相同功能的规则链的集合,方便我们进行管理。
Iptables常用条件类型
条件
|
参数
|
范例
|
源IP地址
|
-s
|
-s 172.16.1.1,172.16.1.2 -s 172.16.1.0/24 ! -s 172.16.1.0/24
|
目的IP地址
|
-d
|
-d 172.16.1.1,172.16.1.2 -d 172.16.1.0/24 ! -d 172.16.1.0/24
|
源端口
|
-p tcp -m tcp --sport
-p tcp -m multiport --sports
|
-p tcp -m tcp --sport 22 -p tcp -m tcp --sport 22:25
-p tcp -m tcp --sport :22 -p tcp -m tcp --sport 80:
-p tcp -m tcp ! --sport 22 -p tcp -m multiport --sports 22,25
|
目的端口
|
-p tcp -m tcp --dport
-p tcp -m multiport --dports
|
-p tcp -m tcp --dport 22 -p tcp -m tcp --dport 22:25
-p tcp -m tcp --dport :22 -p tcp -m tcp --dport 80:
-p tcp -m tcp ! --dport 22 -p tcp -m multiport --dports 22,25
|
协议
|
-p
|
-p tcp ! -p tcp (tcp udp icmp)
|
网卡
|
-i 流入网卡 / -o流出网卡
|
-i eth0 ! -i eth0 / -o eth0 ! -o eth0
|
Iptables常用扩展模块
扩展模块
|
参数
|
范例
|
tcp
|
-p tcp -m tcp --dport
-p tcp -m tcp --sport
-p tcp -m tcp --dport --tcp-flags
-p tcp -m tcp --dport --syn
|
-p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT
-p tcp -m tcp --dport 22 --syn -j REJECT
|
udp
|
-p udp -m udp --dport
-p udp -m udp --sport
|
略
|
multiport
|
-p tcp -m multiport --dports
-p tcp -m multiport --sports
|
略
|
icmp
|
-p icmp -m icmp --icmp-type 8/0
-p icmp -m icmp --icmp-type 8
-p icmp -m icmp --icmp-type "echo-request"
|
-p icmp -m icmp --icmp-type 8/0 -j REJECT 禁止别人ping自己
-p icmp -m icmp --icmp-type 8 -j REJECT
-p icmp -m icmp --icmp-type "echo-request" -j REJECT
|
state
|
-m state --state
|
-m state --state RELATED,ESTABLISHED -j ACCEPT
|
Iptables常用动作
动作
|
参数
|
范例 |
ACCEPT
|
-j ACCEPT
|
iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT
|
DROP
|
-j DROP
|
iptables -t filter -I INPUT -p tcp --dport 22 -j DROP
|
REJECT
|
-j REJECT <--reject-with>
|
iptables -t filter -I INPUT -p tcp --dport 22 -j REJECT --reject-with icmp-host-unreachable (提示为什么被拒绝)
|
LOG
|
-j LOG <--log-level> <--log-prefix>
|
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j LOG --log-prefix "want-in-from-port-22"
|
SNAT
|
-j SNAT --to-source
|
iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 192.168.1.146
|
DNAT
|
-j DNAT --to-destination
|
iptables -t nat -I PREROUTING -d 192.168.1.146 -p tcp --dport 3389 -j DNAT --to-destination 10.0.0.6:3389
|
MASQUERADE
|
-o eth0 -j MASQUERADE
|
iptables -t nat -I POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE (动态SNAT)
|
REDIRECT
|
-j REDIRECT --to-ports
|
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
|
开启内核转发功能
在配置NAT网关、路由器或网络防火墙的时候,需要开启内核转发功能。
#使用如下两种方法均可临时开启核心转发,立即生效,但是重启网络配置后会失效。
方法一:echo 1 > /proc/sys/net/ipv4/ip_forward
方法二:sysctl -w net.ipv4.ip_forward=1
#使用如下方法开启核心转发功能,重启网络服务后永久生效。
配置/etc/sysctl.conf文件(centos7中配置/usr/lib/sysctl.d/00-system.conf文件),在配置文件中将 net.ipv4.ip_forward设置为1
Iptables常用操作
查看规则
|
iptables -nvL
iptables -t filter -nvL
iptables -t filter -nvL INPUT
iptables --line-number -nvL INPUT
|
清空规则
|
iptables -F 清空filter表的规则
iptables -F INPUT
|
增加规则
|
iptables -t filter -I INPUT -s 192.168.1.1 -j DROP // DROP表丢弃不响应 REJECT表拒绝并响应
iptables -t filter -I INPUT 2 -s 192.168.1.1 -j DROP
iptables -t filter -A INPUT -s 192.168.1.1 -j DROP
|
删除规则
|
iptables -t filter -D INPUT 3 删除INPUT链中第3条规则
iptables -t filter -D INPUT -s 192.168.1.1 -j ACCEPT
|
修改规则
|
iptables -t filter -R INPUT 1 -s 192.168.1.1 -j REJECT
只能改动作,参数条件一个不能少,推荐先删除后添加的方式
|
修改默认规则
|
iptables -t filter -P FORWARD DROP
|
保存规则
|
service iptables save
/etc/init.d/iptables save
cat /etc/sysconfig/iptables
|
白名单机制
|
iptables -P INPUT ACCEPT 默认设为ACCEPT防止清空后管理员无法登录
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -j REJECT 在规则链最后加上拒绝,实现白名单机制
|
创建自定义链
|
iptables -t filter -N IN_WEB
|
引用自定义链
|
iptables -t filter -I INPUT -p tcp --dport 80 -j IN_WEB
|
重命名自定义链
|
iptables -E IN_WEB WEB
|
删除自定义链
|
iptables -X WEB 满足两个条件:自定义链没有被引用 自定义链中没有任何规则
|
计数器清零
|
iptables -Z
|
网络防火墙配置
网络防火墙=网关+Iptables过滤
#1.开启防火墙转发功能,实现网关
[root@B ~]# vim /etc/sysctl.conf # Controls IP packet forwarding
net.ipv4.ip_forward = 1 [root@B ~]# sysctl -p // 应用参数 #2.分别添加路由记录,设置网关
[root@A ~]# route add -net 172.16.1.0/24 gw 10.0.0.88 [root@C ~]# route add -net 10.0.0.0/24 gw 172.16.1.88 #3.配置防火墙Iptables过滤规则
[root@B ~]# iptables -nvL FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination [root@B ~]# iptables -A FORWARD -d 172.16.1.13 -j ACCEPT
[root@B ~]# iptables -A FORWARD -s 172.16.1.13 -j ACCEPT #4.进行测试
[root@A ~]# ping 172.16.1.13
PING 172.16.1.13 (172.16.1.13) 56(84) bytes of data.
64 bytes from 172.16.1.13: icmp_seq=1 ttl=63 time=12.5 ms
64 bytes from 172.16.1.13: icmp_seq=2 ttl=63 time=1.03 ms [root@C ~]# ping 10.0.0.100
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
64 bytes from 10.0.0.100: icmp_seq=1 ttl=63 time=0.391 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=63 time=1.03 ms
SNAT网关配置
#严格上,配置网关=开启内核转发功能,配置方法同上
#添加SNAT功能
[root@B ~]# iptables -t nat -I POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 172.16.1.88
#测试
[root@A ~]# ping 172.16.1.13
PING 172.16.1.13 (172.16.1.13) 56(84) bytes of data.
64 bytes from 172.16.1.13: icmp_seq=1 ttl=63 time=0.796 ms
64 bytes from 172.16.1.13: icmp_seq=2 ttl=63 time=3.38 ms
64 bytes from 172.16.1.13: icmp_seq=3 ttl=63 time=1.34 ms [root@C ~]# tcpdump -i eth1 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
23:12:29.983216 IP 172.16.1.88 > 172.16.1.13: ICMP echo request, id 14715, seq 1, length 64
23:12:29.983239 IP 172.16.1.13 > 172.16.1.88: ICMP echo reply, id 14715, seq 1, length 64
23:12:30.998859 IP 172.16.1.88 > 172.16.1.13: ICMP echo request, id 14715, seq 2, length 64
DNAT网关配置
#网关配置同网络防火墙
#开启DNAT功能
[root@B ~]# iptables -t nat -I PREROUTING -d 10.0.0.88 -j DNAT --to-destination 172.16.1.13
#测试
[root@A ~]# ping 10.0.0.88
PING 10.0.0.88 (10.0.0.88) 56(84) bytes of data.
64 bytes from 10.0.0.88: icmp_seq=1 ttl=63 time=21.8 ms
64 bytes from 10.0.0.88: icmp_seq=2 ttl=63 time=2.03 ms
64 bytes from 10.0.0.88: icmp_seq=3 ttl=63 time=1.53 ms [root@C ~]# tcpdump -i eth1 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
23:31:30.079065 IP 10.0.0.100 > 172.16.1.13: ICMP echo request, id 20091, seq 1, length 64
23:31:30.079104 IP 172.16.1.13 > 10.0.0.100: ICMP echo reply, id 20091, seq 1, length 64
23:31:31.083794 IP 10.0.0.100 > 172.16.1.13: ICMP echo request, id 20091, seq 2, length 64
23:31:31.083853 IP 172.16.1.13 > 10.0.0.100: ICMP echo reply, id 20091, seq 2, lengt
Iptables基础整理的更多相关文章
- [转帖]nginx基础整理
nginx基础整理 https://www.cnblogs.com/guigujun/p/6588545.html 目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Ngin ...
- 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法
这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...
- MySQL基础整理(一)之SQL基础(未完成)
大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...
- 腾讯云:iptables基础
iptables 基础 iptables 基本命令 任务时间:5min ~ 10min iptables 可以简单理解为 Linux 系统内核级防火墙 netfilter 的用户态客户端. Linux ...
- nutch的一些基础整理
nutch的一些基础整理 原创 2015年03月22日 18:18:01 标签: nutch / 240 编辑 删除 一.关于配置文件: nutch-default.xml:爬虫的默认配置.在${nu ...
- JAVA基础整理-集合篇(一)
集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...
- Nginx基础整理
目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Nginx的主要企业功能 Nginx作为web服务器的主要应用场景包括: Nginx的安装 安装环境 快速安装命令集合 各个 ...
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)
JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应 ...
- C#基础整理
元旦整理书架发现一本小册子——<C#精髓>中国出版社2001年出版的,粗略翻了下关于C#的知识点挺全的虽然内容谈得很浅也有很多过时的内容(话说这本书是我在旧书店花5块钱淘的)我保留原有章节 ...
随机推荐
- 状态压缩---UVA6625 - Diagrams & Tableaux
比赛的时候刷出来的第一个状态DP.(期间有点没有把握是状态DP呢.) 题意:题意还是简单的.K行的方格.之后输入L1~LK 代表每一行方格数.在这些往左紧挨的方格子里填上1~N的数字. 其中右边格子的 ...
- 1923: [Sdoi2010]外星千足虫
1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1254 Solved: 799[Submit][Statu ...
- 【题解】Atcoder ARC#83 E-Bichrome Tree
哈哈~自己做出来的E题!(虽然这题被机房大佬强D极水).最开始神经错乱,写了个完全不对的贪心,竟然只错了4个点(。•ˇ‸ˇ•。) 可以发现,一个节点的子树内部和他颜色相同的节点权值和 是固定的,那么不 ...
- KNIGHTS - Knights of the Round Table 圆桌骑士 点双 + 二分图判定
---题面--- 题解: 考场上只想到了找点双,,,,然后不知道怎么处理奇环的问题. 我们考虑对图取补集,这样两点之间连边就代表它们可以相邻, 那么一个点合法当且仅当有至少一个大小至少为3的奇环经过了 ...
- BZOJ1596 [Usaco2008 Jan]电话网络 【树形dp】
题目链接 BZOJ1596 题解 先抽成有根树 设\(f[i][0|1][0|1]\)表示以\(i\)为根,儿子都覆盖了,父亲是否覆盖,父亲是否建塔的最少建塔数 转移一下即可 #include< ...
- maven打包jar源码至私服
1. setting文件 配置私服中设置的用户和密码 <servers> <server> <id>releases</id> <username ...
- Android HandlerThread分析
基础概念:HandlerThread 是一个包含 Looper 的 Thread,我们可以直接使用这个 Looper 创建 Handler,本质上还是Thread Handler 必须要和 Loope ...
- node记录
集中管理 require('sequelize'); require('node-schedule')
- Qt ------- QByteArray操作注意
使用QByteArray方法把数据存入QByteArray需要是char型数据,如果需要存入无符号8位数据,如下: QByteArray data; data[0] = 0xFF; 即使通过data[ ...
- 神经网络CNN训练心得--调参经验
1.样本要随机化,防止大数据淹没小数据 2.样本要做归一化.关于归一化的好处请参考:为何需要归一化处理3.激活函数要视样本输入选择(多层神经网络一般使用relu)4.mini batch很重要,几百是 ...