对于有公网IP的生产环境VPS,仅仅开放须要的端口,即采用ACL来控制IP和端口(Access Control List).web
这里可使用Linux防火墙netfilter的用户态工具服务器
iptables有4种表:raw-->mangle(修改报文原数据)-->nat(定义地址转换)-->filter(定义容许或者不容许的规则)tcp
每一个表能够配置多个链:工具
filter表的三个链详解:学习
触类旁通学习:网站
【例】:过滤全部的访问: iptables -t filter -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -j DROP 【例】:对SSH的22端口开放 iptables -I INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 22 -j ACCEPT 【例】:开放80端口 iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 80 -j ACCEPT 【例】:来自124的数据禁止经过174 IP iptables -A OUTPUT -p tcp -s 45.32.102.124 -d 157.240.22.174 -j REJECT 【例】打印当前生效的iptables规则(-n显示IP地址) iptables -L -n
Linux中iptables防火墙指定端口范围code
iptables -I INPUT -p tcp --dport 700:800 -j DROP iptables -I INPUT -s 11.129.35.45 -p tcp --dport 700:800 -j ACCEPT
1、 700:800 表示700到800之间的全部端口
2、 :800 表示800及如下全部端口
3、 700: 表示700以及以上全部端口
这个例子做用是,700-800端口,仅仅对 11.129.35.45 IP开放,白名单机制。ip
Snat、Dnat的iptables用途:
源地址转换(Snat): iptables -t nat -A -s 私IP -j Snat --to-source 公IP
目的地址转换(Dnat): iptables -t nat -A -PREROUTING -d 公IP -j Dnat --to-destination 私IP域名
iptables命令详解io
iptables经常使用的命令选项有: -P:设置默认策略的(设定默认门是关着的仍是开着的)如:iptables -P INPUT (DROP|ACCEPT) -F: FLASH,清空规则链的(注意每一个链的管理权限) -N:NEW 支持用户新建一个链,好比:iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。 -X:用于删除用户自定义的空链 -Z:清空链 -A:追加 -I num : 插入,把当前规则插入为第几条 -R num:Replays替换/修改第几条规则 -D num:删除,明确指定删除第几条规则 -L:查看规则详细信息,好比"iptables -L -n -v" -s 表示源地址IP -d 表示目标地址IP DROP 表示丢弃(拒绝) ACCEPT 表示接受 -p 表示适用协议,如tcp
其余更多例子:
【例】添加iptables规则禁止用户访问域名为www.sexy.com的网站。 iptables -I FORWARD -d www.sexy.com -j DROP 【例】添加iptables规则禁止用户访问IP地址为20.20.20.20的网站。 iptables -I FORWARD -d 20.20.20.20 -j DROP 【例】添加iptables规则禁止IP地址为192.168.1.X的客户机上网。 iptables -I FORWARD -s 192.168.1.X -j DROP 【例】添加iptables规则禁止192.168.1.0子网里全部的客户机上网。 iptables -I FORWARD -s 192.168.1.0/24 -j DROP 【例】禁止192.168.1.0子网里全部的客户机使用FTP协议下载。 iptables -I FORWARD -s 192.168.1.0/24 -p tcp –dport 21 -j DROP 【例】强制全部的客户机访问192.168.1.x这台Web服务器。 iptables -t nat -I PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.x:80 【例】禁止使用ICMP协议。 iptables -I INPUT -i ppp0 -p icmp -j DROP