iptables:
iptables五表五链
felter表
INPUT
FORWARD
OUTPUT
nat表
PREROUTING
OUTPUT
POSTROUTING
mangle表
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
raw表
PREROUTING
OUTPUT
security表
INPUT
OUTPUT
FOEWARD
iptables的通用格式:
iptables [-t] TABLE [OPTIONS] CHAIN [NUMBER] RULE_match [-j] [target]
-t:表示type,表的种类
TABLE:意为表
CHAIN:意为链
NUMBER:表示规则条目编号
RULE_matche:表示匹配的通信包
-d:表示目录地址
-s:表示源地址
-p:表示协议
-m:要执行的扩展模块,各模块有其独特的选项
-j:将要执行动作
target:表示要执行的动作
ACCEPT:允许
DROP:拒绝
RETURN:不再匹配些规则
REJECT:拒绝,并回复特定信息
部分扩展模块介绍:
tcp:定义协议的模块
–sport:定义源端口,可以定义连续的端口,如22:80
–dport:目标端口,性能同–sport
–tcp-flags:tcp标记位
–tcp-flags SYN,ACK,FIN,RST, SYN:这个表示匹配SYN,ACK,FIN,RST中以SYN为1,ACK,FIN,RST为0,其余的忽略
–syn:是–tcp-flags的一个扩展,就是匹配三次握手的第一次
connlimit:允许的最大连接数
[!] –connlimit-above NUMBER:最大允许连接的个数,可取反
iprange:定义一个ip范围,可用作源IP与目标IP的范围
[!] –src-range:源地址范围
[!] –dst-range:目标地址范围
limit:这个模块用于定义连接频率与首次连接最大连接个数(令牌筒)
–limit RATE:定义其连接速率
–limit-burst NUM:定义首次连接次个数
state:这个模块是根拒据状态来判定数据包
[!] –state STATE:对状态流量进行操作
STATE:
ESTABLISHED:已连接
NEW:新建立连接
RELATED:关联的连接,追踪连接
INVALID:不能识别的
UNTRACKED:未追踪的连接
string:这个模块是对内容中的字符串进行匹配
–algo {bm|kmp}:匹配字符串的算法
[!] –string STRING:所要匹配的字符串
time:时间匹配数据包
–datestart:开始日期时间
–datestop:结束日期时间
–timestart:开始时间
–timestop:结束时间
[!] –monthdays:一个有的那一日
[!] weekdays:一周的那一天
multiport:定义多个不连续的端口的模块
[!] –sport:源端口21,22,80:200
[!] –dport:目标端口
部分扩展动作介绍:
DNAT:目标地址转换
–to-destination:转到那一个地址,可以跟端口,也可以跟多个连续的端口
SNAT:源地址转换
–to-source:转到那一个地址,可以跟一个商品,也可以跟多个端口
LOG:是一个开启日志的动作
–log-level NUM:开启日志的日志级别
–log-prefix:日志的前缀
MASQUERADE:IP为动态IP,连接猫的时候可以用户这个动作
–to-ports:转化的商品有那些,如80-100
REDIRECT:端口重定向
–to-ports 9090:将指定商品生定向为9090
iptables指令:
-N:创建一条新链
-X:删除一条新链
-Z:将通过规则的包与字节数置0
-S:打印现在使用的规则
-F:清除所有现有正在使用的规则
-L:打印现在使用的规则列表
-n:对协议号不进行反解
-v:显示详细信息
-vv:显示更加详细的信息
–line-numbers:显示规则条目的序号
-R:替换一条规则
-A:追加一条规则
-I:插入一条规则
-P:更改默认策略
iptables示例:
filter表:
INPUT与OUTPUT功能:
对172.18.0.0/16网段地址放行22号端口
iptables -A INPUT -s 172.18.0.0/16 -d 172.18.0.31 -p tcp –dport 22 -j ACCEPT
写一条默认策略,使用拒绝所有
iptables -A INPUT -j DROP
iptables -P INPUT DROP
现在有这么一种情况,一个网段,但是这个网段是无类网络,IP范围为172.18.0.32到172.18.0.63,现在要禁止这个网段访问本机的22号端口
iptables -I INPUT -m iprange –src-range 172.18.0.32-172.18.0.63 -d 172.18.254.31 -p tcp –dport 22 -j DROP
为了使服务器的web不宕机,我们现在要限制访问最大访问量,还有限制访问频率,而公司的web的首页是https,由于运维人员的技术问题,有个别页面是http页面
iptalbes -I INPUT -d 172.18.132.2 -p tcp -m connlimit –connlimit-above-above 2000 -m limit –limit 300/minute –limit-burst 1000 -m multiport –dport 80,443 -j ACCEPT
上面这么多都是入口的filter,那么我该怎么写出口的策略呢,这个出口的策略能不能写的少一点的壁呢,
iptables -A OUTPUT -s 172.18.132.2 -p tcp -m multiport –sport 22,80,445 -m state –state ESTABLISHED -j ACCEPT
昨天boss开会说,公司应该有一个文件服务器,供员工去下载一些资料或者程序,所以就布设了一个ftp服务器,可是这个ftp服务有点另类,这个数据商品可能是随机的,怎么配置入口过滤规则呢
iptables -I INPUT -d 172.18.0.1 -m state –state ESTABLISHED,RELATED -j ACCEPT
昨天看新闻说,国家正在严打网上出现的有关于H7N9字样的访问,老板发话说,我们的网站要禁止访问含有这个字样的网页
iptables -I INPUT -d 172.18.0.1 -t tcp –dport 80 -m string –algo bm –string “H7N9” -j DORP
昨天boss看到隔壁工位小王上班期间在下载电影,导致办公网络这慢,现在boss说在上班时间不允许下载ftp上的电影
iptables -I INPUT -d 172.18.0.1 -m time –timestart 9:00 –timestop 6:00 -p tcp –dport 21 -j DROP
自定义一条链,配置samba的过滤规则
iptables -t filter -N samba_rule //新建一条自定义链
iptables -A samba_rule -d 172.18.0.1 -p tcp -m multiport –dport 139,445 -j ACCEPT //TCP的访问规则
iptables -A samba_rule -d 172.18.0.1 -p udp -m multiport –dport 137,138 -j ACCEPT //UDP的访问规则 iptables -I INPUT 2 -d 172.18.0.1 -j samba_rule //调用自定义的链
FORWARD功能:
由于FORWARD只有转发过滤功能,如果要对一个转发的数据包进行操作,那么就需要定怲条规则
现在有一个中间转发服务器,现在要对这个服务器的数据包进行控制,要求可出不可进,内网IP为172.18.0.0/16
iptables -A FORWARD -s 172.18.0.0/16 -j ACCEPT
iptables -A FORWARD -d 172.18.0.0/16 -j DROP
nat表:网络地址转换,也有人说是私网IP访问公网IP的一种机制
源地址转换:
一个网络172.18.0.0/16需要访问公网,,公司买了一个公网IP为201.132.202.13,需要写一条转换语句,使内部主机可以访问公网
iptables -t nat -A PREROUTING -s 172.18.0.0/16 -j SNAT –to-source 201.132.202.13
现在开发部门已经做好了web,需要发布在主机172.18.31.12上的网站
iptables -t nat -A POSTROUTING -d 172.18.31.12 -j DNAT –to-destination 201.132.202.13
由于公司资金出现了问题,公网IP也没有了,只剩下一个猫了,但公司这么多人,网还是需要上的,该怎么写这条规则呢
iptables -t nat -A PREROUTING -s 172.18.0.0 -j MASQUERADE
原创文章,作者:gaomei,如若转载,请注明出处:http://www.178linux.com/74455