Linux
常用
管理语句
Shell命令(变量)
正则表达式
重定向
EXPECT
流程控制
函数
日志
SED
sed常用操作
sed组合命令
sed脚本
AWK
awk常用
awk流程控制
awk脚本
SSH
SSH密钥的批量分发与执行
SSH连接很慢
ACL文件访问控制
计划任务
常用语句
批量添加用户和密码
批量修改密码
临时和永久关闭Selinux
修改主机名
Linux内核参数
无人值守安装
ISO镜像(mondorescue)
软件管理
SYSTEM服务
YUM本地仓
存储管理
逻辑卷LVM
磁盘阵列RAID
备份恢复相关命令
fio磁盘性能测试
内存管理
IPTABLES防火墙
FIREWALLD防火墙
curl请求
Linux问题
漏洞修复
限制网卡带宽
CentosYUM源
rsyslog 占用内存过高
df -h 卡住解决
Linux故障问题
网络配置
升级内核
Openssl生成证书
CENTOS6升级7
本文档使用MrDoc发布
返回首页
-
+
IPTABLES防火墙
2019年11月21日 23:15
admin
#安装 yum install iptalbes #启动与停止服务 systemctl start iptables systemctl stop iptables systemctl enable iptables systemctl disable iptables systemctl is-enabled iptables --- #IPTABLES 规则(Rules) ####牢记以下三点式理解iptables规则的关键: Rules包括一个条件和一个目标(target) 如果满足条件,就执行目标(target)中的规则或者特定值。 如果不满足条件,就判断下一条Rules。 目标值(Target Values) ####下面是你可以在target里指定的特殊值: ACCEPT – 允许防火墙接收数据包 DROP – 防火墙丢弃包 QUEUE – 防火墙将数据包移交到用户空间 RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。 #命令: >####基本语法:iptables [-t 表] [操作命令] [链] [规则匹配器] [-j 目标动作] |表 | 说明 | 支持的链 -|-|- raw | 一般是为了不再让iptables对数据包进行跟踪,提高性能 | PREROUTING、OUTPUT mangle | 对数据包进行修改 | 五个链都可以 nat | 进行地址转换 | PREROUTING、OUTPUT、POSTROUTING filter(默认) | 对包进行过滤 | INPUT、FORWARD、OUTPUT >####Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表: #INPUT链 #处理来自外部的数据。 OUTPUT链 #处理向外发送的数据。 FORWARD链 #将数据转发到本机的其他网卡设备上。 PREROUTING链 #路由前过滤 POSTROUTING #路由后过滤 >![](/media//202005/2020-05-10081546450659.png) 常用操作命令 | 说明 -|- -A | 在指定链尾部添加规则 -D | 删除匹配的规则 -R | 替换匹配的规则 -I | 在指定位置插入规则(例:iptables -I INPUT 1 --dport 80 -j ACCEPT(将规则插入到filter表INPUT链中的第一位上) -L/S | 列出指定链或所有链的规则 -F | 删除指定链或所有链的规则 -N | 创建用户自定义链[例:iptables -N allowed] -X | 删除指定的用户自定义链 -P | 为指定链设置默认规则策略,对自定义链不起作用 -Z | 将指定链或所有链的计数器清零 -E | 更改自定义链的名称[例:iptables -E allowed disallowed] -n | ip地址和端口号以数字方式显示[例:iptables -nL] 常用规则匹配器 | 说明 -|- -p tcp/udp/icmp/all | 匹配协议,all会匹配所有协议 -s addr[/mask] | 匹配源地址 -d addr[/mask] | 匹配目标地址 --sport port1[:port2] | 匹配源端口(可指定连续的端口) --dport port1[:port2] | 匹配目的端口(可指定连续的端口) -o interface | 匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT(例:iptables -A FORWARD -o eth0) -i interface | 匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。 --limit | 匹配数据表速率 --icmp-type | 匹配icmp类型(使用iptables -p icmp -h可查看可用的ICMP类型) --tcp-flags mask comp | 匹配TCP标记,mask表示检查范围,comp表示匹配mask中的哪些标记。(例:iptables -A FORWARD -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT 表示匹配SYN和ACK标记的数据包) 目标动作 | 说明 -|- ACCEPT | 允许数据包通过 DROP | 丢弃数据包 REJECT | 丢弃数据包,并且将拒绝信息发送给发送方 SNAT | 源地址转换(在nat表上)例:iptables -t nat -A POSTROUTING -d 192.168.0.102 -j SNAT --to 192.168.0.1 DNAT | 目标地址转换(在nat表上)例:iptables -t nat -A PREROUTING -d 202.202.202.2 -j DNAT --to-destination 192.168.0.102 REDIRECT | 目标端口转换(在nat表上)例:iptables -t nat -D PREROUTING -p tcp --dport 8080 -i eth2.2 -j REDIRECT --to 80 MARK | 将数据包打上标记;例:iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 60 LOG | 将数据包信息记录syslog日志 ####PS: ####1、目标地址转换一般在PREROUTING链上操作 ####2、源地址转换一般在POSTROUTING链上操作 --- ###开放指定的端口 iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机) iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行 iptables -A INPUT -m limit --limit 500/sec -j ACCEPT #当每秒钟数据包个数低于500时接受入站连接,否则拒绝连接 iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口 iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口 iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口 iptables -A INPUT -j reject #禁止其他未允许的规则访问 iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问 ###屏蔽IP iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令 iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令 iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令 iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是 ###删除已添加的iptables规则 iptables -F #清除所有规则 iptables -L -n --line-numbers #将所有iptables以序号标记显示 iptables -D INPUT 8 #比如要删除INPUT里序号为8的规则 ###地址端口转换 iptables -t nat -A POSTROUTING -d 192.168.0.102 -j SNAT —to 192.168.0.1 #SNAT源地址转换 iptables -t nat -A PREROUTING -d 202.202.202.2 -j DNAT —-to-destination 192.168.0.102 #DNAT目标地址转换 iptables -t nat -D PREROUTING -p tcp —dport 8080 -i eth2.2 -j REDIRECT —to 80 #REDIRECT目标端口转换 ###IP转换 iptables -t nat -A OUTPUT -d 10.64.137.201 -j DNAT --to-destination 10.202.115.88 #访问10.64.137.201会转为访问10.202.115.88 iptables -t nat -A OUTPUT -d 47.107.96.62 -p tcp --dport 62080 -j DNAT --to-destination 192.168.110.146:80 #访问47.107.96.62的62080端口,重定向为192.168.110.146:80 ###本地端口转发 将外网访问本地的4444端口的流量转发到本地的22端口 iptables -t nat -A PREROUTING -p tcp --dport 4444 -j REDIRECT --to-ports 22 #删除 iptables -t nat -D PREROUTING -p tcp --dport 4444 -j REDIRECT --to-ports 22 ###远程端口转发 使用192.168.171.139:5555去访问192.168.171.1:9999端口,那么需要在192.168.171.139的机器上执行下面的命令 iptables -F -t nat iptables -t nat -A PREROUTING --dst 192.168.171.139 -p tcp --dport 5555 -j DNAT --to-destination 192.168.171.1:9999 iptables -t nat -A POSTROUTING --dst 192.168.171.1 -p tcp --dport 9999 -j SNAT --to-source 192.168.171.139 --- #防火墙备份与还原 >##备份 iptables-save > firewall.bak >##还原 iptables-restore < firewall.bak
分享到: