码迷,mamicode.com
首页 > 系统相关 > 详细

Linux的防火墙管理命令:iptables

时间:2015-05-13 06:35:19      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:command   防火墙   数据包   linux iptables   

四表五链:
filter
nat
mangle
raw
prerouting
input
output
forward
postrouting

------------------------------

注意:一张表中有多条链,一条链中可以有一条或多条规则。


当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则,如果满足则该规则处理该数据包,如果不满足,就继续检查下一条规则,最后该数据包不符合该链中的任一条规则的话,系统就会根据该链预先定义的策略来处理该数据包。


iptables 命令的使用:

iptables 【-t 表】 command  链  匹配标准 -j 处理方法

-t :
filter
nat
mangle
raw
command:
管理链:
-F [CHAIN] :清除指定的规则链,如果省略chain则可以实现删除对应table中的所有的链
-P [CHAIN] :设定指定链的默认策略
-N :自定义一个新的空链
-X :删除一个自定义的空链
-Z :置零指定链中所有规则的计数器
-E :重命名自定义的链
管理规则:
-A :附加一条规则,添加在链的尾部
-I CHINA[num] :插入一条规则,插入为对应的chain中的第num条
-D CHAIN[num] : 删除指定链中的第num条规则
-R CHAIN[num] : 替换指定链中的第num条规则
查看类:
-L 显示指定表中的规则
-n : 以数字格式的形式显示主机地址和端口号
-v : 显示链及规则的详细信息
-vv :显示链及规则的更加详细的信息
-x : 显示计数器的精确值
--line-numbers : 显示规则的序号  ==--line


链:
prerouting
input
output
forward
postrouting

匹配标准:

通用匹配:

-o INTERFACE :指定数据报文流出的接口
-i INTERFACE  :指定数据报文流入的接口
-s ;--src  :指定源地址
-d ;--dst   :指定目标地址
-p {tcp|udp|icmp} :指定协议

隐含扩展:

-p tcp
--sport PORT  源端口
--dport  PORT 目的端口
--tcp-flags  mask comp 只检查mask指定的标志位,是逗号分隔的标志位列表
comp:此列表中出现的标志位必须为1,comp中没出现,而mask中出现的必须为0
eg:--tcp-flagsSYN,FIN,ACK,RST  SYN        == --syn
--syn     
-p icmp  
--icmp-type [num]
num:
0:echo-reply  响应报文
8:echo-request 请求报文
-p udp  
--sport PORT
--dport PORT

显示扩展:

-m state --state      结合ip_constack追踪会话的状态  
NEW :新连接请求
ESTABLISHED :已建立的连接
INVALID :非法连接
RELATED :相关联的,专为ftp设定的

练习:192.168.137.11作为服务器,只允许请求新数据,不允许tcp/22(80) 发送新的请求

首先将iptables的默认策略更改为DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -d 192.168.137.11 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 
iptables -A INPUT -d 192.168.137.11 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 
-m multiport 离线的多端口匹配
--source-port
--destination-port
--port

练习:在服务192.168.137.11上同时在一条规则上开放进来的22,80,21端口

iptables -A  INPUT  -d 192.168.137.11 -p tcp -m miltiport --destination-port 22,21,80 -j ACCEPT
-m iprange :地址范围匹配扩展
--src-range  ip-ip
--dst-range  ip-ip

练习:在192.168.137.11服务器上允许172.16.100.3-172.168.100.100的ip所有服务进来

iptables -A INPUT -m iprange --src-range 172.16.100.3-172.168.100.100 -j ACCEPT
-m  connlimit-about n :连接数的限制,低于n个的连接才可以访问
-m limit 
--limit RATE(速率) :5/min
--limit-burst  n :第一次可以上传多少
-m string 
--algo (kmp|bm)
--string ("STRING")

练习:

-j :
ACCEPT : 允许
DROP  :丢弃
REJECT  :拒绝
DNAT:目的地址转换
SNAT:源地址转换
LOG:记录日志
--log-prefix "string": 加入前缀
MARK:打标志
RETURN:返回



---------------------------------

cat /proc/net/ip_conntrack  ip报文追踪信息
iptstate: iptable的状态信息
-t 显示所有的连接个数
状态信息意义:         
NEW :新连接请求
ESTABLISHED :已建立的连接
INVALID :非法连接
RELATED :相关联的,专为ftp设定的。


在繁忙的服务器上建议不要使用这个模块:

装载ip_conntrack模块:
service iptables stop
modprobe ip_conntrack    转载内核模块,可以单独工作
cat /proc/net/ip_conntrack
cat /proc/net/ipv4/ip_conntrack_mak   最大条目,有必要时要调大这个最大值,但在非常繁忙的服务器上,不建议启动这个模块

卸载ip_conntrack模块:

modprobe -r ip_conntrack
注意:
iptables -t nat -L 使用这个命令时,会自动启动ip_conntrack,所以在工作中当其处于关闭时,慎用



-----------------------------------------

命令行中的规则条目是需要保存:

第一种:service iptables save  --->默认存放位置:/etc/sysconfig/iptables 
开机后会自动加载到iptables规则中。
第二种:iptables-save > /etc/sysconfig/iptables-20150326
iptables-restore < /etc/sysconfig/iptables-20150326
开机后不会自动加载iptables规则中,需要手动加载,一般用于备份恢复。


------------------------------------------------------------

练习:

将192.168.137.10的iptables的默认路由策略更改为DROP

iptables -t filter -P INPUT -j DROP
iptables -t filter -P OUTPUT -j DROP
iptables -t filter -P FORWARD -j DROP
iptables -L -n

测试 ssh ping http等服务是否工作

ssh 192.168.137.10:22 
ping 192.168.137.11
http://192.168.137.11:80

打开ssh:22连接服务:

iptables -t filter -A INPUT -s 192.168.137.0/24 -d 192.168.137.10 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -s 192.168.137.10 -d 192.168.137.0/24 -p tcp --sport 22 -j ACCEPT

测试ssh服务:

ssh  192.168.137.10:22


打开http服务:

iptables -t filter -A INPUT  -d 192.168.137.10 -p tcp --dport 80 -j ACCEPT 
iptables -t filter -A OUTPUT -s 192.168.137.10  -p tcp --sport 80 -j ACCEPT 
测试http服务:
http://192.168.137.10:80

打开ping功能:

你可以ping通别人,别人无法ping通你:

本机ping其他主机,出去时向其他主机请求报文8,别的主机返回来的是响应报文0
iptables -t filter -A OUTPUT -s 192.168.137.10 -p icmp-type 8 -j ACCEPT
iptables -t filter -A INPUT -d 192.168.137.10 -p icmp-type 0 -j ACCEPT
测试ping功能:
ping 192.168.137.10
ping 192.168.137.11


别人可以ping通你:

别的主机要ping通你,发送一个请求报文到本机,所以进入本机的是请求报文8,本机再响应报文给请求的主机,所以出去的是响应报文0.
iptables -t filter -A INPUT -d 192.168.137.10 -p icmp --icmp-type 8 -j ACCPET 
iptables -t filter -A OUTPUT -s 192.168.137.10 -p icmp --icmp-type 0 -j ACCEPT


练习:

192.168.137.11作为服务器,只允许请求新数据,不允许tcp/22(80) 发送新的请求
首先将iptables的默认策略更改为DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -d 192.168.137.11 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 
iptables -A INPUT -d 192.168.137.11 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT


本文出自 “天道酬勤” 博客,请务必保留此出处http://luzhi1024.blog.51cto.com/8845546/1650741

Linux的防火墙管理命令:iptables

标签:command   防火墙   数据包   linux iptables   

原文地址:http://luzhi1024.blog.51cto.com/8845546/1650741

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!