on cherche à hacker mon ssh

WRInaute impliqué
Bonjour,
Voila plus de trois heures que je suis bombardé par différentes ip et qui essaye de se connecter sur mon ssh :

Jan 18 17:55:23 sd-xxxx sshd[20920]: Illegal user baldwin from 210.92.201.91
Jan 18 17:55:28 sd-xxxx sshd[20922]: Illegal user bambi from 210.92.201.91
Jan 18 17:55:34 sd-xxxx sshd[20924]: Illegal user baptist from 210.92.201.91
Jan 18 17:55:39 sd-xxxx sshd[20926]: Illegal user barbara from 210.92.201.91
Jan 18 17:55:44 sd-xxxx sshd[20931]: Illegal user barbie from 210.92.201.91
Jan 18 17:55:48 sd-xxxx sshd[20933]: Illegal user barney from 210.92.201.91
Jan 18 17:55:53 sd-xxxx sshd[20935]: Illegal user barry from 210.92.201.91
Jan 18 17:55:57 sd-xxxx sshd[20937]: Illegal user bart from 210.92.201.91
Jan 18 17:56:01 sd-xxxx sshd[20943]: Illegal user basil from 210.92.201.91
Jan 18 17:56:05 sd-xxxx sshd[20945]: Illegal user bea from 210.92.201.91
Jan 18 17:56:08 sd-xxxx sshd[20947]: Illegal user beatrice from 210.92.201.91

qu'est ce que je peux faire ? est-ce une attaque sérieuse ou quoi ?
j+
 
WRInaute discret
salut

Tu peux définir des regles avec iptables qui limitent le nombre de tentatives de connexion echouées par laps de temps.

fab
 
WRInaute impliqué
merci de vos réponses
changer de port c'est ce qu'intuitivement je pensais sauf que je voudrais pas me gauffrer dans la manip :(
en faite depuis 17h00 environ jusqu' à maintenant plusieurs ip ont défilé, sauf que la ca y est il m'a laché :) va t'il revenir ...?
sinon trouvé sur ce site un script qui à l'air de répondre au besoin, y a un admin qui pourrait me dire ce qu'il en pense car je trouve les règles iptables rebutantes au possible ;) le voici :
Code:
#! /bin/sh
#
# firewall	iptables based frewall script
#
#		Written by Thomas Pircher <tehpeh@gmx.net>
#		Based on the skeleton script, written by
#		Miquel van Smoorenburg <miquels@cistron.nl> and
#		Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version:	@(#)firewall  1.0.1  2006-01-22  tehpeh@gmx.net
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/sbin/iptables
NAME=firewall
DESC="iptables based firewall"

test -x $DAEMON || exit 0

set -e

iptables=/sbin/iptables
int_if=eth0			# internal (local) interface, e.g. eth0
int_ip=207.210.85.78		# internal (local) IP, e.g. 192.168.1.94



function firewall_start
{
	#modprobe ip_conntrack
	#modprobe ip_conntrack_ftp
	#modprobe ip_nat_ftp

	# other network protection
	echo 1 > /proc/sys/net/ipv4/tcp_syncookies                              # enable syn cookies (prevent against the common 'syn flood attack')
	echo 0 > /proc/sys/net/ipv4/ip_forward                                  # disable Packet forwarning between interfaces
	echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts                 # ignore all ICMP ECHO and TIMESTAMP requests sent to it via broadcast/multicast
	echo 1 > /proc/sys/net/ipv4/conf/all/log_martians                       # log packets with impossible addresses to kernel log
	echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses           # disable logging of bogus responses to broadcast frames
	echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter                          # do source validation by reversed path (Recommended option for single homed hosts)
	echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects                     # don't send redirects
	echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route                # don't accept packets with SRR option

	# default policy
	$iptables -P INPUT   DROP
	$iptables -P FORWARD DROP
	$iptables -P OUTPUT  DROP

	# drop broadcast (do not log)
	$iptables -A INPUT  -i $int_if -d 255.255.255.255 -j DROP
	$iptables -A INPUT  -i $int_if -d 192.168.255.255 -j DROP
	$iptables -A INPUT  -i $int_if -d 192.168.1.255   -j DROP
	$iptables -A INPUT             -d 10.0.0.0/8      -j DROP
	$iptables -A INPUT             -d 169.254.0.0/16  -j DROP

	# drop Bad Guys
	$iptables -A INPUT -m recent --rcheck --seconds 60 -m limit --limit 10/second -j LOG --log-prefix "BG "
	$iptables -A INPUT -m recent --update --seconds 60 -j DROP

	# drop spoofed packets (i.e. packets with local source addresses coming from outside etc.), mark as Bad Guy
	$iptables -A INPUT  -i $int_if -s $int_ip -m recent --set -j DROP

	# drop silently well-known virus/port scanning attempts
	$iptables -A INPUT  -i $int_if -m multiport -p tcp --dports 53,113,135,137,139,445 -j DROP
	$iptables -A INPUT  -i $int_if -m multiport -p udp --dports 53,113,135,137,139,445 -j DROP
	$iptables -A INPUT  -i $int_if -p udp --dport 1026 -j DROP
	$iptables -A INPUT  -i $int_if -m multiport -p tcp --dports 1433,4899 -j DROP

	# accept everything from loopback
	$iptables -A INPUT  -i lo -j ACCEPT
	$iptables -A OUTPUT -o lo -j ACCEPT

	# accept ICMP packets (ping et.al.)
	$iptables -A INPUT  -p icmp -m limit --limit 10/second -j ACCEPT
	$iptables -A INPUT  -p icmp -j DROP
#	$iptables -A INPUT  -m recent --name ICMP --update --seconds 60 --hitcount 6 -j DROP
#	$iptables -A INPUT  -i $int_if -d $int_ip -p icmp -m recent --set --name ICMP -j ACCEPT

	# internet (established and out)
	$iptables -A OUTPUT -o $int_if -j ACCEPT
	$iptables -A INPUT  -i $int_if -m state --state ESTABLISHED,RELATED -j ACCEPT

	# public services
	$iptables -A INPUT -i $int_if -p tcp -d $int_ip -m multiport --dports 25,80,143,443,993,8000 -j ACCEPT

	# accept ssh connections (max 2/minute from the same IP address)
	$iptables -A INPUT -p tcp --dport 22 -m recent --rcheck --seconds 60 --hitcount 2 --name SSH -j LOG --log-prefix "SH "
	$iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 2 --name SSH -j DROP
	$iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT

	# log all the rest before dropping
	$iptables -A INPUT   -j LOG --log-prefix "IN "
	$iptables -A INPUT   -j REJECT --reject-with icmp-port-unreachable
	$iptables -A OUTPUT  -j LOG --log-prefix "OU "
	$iptables -A OUTPUT  -j REJECT --reject-with icmp-port-unreachable
	$iptables -A FORWARD -j LOG --log-prefix "FW "
	$iptables -A FORWARD -j REJECT --reject-with icmp-port-unreachable
}

function fallback_start
{
	# flush rules
	$iptables -F
	$iptables -F -t mangle
	$iptables -X -t mangle
	$iptables -F -t nat
	$iptables -X -t nat
	$iptables -X

	# default policy
	$iptables -P INPUT   DROP
	$iptables -P FORWARD DROP
	$iptables -P OUTPUT  DROP

	# accept everything from loopback
	$iptables -A INPUT  -i lo -j ACCEPT
	$iptables -A OUTPUT -o lo -j ACCEPT

	# accept ICMP packets (ping et.al.)
	$iptables -A INPUT  -i $int_if -d $int_ip -p icmp -j ACCEPT

	# internet (established and out)
	$iptables -A OUTPUT -o $int_if -j ACCEPT
	$iptables -A INPUT  -i $int_if -m state --state ESTABLISHED,RELATED -j ACCEPT

	# public services
	$iptables -A INPUT -i $int_if -p tcp -d $int_ip -m multiport --dports 22,25,80,143,443,993 -j ACCEPT

	# log all the rest before dropping
	$iptables -A INPUT   -j LOG --log-prefix "IN "
	$iptables -A OUTPUT  -j LOG --log-prefix "OU "
	$iptables -A FORWARD -j LOG --log-prefix "FW "
}

function firewall_stop
{
	# flush rules
	$iptables -F
	$iptables -F -t mangle
	$iptables -X -t mangle
	$iptables -F -t nat
	$iptables -X -t nat
	$iptables -X

	# default policy
	$iptables -P INPUT   ACCEPT
	$iptables -P FORWARD ACCEPT
	$iptables -P OUTPUT  ACCEPT
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
	firewall_start || fallback_start
	echo "OK."
	;;
  stop)
	echo -n "Stopping $DESC: "
	firewall_stop
	echo "OK."
	;;
#  reload|force-reload)
#	#
#	#	If the daemon can reload its config files on the fly
#	#	for example by sending it SIGHUP, do it here.
#	#
#	#	If the daemon responds to changes in its config file
#	#	directly anyway, make this a do-nothing entry.
#	echo -n "Reloading $DESC: $NAME"
#	echo "OK."
#  ;;
  restart|reload|force-reload)
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart".
	#
	echo -n "Restarting $DESC: "
	firewall_stop
	sleep 1
	firewall_start || fallback_start
	echo "OK."
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	# echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0

et le site qui va avec :
http://www.tty1.net/iptables-firewall_en.html
merci!
 
WRInaute passionné
tu peux déjà empecher le login en root en ssh.
Tu créés un autre utilisateur avec un nom pas banal et comme groupe le meme nom que l'utilisateur (bref aucun droit) et un mot de passe pas banal
Et tu te logues en root qu'avec su
 
WRInaute impliqué
yes en effet tu avais déjà répondu à cette question, en revanche si tu es connecté en root sur ta machine via ssh, comment tu fais pour redémarer sshd ?
J'imagine que si tu te goures dans la conf et que ssh ne rédémare pas tu es déconnecté à tout jamais de ta machine ?!
 
WRInaute occasionnel
Pour redémarrer ssh ? ssh restart ou ssh reload ? ou /etc/init.d/ssh reload ça dépend des systèmes. Avec Debian /etc/init.d/ssh reload

Oui, ce sont des manips à faire à jeun, si tu te loupes, au revoir dédié :cry:

Pour travailler sur iptables il y a des solutions, genre un script couplé à un cron qui vide les règles toutes les 5 minutes le temps de réaliser tes manips. Ensuite, tu retires ce script. Comme ça, si tu te loupes, ton script remet tout à zéro. Voir sur google : Script vider iptables. Je ne l'ai jamais utilisé, mais ça doit être assez simple à mettre en place.

Enfin, tu fais bien de le souligner.
 
WRInaute passionné
ça depend de la version iptable

il me semble que c'est --flush ou --clean suivant la version

sinon tu peux uploader un webshell dans un rep protégé

rog
 
WRInaute impliqué
voilà qui est fait. Atprès une nouvelle attaque est un load qui prenait 0,40 de plus, j'ai changé le port du sshd, me voila normalemen tranquille pour un bout de temps... :)
Merci pour le /etc/init.d/ssh reload car j'aurais fait restart ce qui m'aurait déconnecté au passage non?
j+
 
WRInaute occasionnel
Chez moi, restart ne me déconnecte pas. (Debian GNU/Linux)

Attention, le changement de port est très efficace pour contrer les robots et calmer ta machine mais ce n'est pas une sécurité. Il faut interdire la connexion ssh au compte root et l'autoriser pour un seul et unique utilisateur simple, et choisir des mots de passe çy&xçx45Zw45rbxyD4fd54f5

Voir les liens cités au dessus.
 
Discussions similaires
Haut