博主对于iptables的了解不多,很多内容都是现学现用,iptables整体来说很复杂,博主只是用来配置VPS的访问规则,以起到简单保护VPS的目的,因此,只是简单写一下常用到的配置,很多网络相关内容我也不懂,直接上
规则的写法:
iptables定义规则的方式比较复杂:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3个filter nat mangle, 默认是指filter表,如果使用其它表,需要指定
COMMAND:定义如何对规则进行管理 -A/I/D/R
chain:指定你接下来的规则到底是在哪个链上操作的,最常用的是 -P INPUT/OUTPUT/FORWARD
CRETIRIA:指定匹配标准 ,地址、协议、端口、网卡等
-j ACTION :指定如何进行处理,常用的为 -j ACCEPT/DROP
例如不允许指定IP访问本机
iptables -A INPUT -s 172.16.0.0/16 -p udp –dport 53 -j DROP
iptables -L -n -v #查看定义规则的详细信息
链管理命令
-P :设置默认策略(即INPUT/FORWARD/OUTPUT总开关)
默认策略一般只有两种:iptables -P INPUT (DROP|ACCEPT) 默认是关的/默认是开的
-F: FLASH,清空规则链
-X: 用于删除用户自定义的空链
规则管理命令
-A:追加,在当前链的最后新增一个规则
-I [num] : 插入,把当前规则插入为第几条。默认插入到首行
-R num:Replays替换/修改第几条规则,格式:iptables -R 3 …………
-D num:删除,明确指定删除第几条规则
查看管理命令 “-L”
-n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。
-v:显示详细信息-vv,-vvv :越多越详细
-x:在计数器上显示精确值,不做单位换算
–line-numbers : 显示规则的行号
iptables -L -n –line-number :查看之前的规则位于第几行
匹配标准
通用匹配:源地址目标地址
-s:指定作为源地址匹配,必须是IP IP | IP/MASK | 0.0.0.0/0.0.0.0
地址可以取反,加一个“!”表示除了哪个IP之外
-d:表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据,流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据,流出一般在OUTPUT和POSTROUTING上
扩展匹配
隐含扩展:对协议的扩展
-p tcp :TCP协议的扩展。一般有三种扩展
–dport XX-XX:指定目标端口,不能指定多个非连续端口。如:–dport 21 或者 –dport 21-23 (此时表示21,22,23)
–sport:指定源端口
-p udp:UDP协议的扩展
–dport
–sport
-p icmp:icmp数据报文的扩展
–icmp-type:
echo-request(请求回显),一般用8 来表示
所以 –icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0来表示
显式扩展(-m)
-m multiport:表示启用多端口扩展
之后我们就可以启用比如 –dports 21,23,80
请求处理-j ACTION
常用的ACTION:
DROP:悄悄丢弃,一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向一个自定义的链
REDIRECT:重定向:主要用于实现端口重定向
例题:允许来自192.168.0.0/16网段的都允许访问我本机的192.168.1.10的SSHD服务
一定先添加具体规则,再添加链管理,否则就会把自己送到外边
iptables -A INPUT -s 192.168.0.0/16 -d 192.168.1.10 -p tcp –dport 22 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables的保存和生效
本文仅以Ubuntu为例
iptables的设置是立即生效的,机器重启后,iptables中的配置信息会被清空。您可以将这些配置保存下来,让iptables在启动时自动加载,省得每次都得重新输入。iptables-save和iptables-restore 是用来保存和恢复设置的。
先将防火墙规则保存到/etc/iptables.up.rules文件中
iptables-save > /etc/iptables.up.rules
然后修改脚本/etc/network/interfaces,使系统能自动应用这些规则,在最下面添加一行,如下内容
auto venet0
iface venet0 inet manual
up ifconfig venet0 up
up ifconfig venet0 127.0.0.2
up route add default dev venet0
down route del default dev venet0
down ifconfig venet0 down
pre-up iptables-restore < /etc/iptables.up.rules