Устанавливаем sshguard из портов:cd /usr/ports/security/sshguard
make install clean WITH_PF=yesНастраиваем перенаправление логов в sshguard
echo "auth.info;authpriv.info |exec /usr/local/sbin/sshguard" >> /etc/syslog.conf
Правила блокировки по таблице, /etc/pf.conf
internet="vlan50"
table persist
block in quick on $internet from label "ssh bruteforce"Перечитываем измененные файлы конфигурации PF и syslogd:
pfctl -f /etc/pf.conf
/etc/rc.d/syslogd restartТестируем попробовав подобрать пароли:
shguard[1048576]: Started successfully [(a,p,s)=(4, 420, 1200)], now ready to scan.sshd[1048577]: Invalid user administrador from 21.138.24.51
sshd[1048579]: Invalid user publica from 21.138.24.51
sshd[1048580]: Invalid user rbecerril from 21.138.24.51
sshd[1048581]: Invalid user rvences from 21.138.24.51sshguard[1048582]: Blocking 21.138.24.51: 4 failures over 15 seconds.
shguard[1048583]: Releasing 21.138.24.51 after 490 seconds.
URL: http://brj.pp.ru/
Обсуждается: http://www.opennet.me/tips/info/1424.shtml
в линуксе делаю так:
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsourceiptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j DROP
не совсем понял - -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j DROP
блокирует на 3 мин или на бОльшейй время?
а для pf есть bruteblock
Эт конечно решение, но не проще(правильнее) ли пойти от обратного и закрыть ssh изначально за фаером, а открывать тем же порткнокером? Если кулхацкеры не увидят ssh вообще, то и щимиться не будут :)
а можно чуть поподробнее? что за порткнокер?
/usr/ports/security/knockknockd is a port-knock server. It listens to all traffic on an ethernet
(or PPP) interface, looking for special "knock" sequences of port-hits.A client makes these port-hits by sending a TCP (or UDP) packet to a
port on the server. This port need not be open -- since knockd listens
at the link-layer level, it sees all traffic even if it's destined for
a closed port. When the server detects a specific sequence of port-hits
port-hits, it runs a command defined in its configuration file. This
can be used to open up holes in a firewall for quick access.
> что за порткнокер?
"port knocking" ~ Способ доступа/опознавания хостом без открытых для соединения наружу tcp/ip портов...
http://opennet.ru/search.shtml?exclude=index|/man.shtml...
http://en.wikipedia.org/wiki/Port_knocking
А мне хватает изменения стандартного порта. Брутфорсов на ссх не наблюдал уже давно...
Видимо ваши кулхацкеры нмап не проходили :)
Видимо я кулхацкерам нафик не нужен, а от всяких роботов помогает...
Если использовать PF то разумнее использовать
An example rule:
pass in on $ext_if proto tcp to $web_server \
port www flags S/SA keep state \
(max 200, source-track rule, max-src-nodes 100, max-src-states 3)
The rule above defines the following behavior: Limit the absolute maximum number of states that this rule can create to 200 Enable source tracking; limit state creation based on states created by this rule only Limit the maximum number of nodes that can simultaneously create state to 100 Limit the maximum number of simultaneous states per source IP to 3
потом по крону чистить таблицу. В обсд можно без крона.
А можно чуток по подробнее, возможно и не PF дойдут до такой фичи ))) Я бы с удовольствием поразбирался, благо тему подняли актуальную...или отправь хотяб к ману по заданному примеру...
DenyHosts = рулез
Или вообще сменить дефолтовый 22 на 54187?
Пока писал, MoHaХ за меня ответил.
echo "sshd: EXCEPT x.x.x.x" >> /etc/hosts.deny
или так :)
###number 1
block drop in quick on $ext_if from <ssh-bruteforce>###number 2
pass in on $ext_if proto tcp from any to $ext_if) port ssh flags S/SA keep state (max-src-conn-rate 3/30, overload <ssh-bruteforce> flush global)смотреть список адресов
pfctl -T show -t ssh-bruteforce
Ответ чемберлена.
Читаем тут: "Simple portknocking daemons as knockd are vulnerable because a sniffer may recover which ports where knocked. A better solution is Cryptknock ([WWW] http://cryptknock.sourceforge.net/) Cryptknock's description says: "Cryptknock is an encrypted port knocking tool. Unlike other port knockers which use TCP ports or other protocol information to signal the knock, an encrypted string is used as the knock. This makes it extremely difficult for an evesdropper to recover your knock (unlike other port knockers where tcpdump can be used to discover a port knock)."
и когда портнокер падает, достучаться до машины не реально...хорошая перспектива
>и когда портнокер падает, достучаться до машины не реально...
>
>хорошая перспективаcron эту проблему снимает, да и чтоб портнокер падал -- ну не знаю чем его так сильно надо постараться.
Есть ещё monit
http://www.tildeslash.com/monit/
не cron-ом единым
моя делать так:
/usr/ports/security/sshit/# make install clean
/usr/local/etc/sshit.conf ->
FIREWALL_TYPE = ipfw2/etc/syslog.conf ->
auth.info;authpriv.info |exec /usr/local/sbin/sshitipfw add ### deny ip from table(0) to any
/etc/rc.d/syslod restart
дополнительно можно:
/etc/ssh/sshd_config ->
AllowUsers user1 user2
/etc/rc.d/sshd reload
[17:04][copperhead][/home/mike]#cat /etc/inetd.conf | grep sshd
ssh stream tcp nowait/5/10 root /usr/sbin/sshd sshd -i -4не вариант более?
незнаю...н амоих сервоках раньще постоянно пытались подобрать пароль...Но сделал мутки и после 3-ёх неудачных логинов ip блочиться на сутки...Через сутки можно пробовать опять...
Зачем все это, pam чем не угодил?
Кстати укажу на ещё одну альтернативу:
/etc/ssh/sshd_configА в целом есть много способов снять с кошки щкуру )
Так же есть много способов автоматического блочения хулиганов.
У меня заработало только если добавить
auth.info;authpriv.info |exec /usr/local/sbin/sshit
после строки
auth.info;authpriv.info /var/log/auth.logКогда прописал в конце не работало!