做DNAT,内网提供web服务:
iptables -t nat -I PREROUTING -i eth1 -p tcp --dpor 53 -j DNAT --to-destination 192.168.88.1
iptables -t nat -I PREROUTING -i eth1 -p udp --dpor 53 -j DNAT --to-destination 192.168.88.1
网卡eth1端口号53路由进入之前的包进行修改并做目标地址转换
上规则命令参数详解:
iptables -t nat:表名是指定nat表
-I:根据序号插入一条规则,PREROUTING:修改到来的包,
-i eth1:指定的数据包的接口为eth1
-p tcp:协议,意思只tcp内的类型
--dpor 53:用来匹配封包的目的地的端口号
-j DNAT:-j,指定具体的处理方法,DNAT,做目标地址转换
to-destination 192.168.88.1 :(destination或-d)用来匹配封包的目的地端口号
在POSTROUTING链中添加源地址换规则:
iptables -t nat -I POSTROUTING -o eth0 -s 192.168.8.0/24 -p tcp --dpor 53 -j SNAT --to-source 192.168.88.101:40000-50000
iptables -t nat -I POSTROUTING -o eth0 -s 192.168.8.0/24 -p udp --dpor 53 -j SNAT --to-source 192.168.88.101:40000-50000
由eth0地址为0到255之间端口号为53的出去包,做源地址转换规则
上规则命令参数详解:
iptables -t nat:表名是指定nat表
-I POSTROUTING:准备修改出去的包
-o eth0:指定封包要从那块网卡送出去
-s 192.168.8.0/24:指定规则操作源地址IP为0到255之间
-p tcp:协议,意思只tcp内的类型
--dpor 53:用来匹配封包的目的地的端口号
-j SNAT:-j,指定具体的处理方法,DNAT,做转源地址转换
--to-source 192.168.88.101:用来匹配封包的来源IP
40000-50000:端口号在四万到五万之间
二:
Iptables规则的使用,以下规则根据自己需要酌情添加
iptables -L 列出表/链中的所有规则。默认只列出filter表
iptables -F -F清除 ,作用就是把 FILTRE TABLE 的所有链的规则都清空
Iptables -X 清除预设表filter中使用者自定链中的规则
iptables -p INPUT DROP
iptables -p OUTPUT ACCEPT
iptables -p FORWARD DROP
上面的意思是设定默认规则,可以不进行操作,,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.
可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.
这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.
注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.
怎么办,去本机操作呗!
iptables -A INPUT -s 192.168.8.5 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
如:我们只允许192.168.8.5的机器进行SSH连接,其余禁止连接
如果要允许,或限制一段IP地址可用 192.168.8.0/24 表示192.168.0.1-255端的所有IP.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
关闭所有的端口
iptables -D FORWARD -p udp --dport 8000 -j REJECT
禁止QQ端口
iptables -A INPUT -p tcp -m multiport --source-port 25,53,80,100
源端口多端口的匹配,最多指定15个端口号,以英文逗号分隔符,注意端口号之间没有空格,使用必须有-p tcp或-p udp为前提条件
iptables -A INPUT -p tcp -m multiport --destination-port 25,53,80,100
目的端口多端口匹配,使用方法和源端口一样,唯一区别是他是匹配目的端口
iptables -A INPUT -m mac --mac-source 00-0C-29-75-E8-84
基于包的MAC源地址匹配,地址格式只能是!XX-XX-XX-XX-XX,也可以用英文感叹号"!"去反,意思是除此之外的地址都可以接受。
iptables -A INPUT -m limit --limit 3/hour
说明用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是否超过一次 3 个封包。 除了每小时平均一次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。 除了进行封包数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水法,导致服务被阻断。
iptables -A FORWARD -s 192.168.8.0/24 -m limit --limit 100/s -j ACCEPT
iptables -A FORWARD -s 192.168.8.0/24 -j DROP
上例中将192.168.8.0网段中的主机网络速度限制为100KB/s。
iptables -A FORWARD -m iprange --src-range 192.168.8.100-192.168.8.200 -j DROP
限制某个IP 段内不可以上网。上例限制为:192.168.8.100到192.168.8.200之内的IP不可以上网。
iptables -I FORWARD -d www.baidu.com -j DROP
禁止服用户访问百度