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

linuxfirewall

时间:2017-09-16 11:58:05      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:firewall

iptables命令是Linux上常用的防火墙软件。

netfilter组件称为内核空间,用于扩展各种组件,一般从事研发角度开发网络新特性


iptables命令格式:

iptables   -t  表名  <-A/I/D/R>   链 [规则号]  <-i/o 网卡名>  -p 协议名  <-s 源IP/源子网>  --sport 源端口   <-d 目标IP/目标子网>   --dport 目标端口    -j 动作


表名:filter、nat、mangle#一般用于打标的


链:prerouting、input、forwarding、output、postrouting

动作:ACCEPT#允许、DROP#拒绝、SNAT#源地址转换、DNAT#目的地址的转换、MASQUERADE#伪装

注:

INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包

INPUT链用于处理访问防火墙本机的数据,
OUTPUT链用于处理防火墙本机访问其他主机的数据
FORWARD链用于处理需要经过防火墙转发的数据包,源地址、目标地址均不是防火墙本机
POSTROUTING、PREROUTING链分别用于在确定路由后、确定路由前对数据包进行处理


入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机(如Internet用户访问防火墙主机中Web服务的数据包),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应
转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理
出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT规则链处理,之后进行路由选择,然传递给POSTTOUTING规则链(是否修改数据包的地址等)进行处理


技术分享

1.filter表是防火墙默认表格
2.iptables  -L -n  =  iptables  -t filter  -L  -n用于查看filter表


iptables(选项)注释:
-t<表>:指定要操纵的表; (filter;nat;mangle)
-A:向规则链中添加条目;(添加到最后一个条目)
-D:从规则链中删除条目; (删除条目)

-I:向规则链中插入条目; (可以在任意条目中插入)

-R:替换规则链中的条目; (更改现有的条目)
-L:显示规则链中已有的条目;(列出所有条目)
-F:清楚规则链中已有的条目;(删除所有条目)
-Z:清空规则链中的数据包计算器和字节计数器;


-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;


-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;(protocol)
-s:指定要匹配的数据包源ip地址; (source)
-j<目标>:指定要跳转的目标;(job)
-i<网络接口>:指定数据包进入本机的网络接口;(inside)
-o<网络接口>:指定数据包要离开本机所使用的网络接口。(outside)

--sport:源端口

--dport:目的端口


清除已有iptables规则

iptables -F
iptables -X
iptables -Z

#显示详细信息。主要显示匹配数据包数量和字节数


开放指定的端口
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 OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
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 -I INPUT -j DROP#当不写编号时,默认插成第一条。
iptables -D INPUT #1删除指定编号的策略。
iptables -t nat -F#清空nat表中所有规则。
防火墙策略保存位置:/etc/sysconfig/iptables


四种状态:
1.NEW:连接的第一个包即标识为NEW状态,注意没有收到回包。
2.ESTALISHED:一旦连接看到两个方向上都有通信流,那么与此附加的包都被看作是ESTALISHED。
3.RELATED:这种状态表示那些启动了新连接,但有与当前现有连接相关的包。典型应用就是FTP。
4.INVALID:不属于以上三种状态的包,都是非法的。

NAT表是iptables中的最要表,一般用来实现代理服务器。
Iptables  -t nat  -A  POSTROUTING  -o eth0  -j  MASQUERADE
iptables  -I FORWARD -j ACCEPT 开启IP转发功能。
注:
1.制作NAT的时候,要修改的链有forward和postrouting。
2.Forward链主要用于进行访问控制。
3.postrouting链主要用于IP伪装。也就是进行NAT地址转换。
7.Forward链进行访问控制:
1.iptables  -I  FORWARD 1 -d www.sohu.com  -j  DROP拒绝访问某些网站。需要进行DNS域名的解析。

1.实现智能DNS服务
2.iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to 202.106.0.30:53


echo "1" > /proc/sys/net/ipv4/ip_forward 临时开启路由。如果永久开启路由需要修改/etc/sysctl.conf文件


Selinux的开启与关闭
/etc/sysconfig/selinux
/etc/selinux/config

selinux状态:
1.enforcing 强制模式.
2.permissive 警告模式.
3.disabled 关闭


本文出自 “马广杰——博客” 博客,转载请与作者联系!

linuxfirewall

标签:firewall

原文地址:http://maguangjie.blog.51cto.com/11214671/1965753

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