не раз обсуждалось. в поиск - "безопасность ssh"
и вообще для начала поменяйте порт со стандартного 22 на какой-нибудь другой после 10000. сразу проблем станет меньше.
Сограждане, подскажите что делать.
Заметил на роутере жуткие тормоза, проверил лог и обнаружил вот такую портянку весом 194 К:
Oct 6 03:01:48 dropbear[6091]: exit before auth: Disconnect received
Oct 6 03:01:48 dropbear[6092]: Child connection from ::ffff:148.235.144.119:60377
Oct 6 03:01:50 dropbear[6092]: login attempt for nonexistent user from ::ffff:148.235.144.119:60377
Oct 6 03:01:51 dropbear[6092]: exit before auth: Disconnect received
Oct 6 03:01:51 dropbear[6093]: Child connection from ::ffff:148.235.144.119:50684
Oct 6 03:01:53 dropbear[6093]: login attempt for nonexistent user from ::ffff:148.235.144.119:50684
Айпишник один и тот же.
Подскажите, есть ли какое-то решение, чтоб после трёх попыток логина айпишник банился?
не раз обсуждалось. в поиск - "безопасность ssh"
и вообще для начала поменяйте порт со стандартного 22 на какой-нибудь другой после 10000. сразу проблем станет меньше.
спасибо за наводку.
Всем добрый вечер! Не могу сам сделать! Извените за глупуй вопрос, но я не могу!
Недавно приобрел роутер Asus WL-500g Premium и диск на 2 терабайта. Так вот в чем задача. Мне нужно создать тунель SSH, чтобы я мог обращаться к своему диску через инет! У диска есть интерфейс Ethernet. Т.е. я могу к нему обращаться даже при выключенном компе.
На форуме прочитал, что можно на роутере Asus WL-500g Premium поднять SSH сервер и создав тунель обращаться к этому диску по защищенному каналу.
Здесь же на форуме нашел вот такую инструкцию, чтобы поднять SSH сервер:
mkdir -p /usr/local/etc/dropbear
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
mkdir -p /usr/local/sbin/
echo "#!/bin/sh" >> /usr/local/sbin/post-boot
cp /usr/local/sbin/post-boot /usr/local/sbin/post-firewall
cp /usr/local/sbin/post-boot /usr/local/sbin/post-mount
cp /usr/local/sbin/post-boot /usr/local/sbin/pre-shutdown
chmod +x /usr/local/sbin/p*
echo "dropbear > /dev/null 2>&1" >> /usr/local/sbin/post-boot
dropbear > /dev/null 2>&1
flashfs save
flashfs commit
flashfs enable
Сделал как в этой инструкции и незнаю, что мне делать дальше. Мне нужно чтобы я мог обращаться к своему диску удаленно как к сетевому диску.
Я скачал в инете прогу: SSH Tunel, но не могу подконектиться к SSH серверу и просматривать свой диск!
ПОМОГИТЕ ПОЖАЛУЙСТО! НЕЗНАЮ УЖЕ ЧТО ДЕЛАТЬ!
Заранее спасибо!
Хочу спросить.
Проделал вот такие настройки, чтоб открыть ssh на 8022 порту.PHP Code:
#post-boot
dropbear -p 8022
-----------------
#post-firewall
# set default policy
iptables -P INPUT DROP
# remove last default rule
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp --syn --dport 8022 -j ACCEPT
Порт доступен по 8022, но при етом и по 22 нормально логинится.
Как закрыть тогда 22 порт?
Спасибо.
Снаружи логинится?
кому какие проблеммы
у меня все с точностью но наоборот...
у меня нет доступа из вне по ssh
проделано:
через веб в Virtual Server добавленно
что запросы с 22 порта пересылается на 22 внутреннего ip(11.11.11.1) роутера
в Status & Log/Port Forwarding появилась
Destination Proto. Port Range Redirect to
all TCP 22 11.11.11.1
all TCP 8080 11.11.11.1
в логе
Oct 14 23:01:51 kernel: DROP IN=ppp0 OUT= MAC= SRC=<ип адрес источника> DST=11.11.11.1 LEN=48 TOS=0x00 PREC=0x00 TTL=59 ID=29812 DF PROTO=TCP SPT=58536 DPT=22 SEQ=2212093550 ACK=0 WINDOW=65535 RES=0x00 SYN URGP=0 OPT (0204055456020001)
Почему пакеты дропятся?!
попробовал добавить
iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT
эфекта 0
забыл
при конекте по телнету в логе тоже самое только DST=внешнему ip
Давайте вывод iptables-save, посмотрим.
А вообще, меня несколько удивляет, насколько широко на этом форуме распространена практика добавления в virtual server портов, пакеты на которые предназначены самому роутеру - ведь это действие ничего не даёт с точки зрения открытия порта.
Перечитав все посты касающиеся безопасности SSH на этом форуме пришел в такому варианту:
pre-boot:
post-firewall:Code:#!/bin/sh insmod ipt_recent
Этот код позволит работать DB даже в том случае, когда через веб-интерфейс в разделе файрвола была установлена какая-либо опция логирования пакетов.Code:#!/bin/sh logger " --- Post-Firewall Event" WAN=$(nvram get wan_ifname) FW_LOG_TYPE=$(nvram get fw_log_x) if [ $FW_LOG_TYPE == "drop" -o $FW_LOG_TYPE == "both" ] then DROP="logdrop" else DROP="DROP" fi DROP_CMD="iptables -D INPUT -j $DROP" if [ -z "$($DROP_CMD 2>&1)" ] then DROPPED="1" else DROPPED="0" fi iptables -t nat -A PREROUTING -i $WAN -p tcp -m state --state NEW --dport ssh -m recent --set --name SSH_ATTACKER --rsource iptables -t nat -A PREROUTING -i $WAN -p tcp -m state --state NEW --dport ssh -m recent --rcheck --seconds 90 --hitcount 4 --name SSH_ATTACKER --rsource -j LOG --log-prefix "SSH_ATTACKER " iptables -t nat -A PREROUTING -i $WAN -p tcp -m state --state NEW --dport ssh -m recent --update --seconds 90 --hitcount 4 --name SSH_ATTACKER --rsource -j DROP iptables -t nat -A PREROUTING -i $WAN -p tcp --dport ssh -j ACCEPT iptables -A INPUT -i $WAN -p tcp --dport ssh -j ACCEPT if [ $DROPPED == "1" ] then iptables -A INPUT -j $DROP fi
Все-таки не понимаю я такой политики. Зачем блокировать брутефорсников на полторы минуты ?! Их надо блокировать навсегда или по крайней мере на сеанс загрузки роутера, что бы не забивать таблицы.
Например так:
Цепочка ATTACK одна, ставит признак блокировки. В последствии он проверяется одним правилом. Цепочек вроде TESTBRUTE может быть несколько. Каждая со своими вхождениями и периодичностью. Например можно создать еще две цепочки TESTSCAN для отлавливания сканирования well-known портов и TESTDOS для блокирования хостов, которые запрашивают слишком много соединений за короткий момент времени. В итоге каждая подобная цепочка перенаправляет проверку на ATTACK, где метится запалившийся хост.Code:iptables -N TESTBRUTE iptables -N ATTACK # Сразу после правила accept all via br0 iptables -I INPUT 5 -m recent --name attack --rcheck -j DROP iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j TESTBRUTE iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j TESTBRUTE iptables -A INPUT -p tcp --dport 5190 -m state --state NEW -j TESTBRUTE iptables -A TESTBRUTE -m recent --name test_brute --set iptables -A TESTBRUTE -m recent --name test_brute --rcheck --seconds 300 --hitcount 10 -j ATTACK iptables -A ATTACK -m recent --name attack --set iptables -A ATTACK -j LOG --log-level info --log-prefix "ATTACKer blocked: " iptables -A ATTACK -j DROP
Code:# Generated by iptables-save v1.2.7a on Wed Oct 15 12:43:29 2008 *nat :PREROUTING ACCEPT [9799:1158353] :POSTROUTING ACCEPT [5282:316636] :OUTPUT ACCEPT [5366:335654] :VSERVER - [0:0] -A PREROUTING -d <публичный ip>-j VSERVER -A PREROUTING -d 10.5.82.222 -j VSERVER -A POSTROUTING -s ! <публичный ip> -o ppp0 -j MASQUERADE -A POSTROUTING -s ! 10.5.82.222 -o vlan1 -j MASQUERADE -A POSTROUTING -s 11.11.11.0/255.255.255.0 -d 11.11.11.0/255.255.255.0 -o br0 -j MASQUERADE -A VSERVER -p tcp -m tcp --dport 8080 -j DNAT --to-destination 11.11.11.1:80 -A VSERVER -p tcp -m tcp --dport 22 -j DNAT --to-destination 11.11.11.1:22 COMMIT # Completed on Wed Oct 15 12:43:29 2008 # Generated by iptables-save v1.2.7a on Wed Oct 15 12:43:29 2008 *mangle :PREROUTING ACCEPT [110889:20661480] :INPUT ACCEPT [92465:15470718] :FORWARD ACCEPT [9625:4123963] :OUTPUT ACCEPT [94071:20055008] :POSTROUTING ACCEPT [130447:34088972] COMMIT # Completed on Wed Oct 15 12:43:29 2008 # Generated by iptables-save v1.2.7a on Wed Oct 15 12:43:29 2008 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [224:10720] :OUTPUT ACCEPT [94040:20043813] :MACS - [0:0] :SECURITY - [0:0] :logaccept - [0:0] :logdrop - [0:0] -A INPUT -m state --state INVALID -j logdrop -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -m state --state NEW -j ACCEPT -A INPUT -i br0 -m state --state NEW -j ACCEPT -A INPUT -i ppp0 -m state --state NEW -j SECURITY -A INPUT -d 11.11.11.1 -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -j logdrop -A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j ACCEPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT -A FORWARD -i br0 -o br0 -j ACCEPT -A FORWARD -m state --state INVALID -j logdrop -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j TCPMSS --clamp-mss-to-pmtu -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i ! br0 -o ppp0 -j logdrop -A FORWARD -i ! br0 -o vlan1 -j logdrop -A FORWARD -i ! br0 -m state --state NEW -j SECURITY -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT -A FORWARD -o br0 -j logdrop -A SECURITY -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j RETURN -A SECURITY -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j RETURN -A SECURITY -p udp -m limit --limit 5/sec -j RETURN -A SECURITY -p icmp -m limit --limit 5/sec -j RETURN -A SECURITY -j logdrop -A logaccept -m state --state NEW -j LOG --log-prefix "ACCEPT " --log-tcp-sequence --log-tcp-options --log-ip-options -A logaccept -j ACCEPT -A logdrop -m state --state NEW -j LOG --log-prefix "DROP " --log-tcp-sequence --log-tcp-options --log-ip-options -A logdrop -j DROP COMMIT # Completed on Wed Oct 15 12:43:29 2008
хм, а почему?! онде делает проброс на локальный ип, а из локалки работате....А вообще, меня несколько удивляет, насколько....
-A VSERVER -p tcp -m tcp --dport 8080 -j DNAT --to-destination 11.11.11.1:80
тоже самое... перебрасывает с реальника на внутрений
а вот 22-й порт почему то дропится
-A VSERVER -p tcp -m tcp --dport 22 -j DNAT --to-destination 11.11.11.1:22
ну и чего мы хочем --- сначала logdrop всего, а потом разрешаем ходить на порт 22. Туда ходить то уже нечему...-A INPUT -j logdrop
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j ACCEPT
Объясняю. Тот факт, что пакет прошёл через преобразование адреса назначения (DNAT, это то, что делает Virtual Server) в таблице nat, вовсе не означает, что он сможет пройти через цепочку INPUT (туда направляются пакеты, предназначенные самому роутеру) таблицы filter. В цепочке FORWARD (через которую проходят "транзитные" пакеты) есть правило -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT, которое как раз и пропускает пакеты, которые прошли DNAT (кстати, настраивается в секции "WAN to LAN Filter", поле Port Forwarding default policy), и поэтому для локальной сети это работает, а для самого роутера - нет.
Конкретно для вашего случая, всё уже описывалось. прежде чем добавлять правило в INPUT, нужно сначала удалить последнее правило оттуда (-A INPUT -j logdrop), так как оно сбрасывает все пакеты и дальше они не идут.
откроет ваш 22 порт.Code:iptables -D INPUT -j logdrop iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT iptables -A INPUT -j logdrop
И -A VSERVER -p tcp -m tcp --dport 22 -j DNAT --to-destination 11.11.11.1:22 не нужно.
Last edited by Power; 15-10-2008 at 11:28.
ОГРОМНОЕ Спасибо за разъяснения....
и за помощь,
все заработало....
Last edited by ipkiller; 07-02-2009 at 18:08.