iptables经常使用语法+iptables规则写法

企业中用硬件防火墙的场景是大多数,但有时候也仍是会用到iptables,因此作为运维工程师,使用iptables的作主机防火墙和网络防火墙的规则写法仍是须要掌握的,废话很少说,直接来干货。
mysql


主机防火墙规则web


修改默认入站出站策略为删除数据(修改时慎重考虑)sql

iptables -P INPUT DROP  //删除全部入站数据shell

iptables -P OUTPUT DROP //删除全部出站数据服务器


若是是远程链接到服务器上进行防火墙的修改操做时,可能会涉及清空防火墙的操做,若是直接修改了默认策略为删除一切入站出站数据,一不当心来一条清空全部规则,此时的远程链接也就当即被阻止了,因此即使是想设置成最严格的白名单模式,最好是在默认状况下清空全部规则后先把xhell的放行规则写好以后,在其后面添加一条全部入站及出站数据都作删除处理的默认规则,即使不当心清除全部规则后,也不会出现远程链接都被阻止的严重后果,由于默认策略全部的入站出站数据都是被放行的。网络


开放x-shell链接端口运维

iptables -A INPUT -s Client-IP -d Server-IP -p tcp --dport 22 -j ACCEPT  //放行x-shell入站数据ssh

iptables -A OUTPUT -s Server-IP -d Client-IP -p tcp --sport 22 -j ACCEPT //放行x-shell出站数据tcp

iptables -A INPUT -j DROPide

iptables -A OUTPUT -j DROP


默认出站数据最好设置为放行已创建的链接,这样一来就不用单独放行每一条容许入站的数据的出站动做了

iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT


开放本身使用ping探测别人

iptables -A INPUT -p icmp --icmp-type 0/0 -j ACCEPT  //放行ping响应入站

iptables -A OUTPUT -p icmp --icmp-type 8/0 -j ACCEPT //放行ping请求出站


开放别人使用ping探测本身

iptables -A INPUT -p icmp --icmp-type 8/0 -j ACCEPT  //放行ping请求入站

iptabels -A OUTPUT -p icmp --icmp-type 0/0 -j ACCEPT //放行ping响应出站


开放回环检测

iptables -A INPUT -i lo -p icmp -j ACCEPT


开放http链接端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT


开放https链接端口

iptables -A INPUT -p tcp --dport 443 -j ACCEPT


http、https链接端口合并

iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT


开放mysql链接端口

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT


开放fastcgi链接端口

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT


开放samba链接端口

iptables -A INPUT -p tcp multiport --dports 139,445 -j ACCEPT  //开放samba主服务端口

iptables -A INPUT -p udp multiport --dports 137,138 -j ACCEPT  //开放samba名称解析端口


开放ftp链接端口

iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT  //开放ftp服务端口

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  //开放相关、已创建的链接


开放nfs链接端口

首先到/etc/sysconfig/nfs文件中锁定端口

RQUOTAD_PORT=10001

LOCKD_TCPPORT=10002

LOCKD_UDPPORT=10002

MOUNTD_PORT=10003

STATD_PORT=10004

再开放锁定的多端口

iptables -A INPUT -p tcp multiport --dports 111,2049,10001:10004 -j ACCEPT

iptables -A INPUT -p udp multiport --dports 111,2049,10001:10004 -j ACCEPT


开放dns链接端口

iptables -A INPUT -p tcp --dport 53 -j ACCEPT  //开放区域传送端口

iptables -A INPUT -p udp --dport 53 -j ACCEPT  //开放解析查询端口


注意:测试防火墙的规则时能够先写一个计划任务(20分钟后清空防火墙规则)


网络防火墙规则


添加规则于FORWARD链,注意几个问题:

(1) 请求和响应报文均会经由FORWARD链,要注意规则的方向性;

第一条:iptables -I FORWARD  -m state --state ESTABLISHED,RELATED -j ACCEPT

(2) 若是没有相似ftp的服务,状态中能够不用RELATED选项,若是有FTP服务,须要在网关上启用ftp链接追踪模块(nf_conntrack_ftp)

(3) 若是启用了链接追踪(conntrack)机制,注意网关主机所可以追踪的链接数的最大数量要符合须要,以避免过多的链接被拒绝


参考规则写法:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -s 192.168.1.0/24 -p tcp -m multiport --dports 22,21,23,80,443,139,445 -m state --state NEW -j ACCEPT

iptables -A FORWARD -j DROP


iptables DNAT SNAT写法


web服务器的经常使用映射规则


iptables -t nat -I PREROUTING -p tcp -d 10.0.0.10 --dport 80 -j DNAT --to-destination 192.168.10.254:80

将全部目标地址为防火墙的外网地址10.0.0.10,目标端口为80的数据包修改目标地址为内网服务器的192.168.10.50,目标端口为80后进行转发


iptables -t nat -I POSTROUTING -p tcp -s 192.168.10.254 --sport 80 -j SNAT --to-source 10.0.0.10:80

将全部源地址为内网服务器192.168.10.254,源端口为80的数据包统一修改成防火墙的出口地址10.0.0.10,端口为80后进行转发


ssh服务的经常使用映射规则


iptables -t nat -I PREROUTING -p tcp -d 10.0.0.10 --dport 1024 -j DNAT --to-destination 192.168.10.254:22

将全部目标地址为防火墙的外网地址10.0.0.10,目标端口为1024的数据包修改目标地址为内网服务器的192.168.10.254,目标端口为22后进行转发


iptables -t nat -I POSTROUTING -p tcp -s 192.168.10.254 --sport 22 -j SNAT --to-source 10.0.0.10:1024

将全部源地址为内网服务器192.168.10.254,源端口为22的数据包统一修改成防火墙的出口地址10.0.0.10,端口为1024后进行转发


前面一部分是主机防火墙须要用到的规则写法,后台一部分是网络防火墙的规则写法,固然本文只是抛砖引玉,更多场景及用法请触类旁通!

相关文章
相关标签/搜索