Linux下使用iptables封锁端口禁止邮件发送

2016年01月31日

原创文章,转载请注明出处:https://www.myzhenai.com/thread-17843-1-1.html https://www.myzhenai.com.cn/post/2161.html
原理是使用iptables封锁了PREROUTING (路由前) INPUT (数据包流入口) FORWARD (转发管卡) OUTPUT(数据包出口) POSTROUTING(路由后)五个规则链,只要是从这些规则链里出口的和入口的数据,都不能经过指定的端口. 例程封锁了这些端口 25,110,50,105,106,109,209,512,465,992,1109,24554,60177,60179
同时枚举了当前所有网卡,把所有网卡的进出数据都不能通过指定的端口传输.

这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。

常用的ACTION:
DROP:悄悄丢弃
一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向一个自定义的链
DNAT
SNAT
MASQUERADE:源地址伪装
REDIRECT:重定向:主要用于实现端口重定向
MARK:打防火墙标记的
RETURN:返回
在自定义链执行完毕后使用返回,来返回原规则链。

-P :设置默认策略的(设定默认门是关着的还是开着的)
默认策略一般只有两种
iptables -P INPUT (DROP|ACCEPT) 默认是关的/默认是开的
比如:
iptables -P INPUT DROP 这就把默认规则给拒绝了。并且没有定义哪个动作,所以关于外界连接的所有规则包括Xshell连接之类的,远程连接都被拒绝了。
-F: FLASH,清空规则链的(注意每个链的管理权限)
iptables -t nat -F PREROUTING
iptables -t nat -F 清空nat表的所有链
-N:NEW 支持用户新建一个链
iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。
-X: 用于删除用户自定义的空链
使用方法跟-N相同,但是在删除之前必须要将里面的链给清空昂了
-E:用来Rename chain主要是用来给用户自定义的链重命名
-E oldname newname
-Z:清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)
iptables -Z :清空

(4) -i

以包进入本地所使用的网络接口来匹配包。只能用INPUT \ FORWARD \PREROUTING 三个链中。用在其他任何链中都会出错。
可使用“+” “!”两种符号。
只用一个“+"号,表示匹配所有的包,不考虑使用哪个接口。如: iptable -A INPUT -i + //表匹配所有的包。
放在某类接口后面,表示所有此类接口相匹配。如: iptable -A INPUT -i eth+ //表示匹配所有ethernet 接口。

(5) -o
以数据包出本地所使用的网络接口来匹配包。与-i一样的使用方法。
只能用OUTPUT \ FORWARD \POSTROUTING 三个链中。用在其他任何链中都会出错。
可使用“+” “!”两种符号。

iptables规则创建脚本.

# !/bin/bash
mv /etc/sysconfig/iptables /etc/sysconfig/iptables.back
iptables -F
service iptables save
echo "# !/bin/bash" >> iptables.sh
echo "service iptables restart" >> iptables.sh
ip=`ifconfig -a|grep encap|awk -F " " '{ print $1 }'`
OLD_IFD="$IFD"
IFD=" "
arr=($ip) 
IFD="$OLD_IFD" 
for d in ${arr[@]} 
do 
#echo $d
a="25,110,50,105,106,109,209,512,465,992,1109,24554,60177,60179"
OLD_IFS="$IFS"
IFS=","
arr=($a) 
IFS="$OLD_IFS" 
for s in ${arr[@]} 
do 
#************************************************************************************#
echo "iptables -A INPUT -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p tcp --sport $s -j DROP" >> iptables.sh
#**************************************************************************************#
echo "iptables -A INPUT -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p udp --sport $s -j DROP" >> iptables.sh
#**************************************************************************************#
echo "iptables -A INPUT -i $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -i $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -i $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -i $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p udp --sport $s -j DROP" >> iptables.sh
echo "#**********************This is Divider**************************#" >> iptables.sh
done
done
echo "service iptables save" >> iptables.sh
echo "service iptables restart" >> iptables.sh
service iptables restart

 

所创建的iptables规则
链接: https://pan.baidu.com/s/1dEpubzN 密码: 59ra
Demo Preview: 链接: https://pan.baidu.com/s/1ba7FdG 密码: ws2i


sicnature ---------------------------------------------------------------------
I P 地 址: 3.133.157.231
区 域 位 置: 美国
系 统 信 息: 美国
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://myzhenai.com/post/2161.html

没有评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注