linux之防火墙

简介:

linux自身的安全访问控制可以从以下几个层次实现。

以太网层和网络层:arptables ---工作在以太网层防止arp欺骗,
网络层和传输层:iptables    ---根据通信双方的协议数据包的某些特征来实现过滤。
工作在应用层:tcpwrappers
应用层针对于网络的可以使用squid实现访问控制。
特别说明一下杀毒软件和网络访问没有关系。

什么是防火墙

   防火墙是一组工作在网路或者主机的边缘,对于进出本网络或主机的数据包根据实现预制好的规则进行检查,并且能够在实现数据包匹配之由规则指定的动作进行处理的组件的组合

防火墙的分类

   包过滤型防火墙,工作在TCP/IP层

      tcp,ip

        根据tcp首部或ip首部数据进行判断

   应用层网关防火墙,工作在应用层

       根据数据包传输的实际数据进行判断

 包过滤型防火墙的分类

 

   简单包过滤

      tcp,ip

  带状态检测的包过滤

       NEW  该包想要开始一个新的连接

       ESTABLISHED  该包属于某个已经建立的连接

       INVALID 无法识别的状态

       RELATED   相关联的

防火墙功能

 

  filter:INPUT,OUTPUT,FORWORD     过滤     表示不允许访问

  nat:PRERONTING,POSTROUTING,OUTPUT 地址转换

  mangle:PRERONTING,POSTROUTING,OUTPUT,FORWORD,INPUT  把数据包首部拆开修改后再结合

防火墙如何工作的

 

   防火墙要放在内核进行实施,规则在用户空间定义,但规则要在内核实现,所以在内核空间内要具有接受用户定义规则的接口,这个接口叫Netfilter:网络过滤器,本身不过滤数据包只要有放上规则之后才进行过滤,多条规则组成ipchains ,多个ipchaices 组成tables。

iptables

  iptables 是一个工具,具体命令格式如下

iptables:[-t TABLE](指定表) COMMAND CHAINS(链) [createria] -j ACTTON

特别注意:链要大写,表要小写

 -t :指定表名,有filter,nat,managle。
COMMAND:子命令,是由选项的格式构成的,这个表示对特定的表中的特定的链,进行特定的操作的规则
关于规则选项有:
-A, append      表示在链的尾部,追加一条规则。
-I n, insert    表示插入一条规则,n表示插入到第几条
-D n, delete    表示删除第几条。
-R n, replace   表示修改第几条规则。

关于链操作的链(表)
-F, flush   表示清空整条规则链。(但不会清除默认规则)
-N, new     表示新建一条用户自定义的规则链。
-X,         用于删除一条用户自定义的空链,链中有规则是不能删的。
-Z, zero,   把一条链中的计数器重新置零,(每一条规则都有两个计数器,pkts表示被本规则匹配到得数据包的个数,另外一个bytes用于计数被匹配到得数据包的总的大小。
-P, policy{ACCEPT|DROP} 表示策略,表示把某一个链的默认规则设定为ACCEPT(通)或DROP(拒绝)
-L, list     表示列出
-n, numeric   表示以数字的方式显示,不加-n则会把ip地址反向解析为主机名,速度会比较慢
-v, verbose   表示显示信息,v越多越详细。
-vv,
-vvv
-x, exactly   表示显示计数器时使用精确的计数,而不做单位转换。
--line-numbers  表示显示行号的。

CHAIN:链,
有五个链分别为:OUTPUT,INTPUT,FORWORD,PREROUTING,POSTROUTING

createria:数据包的匹配标准:
通用匹配   可以使用“!”表示取反
-s  指定匹配数据包的源地址标准
-d  指定匹配数据包的目的地址标准
-p {icmp|tcp|udp} 指定匹配数据包的协议。
-i  指定数据包的流入接口(通常跟网卡的设备名称)
-o  指定数据包的流出接口
扩展匹配
隐含扩展,隐含扩展是指对前面指定的协议的扩展
-p tcp
--sport :用于做源端口匹配 
--dport : 目的端口匹配
--tcp-flags  用于做tcp的标志位的匹配。check_list 必须为1的位

tcp的首部有六个标志位分别为:SYN,ACK,FIN,PSH,URG,RST
 --tcp-flags ACK,SYN,FIN,RST SYN  简写为 --syn
  SYN:表示同步。
  ACK:表示确定
  FIN:发起连接断开请求
  PSH:表示推送位
  URG:表示紧急为,配合紧急指针使用
  RST:重置为

-p udp
--sport
--dport
-p icmp
--icmp-type {8|0} icmp的数据包类型。当ping别人时数据包类型是8,当被人回应你是数据包类型是0:0表示回响应答。

 

    -p icmp

          --icmp-type

            8:echo-request 请求

            0:echo-reply   响应

  显式扩展

 

 -m state --state NEW /INVALID.. 状态检测

       NEW  该包想要开始一个新的连接,syn=1,ack=0的包

       ESTABLISHED  该包属于某个已经建立的连接

       INVALID 无法识别的状态

       RELATED   相关联的

 

        -m multiport  指定间断端口

           -source-ports

           -destination-ports

           --ports

        -m iprange  指定地址范围的

          --src-range ip-ip

          --dst-range ip-ip

       并发连接限制

          -m connlimit ! --connlimit-above 2 -j DROP

          -m limit     速率限定

          --limit rate 2/miniute 表示每分钟2个 (速率)

          --limit-burst number 峰值速率

        -m string

           --algo bm|kmp

           --string "STRING"

        -m time   设置时间

           --timestart 8:00 --timestop 18:00 -j DROP

           --days

           --datestart

           --datestop

-j TARGET   -j:表示跳转,表示匹配到数据包后怎么处理
ACCEPT     表示接受,
DROP       表示丢弃,不作出回应(网络防火墙常用这个选项
REJECT     表示拒绝,做出回应
DNAT       表示做地主转换
SNAT
REDIRECT    表示做端口重定向
LOG        表示做日志。

保存iptables规则

#service iptables save 
表示保存iptables的规则到/etc/sysconfig/iptables
  每次开机会重读这个文件
#iptables-save > /etc/sysconfig/iptables.my
 表示把规则保定到特定的位置。

启用iptables
#service iptables start  启动iptables 
即执行了:iptables-restore < /etc/sysconfig/iptables
这条命令,把iptables中的规则重新生效一下
iptables不是一种服务,它的启动脚本只是执行了,保存规则和重读规则。

例子说明

清空数据链上的某个表中的规则:
#iptables -t filter -F OUTPUT
删除某条链上的规则
#iptables -t table -D CHAIN N
或者
#iptables -t table -D CHAIN 规则的详细写入
开放本机到本机的访问:
#iptables -I INPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#iptables -I OUTPUT 1 -s 127.0.01 -d 127.0.0.1 -j ACCEPT
开通ICMP ping 规则:
#iptables -t filter -A OUTPUT -s 192.168.0.34 -p icmp --icmp-type 8 -j ACCEPT
#iptables -A INPUT -d 192.168.0.34 -p icmp --imcp-type 0 -j ACCEPT
开通被ping
#iptables -t filter -A INPUT -d 192.168.0.34 -p icmp --icmp-type 8 -j ACCEPT
#iptables -A OUTPUT -s 192.168.0.34 -p icmp --imcp-type 0 -j ACCEPT
配置一个网络防火墙,是用户只能访问80服务
1,打开farewell 的ssh服务和server的ssh服务。
#iptables -filter 
2.client和server的网关指向,
  #route add default gw host_ip
3.打开firewall的路由功能。
  #sysctl -w  net.ipv4.ip_forward=1 临时生效
  #echo 1 > /proc/sys/net/ipv4/ip_forward 永久生效
3.在FORWARD链上开放左右双向httpd服务的规则。
  #iptables -A FORWARD -s 192.168.0.73 -d 192.168.10.20 -p tcp --dport 80 -j ACCERT
  #iptables -A FORWARD -s 192.168.10.20 -s 192.168.0.73 -p tcp --sport 80 -j ACCEPT
4.修改forward的默认规则
  #iptables -P FORWARD DROP
5.保存规则。
防火墙基于tcp的状态检测功能。对于一个完整的tcp链接来说,只有请求了才能相应。
tcp的标志位里要求syn为一,ack ,rst,fin为零,表示第一次握手。

 

 

本文转自  沐木小布丁  51CTO博客,原文链接:http://blog.51cto.com/sxhxt/924342

相关文章
|
4月前
|
运维 网络协议 安全
小白带你学习linux的防火墙
小白带你学习linux的防火墙
145 1
|
1月前
|
存储 安全 网络协议
使用 firewall-cmd 管理 Linux 防火墙端口
本文将介绍如何使用 firewall-cmd 工具在 Linux 系统中进行简单端口管理,包括开放、查询、关闭等操作。通过实例展示相关命令的用法,希望能对大家有所帮助。
|
4月前
|
网络协议 Linux 网络安全
linux服务器防火墙的开启及关闭
linux服务器防火墙的开启及关闭
206 1
|
4月前
|
安全 Linux 网络安全
linux的防火墙
Linux的防火墙是一种网络安全工具,用于保护Linux系统免受网络攻击。
64 0
|
4月前
|
存储 网络协议 Linux
Linux加强篇008-使用Iptables与Firewalld防火墙
山重水复疑无路,柳暗花明又一村
303 0
Linux加强篇008-使用Iptables与Firewalld防火墙
|
3月前
|
监控 网络协议 安全
Linux中防火墙的简单使用方法
防火墙是一种网络安全设备或软件,用于监控和控制网络流量,以保护计算机网络免受未经授权的访问、恶意攻击和未经授权的数据传输。防火墙通过筛选网络流量并根据预定义的规则集来允许或阻止特定类型的通信。
145 0
|
5月前
|
存储 安全 Linux
linux-防火墙
linux-防火墙
195 0
|
6月前
|
安全 Linux 网络安全
Linux一些防火墙实战知识
本文介绍了如何在Linux中设置防火墙和开放端口,以提高服务器的安全性。首先,使用firewalld作为防火墙软件包,并确保firewalld服务正在运行。然后,通过添加服务来定义允许的服务端口,可以使用firewall-cmd命令查看当前已定义的服务,并使用firewall-cmd命令添加服务。添加规则后,需要重新加载firewalld配置以使更改生效。在某些情况下,需要打开特定的端口,例如HTTP端口80和HTTPS端口443。可以使用firewall-cmd命令打开端口,并将规则添加到相应的区域。。。确实都是工作中日常中会用到的一些命令
|
6月前
|
安全 Linux 网络安全
百度搜索:蓝易云【linux iptables安全技术与防火墙】
请注意,iptables的具体使用方法和配置选项可能会有所不同,取决于Linux发行版和版本。管理员应该参考相关文档和资源,以了解适用于其特定环境的最佳实践和配置方法。
467 0
百度搜索:蓝易云【linux iptables安全技术与防火墙】
|
6月前
|
开发框架 网络协议 Ubuntu
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
1234 0