Iptables 是Linux 内核集成的 IP 信息包过滤系统。若是Linux 系统链接到因特网或 LAN、服务器或链接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。html
防火墙在作信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在咱们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。 虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。服务器
Iptables的规则链分为三种:输入、转发和输出。并发
清空全部规则:tcp
iptables -F
添加22端口能够正常链接:工具
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
设置默认规则: 通常设置默认规则有两种思想:一种是都接受,而后重点拒绝;另外一种是都拒绝,而后重点放行。spa
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
开放具体的端口:代理
iptables -A INPUT -p tcp -m tcp --dport 3304 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 3304 -j ACCEPT(若是OUTPUT默认是DROP) iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT (若是OUTPUT默认是DROP,下面的同样)
支持ping:rest
iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT
禁止pingcode
iptables -A INPUT -p icmp -j REJECT iptables -A OUTPUT -p icmp -j REJECT
具体到IP地址: 只接受192.168.1.55的包:htm
iptables -A INPUT -s 192.168.1.55 -p icmp -j ACCEPT (默认是DROP) iptables -A OUTPUT -s 192.168.1.23 -p icmp -j ACCEPT
IPTABLES规则的相关操做:
iptables -F :清空规则 iptables -X :删除用户自定义的规则 iptables -L :查看规则 iptables -L -n :以数字的形式显示规则 iptables -L --line-numbers :查看规则的编号(适用于删除规则) iptables -D chain num :删除编号是NUM的规则
扩展规则:
多端口:
iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.23 -p tcp -m multiport --dport 22,80,3306 -j ACCEPT iptables -I OUTPUT -d 192.168.1.0/24 -s 192.168.1.23 -p tcp -m multiport --sport 22,80,3306 -j ACCEPT
iprange扩展:
iptables -I OUTPUT -s 192.168.1.23 -p tcp -m multiport --sport 21,22,80 -m iprange --dst-range 192.168.1.10-192.168.1.20 -j ACCEPT iptables -I INPUT -d 192.168.1.23 -p tcp -m multiport --dport 21,22,80 -m iprange --src-range 192.168.1.10-192.168.1.20 -j ACCEPT
string扩展:检查报文中出现的字符串。
--algo {bm|kmp} --string patterm iptables -I OUTPUT -m string --algo bm --string 'movie' -j REJECT
time扩展:根据报文对时间范围进行匹配。
--datestart --datestop --timestart --timestop --monthdays --weekdays iptables -I INPUT -d 192.168.1.23 -p tcp --dport 80 -m time --timestart 23:00 --timestop 6:00 -j REJECT
connlimit扩展:根据客户端IP作并发链接数量匹配
--connlimit-upto n :链接数量小于n --connlimit-above n :链接数量大于n --connlimit-saddr :源地址转换 --connlimit-daddr :目标地址转换 iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT
limit扩展:基于收发报文速率作检查
--limit rate/[second|minute|hour|day] --limit-burst number iptables -A INPUT -d 192.168.1.23 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 10/minute -j ACCEPT 防止DOS攻击: iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limite-burst 100 -j ACCEPT
state扩展:根据链接跟踪机制检查链接的状态。
查看链接追踪功能所能容纳的最大链接个数:/proc/sys/net/nf_conntrack_max 查看追踪到的链接:/proc/net/nf_conntrack 不一样协议或者链接类型的时长:/proc/sys/net/netfilter/.. NEW:新发出的请求,链接追踪模板中不存在相关的信息条目,所以识别为第一次发出来的请求 ESTABLISHED:NEW状态以后,链接追踪模板中为其创建的条目失效以前期间内所进行的通讯的状态 RELATED: 相关的链接,如:FTP协议命令链接与数理链接之间的关系 INVALIED:没法识别的链接 iptables -I INPUT -d 192.168.1.23 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -I OUTPUT -d 192.168.1.23 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -I INPUT 2 -d 192.168.1.23 -p tcp -m multiport --dport 22,80 -m state --state NEW -j ACCEPT 问题:如何开放被动模式的FTP服务? 1) 装载FTP追踪时专用的模块 modprobe nf_conntrack_ftp 2) 放行请求报文 命令链接:NEW , ESTABLISHED 数据链接:RELATED , ESTABLISHED iptables -A INPUT -d local_IP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -d loacl_IP -p tcp -m state --state RELATED,ESTABISHED -j ACCEPT 3) 放行响应报文:ESTABLISHED iptables -A OUTPUT -s local_IP -p tcp -m state --state ESTABLISHED -j ACCEPT 4)保存及重载规则: iptables-save > file 保存规则至指定规则 iptables-restore < file 指定文件中重载规则
转发规则:
开启iptables forward转发功能 echo 1 >/proc/sys/net/ipv4/ip_forward nat: SNAT:只修改请求报文的源地址 DNAT:只修改请求报文的目标地址 内--》外 外--》内 nat表:PREROUTING(DNAT)-->OUTPUT-->POSTROUTING(SNAT) 将本机的8080端口转发至其余主机,主机IP:192.168.1.12,目标主机IP和端口:192.168.1.13:8088,规则以下: iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.13:8088 iptables -t nat -A POSTROUTNG -p tcp --dport 8088 -j SNAT --to-source 192.168.1.12
原文出处:https://www.cnblogs.com/dianel/p/10315197.html