分类: LINUX
2009-08-21 17:40:31
1.禁止icmp
**使自己不能ping 通 127.0.0.1
iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
**192.168.0.0/24 网段无法ping能本机
iptables -A INPUT -s 192.168.0.0/24 -p icmp -j DROP
**禁所有机器
# iptables -A INPUT -s 0/0 -p icmp -j DROP
# ICMP(PING) 接受 ! echo-request
/sbin/iptables -A INPUT -p icmp –icmp-type ! echo-request -j ACCEPT
accept_redirects
# echo ”0″ > /proc/sys/net/ipv4/conf/all/accept_redirects
or
# sysctl net.ipv4.conf.all.accept_redirects=”0″
在linux里,如果要想使ping没反应也就是用来忽略icmp包,因此我们可以在 Linux的命令行中输入如下命令:
echo 1 > /proc/sys/net/ipv4/icmp_echo_igore_all ;如果想恢复使用ping命令,就可以输入:
echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all命令。
**不允许人家PING我
#iptables -A INPUT -p icmp --icmp-type echo-request -i eth1 -j DROP
2.禁止udp
iptables -A INPUT -p udp -i eth1 -j DROP
4.防止恶意扫描
#SYN的使用
不能关闭所有端口,也不能只指定某些端口处于打开状态,那么怎样才能设置一个有效的规则,既可以允许普通用户正常通过,又可以阻止恶意攻击者访问网络呢?
刚开始使用iptables的人可以充分利用syn标识来阻止那些未经授权的访问。iptables只检测数据包的报头,事实上,除 iptables以外,很多其它有用的数据包分析都是基于报头的。比如,在进行Web冲浪时,一个请求从你的PC发送至其它地方的Web服务器上,该服务器会响应请求并发回一个数据包,同时得到你系统上的一个临时端口。与响应请求不同的是,服务器并不关心所传送的内容。可以利用这种特点来设置规则,让它阻止所有没有经过你系统授权的TCP连接:
$iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP
这里的-i指的是网卡,-p则是指协议,--syn则表示带有syn标识设置的TCP数据包。SYN用于初始化一个TCP连接,如果自己机器上没有运行任何服务器,别人也就不会向你发送SYN数据包。
#只允许在LAN中使用SSH连接
$IPTABLES -A INPUT -s 192.168.1.0/24 -p tcp --destination-port ssh -j ACCEPT
#丢弃那些流出的不是出自本地机的数据包
$IPTABLES -A OUTPUT -o eth1 -s !192.168.1.0/24 -j DROP
iptables -A FORWARD -s !192.168.1.0/24 -j DROP
#限制一些流出的信息
$IPTABLES -A OUTPUT -o eth0 -p tcp -dport 31337 -j DROP
$IPTABLES -A OUTPUT -o eth0 -p tcp -sport 31337 -j DROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables -A INPUT -s 192.186.0.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#只允许每组ip同时15个80端口转发
iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 --connlimit-mask 24 -j DROP