iptables (二)

iptables 基本配置实例

拒绝特定IP到本机的所有访问

# iptables -A INPUT -s 192.168.7.203 -j REJECT
# iptables -A INPUT -s 192.168.7.0/24 -j REJECT
# iptables -I INPUT -s 192.168.7.201,192.168.7.203 -j ACCEPT   > 注意,使用-I的话,添加的第2个IP会使用第1个规则编号。

拒绝所有IP访问

# iptables -A INPUT -s 0.0.0.0/0 -j REJECT
# iptables -A INPUT -j REJECT

插入指定顺序的规则

# iptables -I INPUT -s 192.168.7.206 -j DROP         > 不加编号,默认为第一条
# iptables -I INPUT 3 -s 192.168.7.206 -j DROP       >  指定编号,原编号向后+1

删除指定规则

# iptables -D INPUT -s 192.168.7.203 -j DROP
# iptables -D INPUT 2(使用iptables --line-numbers -vnL看到的num列编号)
删除之后,后续编号会向前继承缺失的编号

-S 的妙用

# iptables -S

-A INPUT -s 192.168.7.203/32 -j DROP
-A INPUT -s 192.168.7.205/32 -j DROP
使用重定向可以把结果存为文件,是不是跟iptables的命令格式一致?

拒绝指定协议

# iptables -I INPUT -p icmp -j REJECT

允许本机通过防火墙

# iptables -I INPUT 2 -i lo -j ACCEPT

限制指定网卡

# iptables -A INPUT -i eth0 -p tcp --dport 21 -j REJECT

创建自定义链并调用

# iptables -A 内置链名 -j 自定义链名

# iptables -N DENY_80
# iptables -A DENY_80 -s 0.0.0.0/0 -p tcp --dport 80 -j REJECT
# iptables -A INPUT -j DENY_80

隐式扩展用法

icmp

格式:
--icmp-type {type[/code]

允许本机向外ping,禁上外部ping应答包

# iptables -A OUTPUT -p icmp --icmp-type 0 -j REJECT

TCP/UDP

格式:
--sport port[:port]    源端口
--dport port[:port]    目标端口
--tcp-flags  要检查的标记位 [标记为为1](省略为0)           检查数据包标记位
   如:--tcp-flags SYN,ACK,FIN,RST SYN
        表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0
        ALL = 全部为1, NONE=全部为0

开放指定端口

# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
# iptables -I INPUT 2 -p tcp --dport 20:21 -j ACCEPT   > 隐式扩展只能支持连续端口表示

拒绝三次握手首个SYN包

# iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -j REJECT
# iptables -A INPUT -p tcp --syn -j REJECT

显式扩展用法

multiport

以离散方式定义多端口匹配,最多指定15个端口

格式:
-m multiport --sports port[,port|,port:port]...      > 注意与隐式的区别--sport
指定多个源端口

-m multiport --dports port[,port|,port:port]...      > 注意与隐式的区别--dport
指定多个目标端口

-m multiport --ports port[,port|,port:port]...多个源或目标端口
# iptables -A INPUT -p tcp -m multiport --dports 20:21,80,3306 -j REJECT

iprange

指明连续的(但一般不是整个网络)ip地址范围

格式:
-m iprange --src-range from[-to] 源IP地址范围
-m iprange --dst-range from[-to] 目标IP地址范围
# iptables -A INPUT -p tcp --dport 80 -m iprange --src-range 192.168.7.202-192.168.7.203 -j REJECT

mac扩展

指明源MAC地址,适用于:PREROUTING, FORWARD,INPUT chains

格式:
-m mac --mac-source XX:XX:XX:XX:XX:XX
#iptables -A INPUT -p tcp --dport 80 -m mac --mac-source 00:50:56:2d:d5:44 -j REJECT

string

对报文中的应用层数据做字符串模式匹配检测。一般在OUTPUT链处理。

--algo {bm|kmp}:字符串匹配检测算法
        bm:Boyer-Moore
        kmp:Knuth-Pratt-Morris
--from offset 开始偏移
--to offset 结束偏移

--string pattern:要检测的字符串模式
--hex-string pattern:要检测字符串模式,16进制格式
# iptables -A INPUT -m string --algo bm --string "6-web-1" -j REJECT
# iptables -A OUTPUT -m string --algo kmp --string "6-web-1" -j REJECT

time

根据将报文到达的时间与指定的时间范围进行匹配

格式:

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期      开始日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]            结束日期
--timestart hh:mm[:ss] 时间                         开始时间
--timestop hh:mm[:ss]                               结束时间
[!] --monthdays day[,day...] 每个月的几号
[!] --weekdays day[,day...] 星期几。可以使用Mon, Tue, Wed, Thu, Fri, Sat, Sun, 或 1 to 7

--kerneltz:内核时区,不建议使用,CentOS7系统默认为UTC,所以,在Centos 7上要注意加减时差
注意: centos6 不支持kerneltz ,--localtz指定本地时区(默认)

周一至周五,8点至18点拒绝访问本机的80端口
# iptables -A INPUT -p tcp --dport 80  -m time --timestart 8:00:00 --timestop 18:00:00 --weekdays 1,2,3,4,5 -j REJECT

connlimit

根据每客户端IP做并发连接数数量匹配,可防止CC(Challenge Collapsar挑战黑洞)攻击

格式:
--connlimit-upto n:连接的数量小于等于n时匹配
--connlimit-above n:连接的数量大于n时匹配
通常分别与默认的拒绝或允许策略配合使用
# iptables -A INPUT -m connlimit --connlimit-above 2 -p tcp --dport 22 -j REJECT

limit

基于收发报文的速率做匹配

格式:

--limit 数字[/second|/minute|/hour|/day]    每/秒/分/时/天 限制
--limit-burst 数字                        多少个之后才开始限制
# iptables -I INPUT -m limit --limit-burst 10 --limit 3/m -p icmp -j REJECT

state

根据”连接追踪机制“去检查连接的状态,较耗资源。conntrack机制:追踪本机上的请求和响应之间的关系

状态 描述
NEW 新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求
ESTABLISHED NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态
RELATED 新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
INVALID 无效的连接,如flag标记不正确
UNTRACKED 未进行追踪的连接,如raw表中关闭追踪
已经追踪到的并记录下来的连接信息库
/proc/net/nf_conntrack

?调整连接追踪功能所能够容纳的最大连接数量
/proc/sys/net/nf_conntrack_max

?不同的协议的连接追踪时长
/proc/sys/net/netfilter/

CentOS7 需要加载模块: modprobe nf_conntrack
格式:
-m state --state NEW,ESTABLISHED
禁止新建立的访问80端口会话
# iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j REJECT

iptables的链接跟踪表最大容量为/proc/sys/net/nf_conntrack_max,各种状态的超时链接会从表中删除;当模板满载时,后续连接可能会超时

解决方法两个:
(1) 加大nf_conntrack_max 值

# vim /etc/sysctl.conf
net.nf_conntrack_max = 393216
net.netfilter.nf_conntrack_max = 393216

(2) 降低 nf_conntrack timeout时间

# vim /etc/sysctl.conf
net.netfilter.nf_conntrack_tcp_timeout_established = 300
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

开放被动模式的ftp服务

(1) 装载ftp连接追踪的专用模块:

跟踪模块路径:/lib/modules/kernelversion/kernel/net/netfilter
 nf_conntrack_ftp.ko

# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp"
或者手动加载模块 # modproble nf_conntrack_ftp

# service iptables restart
    iptables: Loading additional modules: nf_conntrack_ftp     [  OK  ]

(2) 根据状态放行相关报文

# iptables -I INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT   > 这一条应该在规则1
# iptables -I INPUT 2 -p tcp --dport 21 -j ACCEPT                           > 放行21命令端口,由上一条规则进行动态开放相关联的动态数据端口

原文地址:http://blog.51cto.com/191226139/2088871

时间: 2024-10-09 14:21:37

iptables (二)的相关文章

Linux学习(二十八)iptables (二) iptables规则语法

查看iptables规则: [[email protected]0002 ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1786 140K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- *

linux基础之iptables (二) SNAT和DNAT

iptables要实现内网和外网通信,有两种方式: nat: Network Address Translation,安全性,网络层+传输层 proxy: 代理,应用层 nat: SNAT: 只修改请求报文的源地址 DNAT:只修改请求报文的目标地址 nat表: PREROUTTING: DNAT OUTPUT POSTROUTING: SNAT 实例: 以三台电脑搭建环境,其中一台作为外网主机,一台作为网关,一台作为内网主机 1. 以192.168.1.4这台电脑作为连接内网和外网的接口,et

service iptables start 无反应的解决方法

[[email protected] ~]# service iptables start[[email protected] ~]# service iptables status防火墙已停解决方法:一.初始化iptables.iptables -Fservice iptables saveservice iptables restartvi /etc/sysconfig/iptables 二.把预置的iptables规则添加进去就可以了:# Firewall configuration wr

Neutron分析(5)—— neutron-l3-agent中的iptables

一.iptables简介 1.iptables数据包处理流程 以本机为目的的包,由上至下,走左边的路 本机产生的包,从local process开始走左边的路 本机转发的包,由上至下走右边的路 简化流程如下: 2.iptables表结构 在neutron中主要用到filter表和nat表 filter表: Chain INPUT Chain FORWARD Chain OUTPUT filter表用于信息包过滤,它包含INPUT.OUTPUT和FORWARD 链. nat表: Chain PRE

Linux之iptables原理详解

本文和大家分享的主要是linux中iptables原理相关内容,一起来看看吧,希望对大家学习linux有所帮助. 目录: 一.netfilter与iptables 二.filter.nat.mangle等规则表 三.INPUT.FORWARD等规则链和规则 四.Linux数据包路由原理 五.iptables编写规则 一 .netfilter与iptables (1)Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许

Linux 防火墙和 iptables

一.简介 http://liaoph.com/iptables/   二.操作 1)iptables 添删改查 http://blog.51yip.com/linux/1404.html   三.应用 1.NAT地址转换--实现外网转发内网 1)开启Linux网卡的转发功能 # vim /etc/sysctl.conf net.ipv4.ip_forward = 1 # sysctl -p 2)Net配置 模板 iptables -t nat -I PREROUTING -d 公网IP -p t

防火墙之 iptables详解

 一.防火墙介绍 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP.数据进行检测. 目前市面上比较常见的有3.4层的防火墙,叫网络防火墙,还有7层的防火墙,其实是代理层的网关. 对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测.但是对于七层的

防火墙iptables简析(规则才是本体)例题展示!复习初学必备良药!

一.简介 iptables是可以实现netfilter框架的一个命令,通过调用syscall使内核空间的防火墙规则和用户空间交互. 配置文件    /etc/sysconfig/iptables-config /etc/sysconfig/iptables 二.四表五链模型 [结合不同的扩展]iptables可以针对OSI二.三.四.七层进行报文进行规则匹配 iptables四表:filter(default).nat.mangle.raw 五链:INPUT OUTPUT FORWARD PRE

Centos7防火墙之iptables

一.安装iptablescentos7默认防火墙是firewalle,要想使用iptables,需要安装. ````yum install -y iptables iptables.services 启动:service iptables start 状态:service iptables status 关闭:service iptables stop 重启:service iptables restart 保存新建规则:service iptables save 配置文件:vim /etc/s