iptables 防火墙之主机防火墙(2)

承接上一篇博文,这里讲述主机防火墙高级部分,一个内容一个示例,希望大家明白!

一、显式扩展:

必须显式地指明使用的扩展模块进行的扩展;

使用帮助:

CentOS 6: man iptables

CentOS 7: man iptables-extensions

1、multiport扩展

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

[!] --source-ports,--sports port[,port|,port:port]...:指定多个源端口“,”表示离散的端口“:”表示连续端口段;

  [!] --destination-ports,--dports port[,port|,port:port]...:指定多个目标端口;

[!] --ports port[,port|,port:port]...:指明多个端口;

# iptables -S INPUT
-P INPUT DROP
-A INPUT -d 172.18.29.122/32 -p tcp -m multiport --dports 22,80 -j ACCEPT
-A INPUT -d 172.18.29.122/32 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -d 172.18.29.122/32 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

iptables -S OUTPUT
-P OUTPUT DROP
-A OUTPUT -s 172.18.29.122/32 -p tcp -m multiport --sports 22,80 -j ACCEPT
-A OUTPUT -s 172.18.29.122/32 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A OUTPUT -s 172.18.29.122/32 -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -s 172.18.29.122/32 -p udp -m udp --dport 53 -j ACCEPT

2、iprange扩展

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

[!] --src-range FROM[-TO]:源IP地址;

[!] --dst-range FROM[-TO]:目标IP地址;

iptables -P INPUT DROP
-A INPUT -p tcp -m multiport --dports 22,80 -m iprange --src-range 172.18.29.1-172.18.29.155 -j ACCEPT
-A INPUT -d 172.18.29.122/32 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -d 172.18.29.122/32 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

3、string扩展

对报文中的应用层数据做字符串模式匹配检测;

--algo {bm|kmp}:字符串匹配检测算法;

bm:Boyer-Moore

kmp:Knuth-Pratt-Morris

--from :从报文某部分开始

--to :从报文某部分结束

[!] --string pattern:要检测的字符串模式;

[!] --hex-string pattern:要检测的字符串模式,16进制格式;

# iptables -A OUTPUT -s 172.16.100.67 -d 172.16.0.0/16 -p tcp --sport 80 -m string --algo bm --string "gay" -j REJECT

4、time扩展

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

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

--timestart hh:mm[:ss]:--timestart 08:00:00 --timestop 16:00:00

--timestop hh:mm[:ss]

[!] --monthdays day[,day...]: --monththdays 1,2,3,4...

[!] --weekdays day[,day...]:--weekdays 1,2,3,4...

--kerneltz:使用内核上的时区,而非默认的UTC; #很重要,指定内核时区就是可以

iptables -A INPUT -d 172.18.29.122/32 -p tcp -m tcp --dport 80 -m time --timestart 23:30:00 --timestop 23:50:00 --datestop 2038-01-19T03:14:07 --kerneltz -j ACCEPT

5、connlimit扩展

根据每客户端IP做并发连接数数量匹配;

--connlimit-upto n:连接的数量小于等于n时匹配;

--connlimit-above n:连接的数量大于n时匹配;

iptables -A INPUT -d 172.16.100.67 -p tcp --dport 21 -m connlimit --connlimit-above 2 -j REJECT

6、limit扩展

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

令牌桶过滤器;

--limit rate[/second|/minute|/hour|/day]

--limit-burst number

# iptables -I INPUT -d 172.16.100.67 -p icmp --icmp-type 8 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT
# iptables -I INPUT 2 -p icmp -j REJECT
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 10/min --limit-burst 3 -j ACCEPT

7、state扩展:state 是conntrack的自己,用于对报文的状态做连接追踪

连接追踪模板:条目(SIP:SPORT--DIP:DPORT),倒计时

如果条目过大那么就拒绝连接。数目可以调整,负载均衡器上不需要加入连接追踪功能。

根据”连接追踪机制“去检查连接的状态;

conntrack机制:追踪本机上的请求和响应之间的关系;状态有如下几种:

NEW:新发出请求;连接追踪模板中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求;

ESTABLISHED:NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信状态;

RELATED:相关联的连接;如ftp协议中的数据连接与命令连接之间的关系;

INVALID:无效的连接;

UNTRACKED:有意未进行追踪的连接;

[!] --state state

# iptables -A INPUT -d 172.16.100.67 -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 172.16.100.67 -p tcp -m multiport --sports 22,80 -m state --state ESTABLISHED -j ACCEPT

如何开放被动模式的ftp服务?

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

# modprobe  nf_conntrack_ftp
# lsmod  |grep nf_conntrack_ftp

(2) 放行命令连接(假设Server地址为172.16.100.67):

tcp -m tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -d 172.18.29.122/32 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

(3) 放行数据连接(假设Server地址为172.16.100.67):-A INPUT -d 172.18.29.122/32 -p

-A OUTPUT -s 172.18.29.122/32 -p tcp -m tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -s 172.18.29.122/32 -p tcp -m state --state ESTABLISHED -j ACCEPT

规则的优化策略:规则在连接上的次序几位其检查时的生效次序;因此,其优化有一定法则:

(1)同类规则(访问同一应用),匹配规则范围小的放在前面;用于特殊处理;

(2)不同类的规则(访问不同应用),匹配规则范围大的放前面;

(3)应该将那些可由一条规则描述的多个规则合并唯一;

(4)设置默认策略

二、保存规则:

使用iptables命令定义的规则,手动删除之前,其生效期限为kernel存活期限;

保存规则至指定的文件:

CentOS 6:

~]# service  iptables  save

将规则保存至/etc/sysconfig/iptables文件中;

~]# iptables-save  >  /PATH/TO/SOME_RULES_FILE,默认为(/etc/sysconfig/iptables,其他路径不会被读取)

CentOS 7:

~]# iptables -S

~]# iptables-save  >  /PATH/TO/SOME_RULES_FILE

重新载入预存规则文件中规则:

CentOS 7:

~]# iptables-restore <  /PATH/FROM/SOME_RULES_FILE

CentOS 6:

~]# service  iptables  restart

会再次读取配置文件/etc/sysconfig/iptables

自动生效规则文件中的规则:

(1) 用脚本保存各iptables命令;让此脚本开机后自动运行;

/etc/rc.d/rc.local文件中添加脚本路径;

/PATH/TO/SOME_SCRIPT_FILE

(2) 用规则文件保存各规则,开机时自动载入此规则文件中的规则;

/etc/rc.d/rc.local文件添加:

iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE

说明:

CentOS 7:

引入了新的iptables前端管理工具firewalld,其管理工个有:firewalld-cmd,  firewalld-config

Target:

ACCEPT, DROP, REJECT, RETURN

LOG, SNAT, DNAT, REDIRECT, MASQUERADE,...

LOG:

--log-level level

--log-prefix prefix

时间: 2024-12-23 00:59:48

iptables 防火墙之主机防火墙(2)的相关文章

iptables基本应用--主机防火墙(服务器篇)

iptables四表:filter,nat,mangle,raw;五链:PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING. 通常查看的表:filter(默认),nat: 查看filter表: 查看nat表: 编写表(定义规则): 数据的流向分为源和目标两种类型: 源和目标都是相对于iptables而言,数据包经由iptables,数据的发送者是source,数据要达到的目标方为destination,不以设备所处的角色和作用来区分源和目标. 查看规则的其他参

iptables 防火墙之主机防火墙

Linux因为其强大的防火墙功能而闻名,它主要依靠于iptables,一个运行在用户空间的应用软件,它可以通过控制Linux内核netfilter模块,来管理网络数据包的流动与转送.它解决了网络中很多攻击,比如网络中常见的端口扫描.用户密码暴力破解等. 一.防火墙模型 主机通信基本模型:报文进入主机后进入接受缓冲区缓冲,内核从中取报文处理,拆开数据帧检测是否是目标地址时本机地址,如果是则再拆TCP或UDP报文找到对应目的端口,发送给注册在内核的用户端进程:如果目标地址不是本机地址那么就查看是否转

centos6 的服务器的IPTABLES设置(主机防火墙)

vim /etc/sysconfig/iptables-config 添加: IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp" 为了启用iptables支持FTP服务模块 重启后会失效那么设置开机启动: 1脚本内容: vim /etc/sysconfig/iptables.sh #!/bin/bash iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP iptabl

iptables 主机防火墙

配置iptables 主机防火墙 iptables -F  #清空规则 iptables -X  #清空用户自定义链 iptables -Z  #清空计数器 第一步 配置允许SSH登录端口进入 iptables -nL iptables -A INPUT -p tcp -s 10.0.0.0/24 -j ACCEPT  #这两条任意一条就行了. iptables -A INPUT -p tcp --dport 52113 -j ACCEPT 第二步 设置允许本机回环端口的通信规则 iptable

主机防火墙的设置与优化

一.设置主机防火墙. 开放: 服务器的:web服务.vsftpd 文件服务.ssh远程连接服务.ping 请求. 1.开放sshd服务 开放流入本地主机,22端口的数据报文. [[email protected] ~]# iptables -A INPUT --destination 192.168.60.99 -p tcp --dport 22 -j ACCEPT 开放从本地主机22端口流出的数据报文 [[email protected] ~]# iptables -A OUTPUT --so

Linux在iptables教程基本应用防火墙

iptables它是Linux防火墙软件经常使用,下面说一下iptables设备.删除iptables规则.iptables只要打开指定的port.iptables屏蔽指定ip.ip科和解锁.删除添加iptables规则iptables基本的应用程序. 1.安装iptables防火墙 假设没有安装iptables须要先安装.CentOS运行: yum install iptables Debian/Ubuntu运行: apt-get install iptables 2.清除已有iptables

iptables linux下的防火墙

iptables: 查看防火墙信息: sudo iptables -L -v 设置防火墙(客户端 --> 服务器): sudo iptables -A INPUT -s ipaddress(客户端的ip) -p tcp --dport 61616 -j ACCEPT 设置防火墙(服务器-->客户端) sudo iptables -A OUTPUT -d ipaddress(客户端的ip) -p tcp --sport 61616 -j ACCEPT 版权声明:本文为博主原创文章,未经博主允许不

用iptables命令操作CentOS防火墙

1 常用命令如下: 查询防火墙状态:service   iptables status停止防火墙: service   iptables stop启动防火墙:service   iptables start重启防火墙:service   iptables restart永久关闭防火墙:chkconfig   iptables off永久关闭后启用:chkconfig   iptables on 2 编辑/etc/sysconfig/iptables文件,可以进行修改防火墙的配置信息,将需要对外提

鸟哥超阳春客户端防火墙设计与防火墙规则储存

# 1. 清除规则 iptables -F   清除所有已订定的规则 iptables -X   杀掉所有使用者"自定义"的chain(应该说的是tables) iptables -Z    将所有的chain的计数与流量统计都归零 # 2. 设定政策 iptables -P   INPUT DROP iptables -P  OUTPUT ACCEPT iptables -P FORWARD ACCEPT # 3~5. 制订各项规则 iptables -A INPUT -i lo -