正在加载...
分页: 2/2 第一页 上页 1 2 最后页 [ 显示模式: 摘要 | 列表 ]

使用iptables防止ssh暴力猜解

[ 2009/04/20 16:23 | by selboo ]
基于端口,使用iptables的connlimit模块

iptables -I INPUT -p tcp –syn –dport 22 -m connlimit –connlimit-above 2 -j REJECT

一条指令即可以搞掂, –connlimit-above 2表示只允许一个客户开启二个会话,与sshd_config 设置的区别,sshd_config只能设定一个用户最多尝试几次密码

同样也可以设定web服务访问设限

iptables -I INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 30 -j REJECT
这样即可

用putty测试,开启到第三字,显示网络不可用,如下图

Tags: ,

iptables屏蔽IP段

[ 2009/04/09 00:15 | by selboo ]
# iptables -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -A FORWARD -s 124.115.0.0/24 -j DROP
# iptables -I FORWARD -d 202.96.170.164 -j DROP

补充:

单个IP的命令是
iptables -I INPUT -s 124.115.0.199 -j DROP

封IP段的命令是
iptables -I INPUT -s 124.115.0.0/16 -j DROP
iptables -I INPUT -s 124.115.3.0/16 -j DROP
iptables -I INPUT -s 124.115.4.0/16 -j DROP

封整个段的命令是
iptables -I INPUT -s 124.115.0.0/8 -j DROP

封几个段的命令是
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
Tags:

Linux安全工具-Iptables

[ 2008/08/05 12:17 | by selboo ]
    iptables是一款状态防火墙几乎集成到所有Linux发行版中了,这就意味着你可以使用它基于ip地址的规则来控制远程机器访问你的服务器,以及连接请求的类型。(旧的无状态的防火墙让你只能根据数据包的内容来做出判断,因此你被端口号限制,不能跟踪会话的存在,如FTP数据流),Debian用户可以通过apt-get install iptables conntrack来获取它。

    当你从终端登陆到机器上时请完成你的初始化测试,用一个错误的规则将你自己锁在外面,然后你亲自恢复,当所有数据包被允许通过,因此这如果不被接受,观察iptables-save和iptables-restore命令,这里有一个加上注释的例子脚本,它非常基础,但是基本上它可以告诉你iptables是如何工作的:

#!/bin/bash
# example iptables script
# flush the old rules
iptables -F
# set the default policy of the chain to accept
iptables -P INPUT ACCEPT
# create a new table for logging and discarding
# unwanted packets
iptables -N LOGDROP
# use rate limiting on the logging, and
# add a prefix of ’filter:
iptables -A LOGDROP -m limit -j LOG --log-prefix "filter: "
# drop unwanted TCP connections with a
# TCP ReSeT packet
iptables -A LOGDROP -p tcp -j REJECT --reject-with tcp-reset
# drop other packets by sending an ICMP
# port unreachable in response
iptables -A LOGDROP -j REJECT --reject-with icmp-port-unreachable
# now drop the packet
iptables -A LOGDROP -j DROP
#allow anything on the local interface
iptables -A INPUT -i lo -j RETURN
# allow packets that are related to
# an on-going conversation
iptables -A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j
RETURN
iptables -A INPUT -p udp -m conntrack --ctstate RELATED,ESTABLISHED -j
RETURN
# allow SSH traffic
iptables -A INPUT -p tcp -m tcp --dport 22 -j RETURN
# allow HTTP and HTTPS traffic
iptables -A INPUT -p tcp -m tcp --dport 443 -j RETURN
iptables -A INPUT -p tcp -m tcp --dport 80 -j RETURN
# accept the following ICMP types -
# echo, echo reply, source quench,
ttl exceeded,
# destination unreachable - and drop the rest
iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j RETURN
iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j RETURN
iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j RETURN
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j RETURN
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j RETURN
# if we haven’t accepted it, drop and log it.
iptables -A INPUT -j LOGDROP

    如果你正在疑惑日志在哪里,象什么样子,这里有一个例子,来自系统日志/var/log/messages,一个来自192.168.50.40的UDP数据包,源端口30766,目标服务器是192.168.0.8,目标端口是1026,这个数据包被丢掉了,它可能是windows机器上了信使服务发出的垃圾信息:

Nov 22 06:24:00 localhost kernel: filter: IN=eth0
OUT=MAC=00:0a:e6:4e:6d:49:00:14:6c:67:cc:9a:08:00
SRC=192.168.50.40 DST=192.168.0.8 LEN=402
TOS=0x00 PREC=0x00 TTL=47 ID=3345 PROTO=UDP
SPT=30766 DPT=1026 LEN=382

    日志输出看起来有点恐怖,但是你能容易地拣出你想要的信息,首先,你看到的是日期和主机名,IN和OUT描述了数据包是来自哪个端口和通过哪个端口出去的,MAC给出了源和目标MAC地址,SRC和DST是源和目标ip地址,PROTO是UDP,TCP,ICMP等等,SPT和DPT是源和目标端口号,例如:大部分到服务的连接如ssh都有一个临时的源端口,如35214,和一个目标端口22,那么象前面说道的windows机器的信使服务数据包,你可以安全地忽略它。

    当你安装号防火墙后,务必再从另外一台机器上运行一次nmap,来检查是否只打开了正确的端口。

总结

    安全是不断提高、评估你的保护尺度的一个循环过程,上面的工具允许你保护你的服务器,确保它按需要进行工作,分析意外事件的网络通讯,记住,意外总是让人不愉快的!正如Larry Niven说的:“你不理解的任何事情都是危险的除非你理解了它”。

    当你正在使用这些工具时,尝试思考安全的3个步骤:预防,检查和响应。如果可能你最好预防事情的发生,发生入侵后清除的代价是昂贵的,并且你可能丢失掉有用的数据,无论如何,你将理解一些入侵的知识,因此尽你所能做好预防工作。

TCP 3次握手

    UDP是一个无连接的协议,相反,TCP在传输失败时会重新再发送一次数据,它的设置比UDP更复杂,以3次握手开始,初始化一个连接,客户端发送一个SYN(开始同步)数据包,服务器然后用一个SYN+ACK数据包进行响应(如果端口是打开的情况下),然后客户端响应一个ACK(告知收到)数据包,连接就这样建立了,这些数据包携带数据序列号,它允许协议检查和重新发送丢失的数据包,如果端口是关闭的或被防火墙过滤了,响应可能是RST或没有响应,更多信息可以查看nmap文档。
分页: 2/2 第一页 上页 1 2 最后页 [ 显示模式: 摘要 | 列表 ]