博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[svc]linux iptables实战
阅读量:6482 次
发布时间:2019-06-23

本文共 5509 字,大约阅读时间需要 18 分钟。

参考:

链和表

9e792b8fgy1fmm5p8lmdgj20fx0bat9i.jpg

9e792b8fgy1fmm5rgjkmcj20la07yad2.jpg

参考:

9e792b8fgy1fmm488na2dj20f70563yo.jpg

9e792b8fgy1fmm5782diij209c0fdt98.jpg

配置

9e792b8fgy1fmm3x4pzhmj20hf0auqbx.jpg

作为服务器

用途 链/表
过滤到本机的流量: input链 filter表
过滤到本地发出的流量: output链 filter表

作为路由器

用途 链/表
过滤转发的流量: forward链 filter表
过滤转发的数据的源/目标进行修改(NAT) pre-outing, post-routing

常见选项

iptables-L --list-t  filter/nat-n, --numeric      Numeric output.  IP addresses and port numbers will be printed in numeric format.-F, --flush-chain-X, --delete-chain-p, --protocol protocol    tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh
echo 1 > /proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -s 172.16.93.0/24  -j SNAT --to-source 10.0.0.1iptables -t filter -Liptables -t nat -L -nsudo iptables -F && sudo iptables -X && sudo iptables -F -t nat && sudo iptables -X -t natiptables -P FORWARD ACCEPTiptables -t nat -L -n --line-numberiptables save #保存cli规则iptables -F #清除所有iptables规则iptables -F -t mat # 清空nat表参考:http://quenywell.com/10-usefull-iptables-rules-examples/清除IPTables规则允许SSH入站连接设置IPTables默认策略只允许从特定网段访问SSH服务器允许访问Loopback允许外网Ping服务器允许HTTP和HTTPS入站连接允许使用邮件服务允许使用外网DNS解析同一条规则设置多个端口默认是accept:一般情况下,INPUT、OUTPUT、FORWARD链的默认策略都是ACCEPT。如果想更改默认策略为DROP,可以用以下命令(注意大小写):#iptables -P INPUT DROP#iptables -P OUTPUT DROP#iptables -P FORWARD DROP

增删改查iptables

- 列出规则iptables -L- 插入一个规则iptables -I INPUT 3 -p tcp -dport 22 -j ACCEPT- 删除一个规则iptables -D INPUT 3iptables -D INPUT -s 192.168.1.2 -j DROP- 删除所有规则iptables -F-s ‘!’ 192.168.1.x/24  加上!排除地址

匹配参数

- 基于ip地址-s 192.168.1.1-d 10.0.0.0/8- 基于接口-i eth0-o eth1-排除参数-s '!'192.168.1.0/24

input output

控制到本机的网络流量

iptables -A INPUT -s 192.168.1.100 -j DROPiptables -A INPUT -p tcp --dport 80 -j DROPiptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROPiptables -A INPUT -i eth0 -j ACCEPT注意大小i,小i是指定接口。-I  -D -A

forward

- 禁止192.168.1.0/24到10.1.1.0/24的流量iptables -A FORWARD -s 192.168.1.0/24 -d 10.0.0.0/24 -j DROP iptables save # 报错cli规则iptables -F #清除所有iptables规则

源地址转换

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j SNAT --to-source 218.29.30.31不加-t时默认是filter语法参数:-I:第一行插入-A:最后追加 -i/o:指的是数据要进入或出去所要经过的端口,如eth1,eth0,pppoe等-p:你所要指定的协议 -s:指定来源ip,可以是单个ip如192.168.109.131,也可以是一个网络 192.168.109.0/24,还可以是一个域名如163.com,如果你填写的是域名系统会自动解析出他的ip并在iptables里显示--sport:来源端口 -d:指定目标ip--dport:目标端口 -j:执行参数ACCEPT或DROP,REJECT一般不用-A 在指定链的末尾添加(append)一条新的规则-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除-I 在指定链中插入(insert)一条新的规则,默认在第一行添加-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换-L 列出(list)指定链中所有的规则进行查看-E 重命名用户定义的链,不改变链本身-F 清空(flush)-N 新建(new-chain)一条用户自己定义的规则链-X 删除指定表中用户自定义的规则链(delete-chain)-P 设置指定链的默认策略(policy)-Z 将所有表的所有链的字节和数据包计数器清零-n 使用数字形式(numeric)显示输出结果-v 查看规则表详细信息(verbose)的信息-V 查看版本(version)-h 获取帮助(help)如果配置的是INPUT(进入),则来源ip是运程ip,目标端口就是本机;OUTPUT相反iptables的执行优先级: iptables的执行顺序是自上而下,当有配置产生冲突时,前面执行的生效。

INPUT OUTPUT FORWARD区分

参考:

INPUT: dst IP is on the host, even it has multiple port with multiple subnet

OUTPUT: src IP is from the host, either port

FORWARD: Neither dst IP on the host nor src IP from the host

9e792b8fgy1fmm5smix0ej205h0e274m.jpg

For example, to router AINPUT is:192.168.10.1 -> 192.168.10.199192.168.10.1 -> 192.168.2.1OUTPUT is:192.168.10.199 -> x.x.x.x192.168.2.1 -> x.x.x.xFORWARD is:192.168.10.1 -> 192.168.2.199192.168.10.1 -> 192.168.8.1192.168.10.1 -> 192.168.8.199

常见配置

参考:

#开启22端口iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT#关闭所有端口iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP#开启80端口,HTTP服务iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT#开启3306端口,MYSQL服务iptables -A INPUT -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT#开启53端口,DNS服务iptables -A OUTPUT -p udp --dport 53 -j ACCEPTiptables -A INPUT -p udp --sport 53 -j ACCEPTiptables -A INPUT -p udp --dport 53 -j ACCEPTiptables -A OUTPUT -p udp --sport 53 -j ACCEPT#开启20,21端口,FTP服务iptables -A INPUT -p tcp --dport 21 -j ACCEPTiptables -A INPUT -p tcp --dport 20 -j ACCEPTiptables -A OUTPUT -p tcp --sport 21 -j ACCEPTiptables -A OUTPUT -p tcp --sport 20 -j ACCEPT#由于FTP在上传下载中会使用到任意的端口,故先设置FTP使用的端口,再打开端口vi /etc/vsftpd.conf#在配置文件的最下面 加入pasv_min_port=30001pasv_max_port=31000iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPTiptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT#打开PINGiptables -A OUTPUT -p icmp -j ACCEPTiptables -A INPUT -p icmp -j ACCEPT#替换安全的22,80输出端口iptables -R OUTPUT 1 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -R OUTPUT 2 -p tcp --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT#保存IPTABLES设置service iptables save#查看是否保存成功cat /etc/sysconfig/iptables#出现以下内容代表设置成功:# Generated by iptables-save v1.3.5 on Thu Sep  8 19:41:30 2011*filter:INPUT DROP [103:6135]:FORWARD DROP [0:0]:OUTPUT DROP [12:964]-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT-A INPUT -p udp -m udp --sport 53 -j ACCEPT-A INPUT -p udp -m udp --dport 53 -j ACCEPT-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT-A INPUT -p tcp -m tcp --dport 30001:31000 -j ACCEPT-A INPUT -p icmp -j ACCEPT-A OUTPUT -p tcp -m tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT-A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT-A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT-A OUTPUT -p tcp -m tcp --sport 21 -j ACCEPT-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT-A OUTPUT -p tcp -m tcp --sport 30001:31000 -j ACCEPT-A OUTPUT -p icmp -j ACCEPTCOMMIT# Completed on Thu Sep  8 19:41:30 2011#另外,按编号查看规则使用以下命令iptables -L -n --line-number

转载地址:http://frfuo.baihongyu.com/

你可能感兴趣的文章
.NET 同步与异步之锁(Lock、Monitor)(七)
查看>>
前端大牛们都学过哪些?
查看>>
在iOS当中发送电子邮件和短信
查看>>
13~1003的和
查看>>
pycharm如何新项目如何不默认创建虚拟环境(吐槽)
查看>>
Loadrunner检查点小结(很经典)
查看>>
MySQL字段类型详解
查看>>
ORACLE 的游标
查看>>
虚拟机安装的UBUNTU全屏的方法:
查看>>
java虚拟机类加载器
查看>>
ASP.NET状态管理之八(会话Session)
查看>>
background
查看>>
转载:大型网站架构演变和知识体系
查看>>
set集合
查看>>
SVN服务器的搭建和使用
查看>>
mvc中枚举的使用和绑定枚举值到DropDownListFor
查看>>
多目标跟踪的评价指标
查看>>
HTTPS(SSL)详解以及PHP调用方法
查看>>
突发小事件,USB接口问题
查看>>
Nginx负载均衡配置实例详解
查看>>