I guess we would have to figure out how to detect if a client is bad. In my
example, if a connection is dropped and that IP address is sent to the
blacklist, then you would never let that IP address back in? Seems a little
extreme to me. I might need to know more about your program I guess.
On 6/22/07, Rodrigo Madera <[EMAIL PROTECTED]> wrote:
In my application I need something like this.
If the clients are detected to be "bad", then they will be sent to the
blacklist.
This would be a great plus for MINA.
Regards,
Rodrigo
On 6/22/07, Mark Webb <[EMAIL PROTECTED]> wrote:
>
> This is what I was thinking. I will create a JIRA entry and add this
code
> in....
>
> --START--------------------------------------------
> import java.net.InetSocketAddress;
> import java.net.SocketAddress;
>
> import org.apache.mina.common.IoFilterAdapter;
> import org.apache.mina.common.IoSession;
> import org.apache.mina.util.ExpiringMap;
> import org.apache.mina.util.SessionLog;
>
> public class ConnThrottleFilter extends IoFilterAdapter {
> private static final long DEFAULT_TIME = 1000;
> private long waitTime;
> private final ExpiringMap<String,Long> clients;
>
> public ConnThrottleFilter() {
> this( DEFAULT_TIME );
> }
>
> public ConnThrottleFilter( long millis ){
> this.waitTime = millis;
> clients = new ExpiringMap<String,Long>(60);
> }
>
> public void setWaitTime(long waitTime) {
> this.waitTime = waitTime;
> }
>
> private synchronized boolean isConnectionOk( IoSession session ){
> SocketAddress remoteAddress = session.getRemoteAddress();
> if( remoteAddress instanceof InetSocketAddress )
> {
> long now = System.currentTimeMillis();
> InetSocketAddress addr = (InetSocketAddress)remoteAddress;
> String host = addr.getAddress().getHostAddress();
> if( clients.containsKey(host)){
> Long time = clients.get(host);
> if( (now-time) > waitTime ){
> return false;
> }
> } else {
> clients.put( addr.getAddress().getHostAddress(), now );
> return true;
> }
> }
>
> return false;
> }
>
> @Override
> public void sessionCreated(NextFilter nextFilter, IoSession session)
> throws Exception {
> if( ! isConnectionOk(session)){
> SessionLog.info( session, "Connections coming in too fast;
> closing." );
> session.close();
> }
> }
> }
> --END--------------------------------------------------------
>
> On 6/22/07, Norman Maurer <[EMAIL PROTECTED]> wrote:
> >
> > Hi Mat,
> >
> > it depends on your protocol. You should think about how many connects
> are
> > asspected ;-)
> >
> > bye
> > Norman
> >
> > On Fri, 22 Jun 2007 15:15:29 +0800, mat <[EMAIL PROTECTED]>
> wrote:
> > > Can you give some idea what the configured time could be?
> > >
> > > On 6/22/07, Norman Maurer <[EMAIL PROTECTED]> wrote:
> > >>
> > >> You could write a IOFilter which limit the connections per Ip in a
> > >> configured time. I did the same in a project for limiting the
> > > connections
> > >> per time on a smtpserver.
> > >>
> > >> Bye
> > >> Norman
> > >>
> > >>
> > >> On Fri, 22 Jun 2007 14:16:53 +0800, mat <[EMAIL PROTECTED]>
> > > wrote:
> > >> > Thanks. My concern is what if some clients write a loop keep
> opening
> > >> socket
> > >> > connection and my server keeps accepting and eventually mina core
> > will
> > >> > reject any new connections. Is that possible to happen? Correct
me
> if
> > > i
> > >> am
> > >> > wrong,
> > >> >
> > >> > On 6/22/07, 凌晨 <[EMAIL PROTECTED]> wrote:
> > >> >>
> > >> >> Dear mat:
> > >> >> I think you should implement your own handler to detect this
> kind
> > > of
> > >> >> connections from time to time then kill them all.
> > >> >> You send some detecting packets to these connected connetions,no
> > >> >> response,no connection.
> > >> >> Best Wishes
> > >> >>
> > >> >> ----- Original Message -----
> > >> >> From: "Mark Webb" <[EMAIL PROTECTED]>
> > >> >> To: <[email protected]>
> > >> >> Sent: Friday, June 22, 2007 8:56 AM
> > >> >> Subject: Re: malicious client
> > >> >>
> > >> >>
> > >> >> > maybe a variant of the throttle filter which only allows one
> > >> > connection
> > >> >> per
> > >> >> > IP at a time.
> > >> >> >
> > >> >> > On 6/21/07, mat <[EMAIL PROTECTED]> wrote:
> > >> >> >>
> > >> >> >> Thanks. But how should I set the TIMEOUT since the malicious
> > >> >> client could
> > >> >> >> connect by programming a loop, couldn't he?
> > >> >> >>
> > >> >> >> 2007/6/21, Mark Webb <[EMAIL PROTECTED]>:
> > >> >> >> >
> > >> >> >> > an IoFilter could probably work. This is related to the
> filter
> > >> > work
> > >> >> >> that
> > >> >> >> > was discussed a while back that dealt with heartbeats.
> > >> >> >> >
> > >> >> >> > On 6/21/07, Julien Vermillard <[EMAIL PROTECTED]>
wrote:
> > >> >> >> > >
> > >> >> >> > > On Thu, 21 Jun 2007 20:46:55 +0800
> > >> >> >> > > mat <[EMAIL PROTECTED]> wrote:
> > >> >> >> > >
> > >> >> >> > > > I wonder whether any function could prevent Mina from a
> > >> > malicious
> > >> >> >> > > > client attacking by opening connections and not sending
> any
> > >> > data.
> > >> >> If
> > >> >> >> > > > NOT, how could I do? Thanks.
> > >> >> >> > >
> > >> >> >> > > Hi,
> > >> >> >> > >
> > >> >> >> > > Just detect IDLEness, in your IoHandler sessionIdle.
> > >> >> >> > > If a client doesn't send enought data, close it.
> > >> >> >> > >
> > >> >> >> > > HTH
> > >> >> >> > >
> > >> >> >> > > Julien
> > >> >> >> > >
> > >> >> >> >
> > >> >> >> >
> > >> >> >> >
> > >> >> >> > --
> > >> >> >> > ..Cheers
> > >> >> >> > Mark
> > >> >> >> >
> > >> >> >>
> > >> >> >
> > >> >> >
> > >> >> >
> > >> >> > --
> > >> >> > ..Cheers
> > >> >> > Mark
> > >> >> >
> > >> >
> > >> >
> > >> >
> > >> >
> > >> >
> > >>
> > >>
> > >
> > >
> > > !DSPAM:1,467b7764240371295747258!
> > >
> > >
> >
> >
>
>
> --
> ..Cheers
> Mark
>
--
..Cheers
Mark