PDA

Bekijk de volledige versie : Remote ssh access



gsnake
06-11-2007, 04:22
Вопрос - нужно ли специально открывать порт 22 для ssh? Я пытаюсь с работы зайти на роутер по ssh и почему-то не получается. Я настроил DynDNS клиент в роутере но что-то request не доходит до роутера... Если же пытаюсь из дома это сделать то ssh работает нормально (с именем компа, зарегистрированного в DynDNS.

спасиб
gsnake

al37919
06-11-2007, 05:26
да нужно, причем в post-firewall

gsnake
06-11-2007, 12:24
да нужно, причем в post-firewall

а что такое post-firewall и где это настраивается?

Mam(O)n
06-11-2007, 13:05
FAQ (http://wl500g.info/showpost.php?p=23521&postcount=12)
В роутере используется файрвол iptables(netfilter). Руководство здесь (http://www.opennet.ru/docs/RUS/iptables/)
Поиск по форуму даёт интересные результаты: 1 (http://wl500g.info/showthread.php?t=3671) 2 (http://http://wl500g.info/showthread.php?t=9365) 3 (http://wl500g.info/showthread.php?t=9337)
Если в кратце:


mkdir -p /usr/local/sbin
cd /usr/local/sbin
echo '#!/bin/sh
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
' >> post-firewall
chmod +x post-firewall
flashfs save && flashfs commit && flashfs enable
reboot

gsnake
08-11-2007, 04:13
FAQ (http://wl500g.info/showpost.php?p=23521&postcount=12)
В роутере используется файрвол iptables(netfilter). Руководство здесь (http://www.opennet.ru/docs/RUS/iptables/)
Поиск по форуму даёт интересные результаты: 1 (http://wl500g.info/showthread.php?t=3671) 2 (http://http://wl500g.info/showthread.php?t=9365) 3 (http://wl500g.info/showthread.php?t=9337)
Если в кратце:


mkdir -p /usr/local/sbin
cd /usr/local/sbin
echo '#!/bin/sh
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
' >> post-firewall
chmod +x post-firewall
flashfs save && flashfs commit && flashfs enable
reboot



кстати это тоже не помогло. я правда настроил dropbear на нестандартном порту и соответственно поменял порт в post-firewall. то есть я с локальной сети нормально вхожу по ssh (на нестандартный порт) но с работы так и не получается..
читаю форум но так толком ничего определенного не нашел. не хочется пробовать все подряд в надежде что получится.
обратил внимание на эту комманду
iptables -D INPUT -j DROP
надо ли ее тоже обязательно вставлять в post-firewall?
обязательно ли делать pre-routing?
ptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 1555 -j DNAT --to-destination 192.168.1.1:22
:confused:

Mam(O)n
08-11-2007, 08:12
Нужна только единственная команда iptables -I INPUT -p tcp --dport 22 -j ACCEPT которая вставит в начало таблицы правило, которое разрешает все входящие пакеты на 22 tcp порт. Другое дело - может быть закрыт порт либо домашним провайдером, либо на работе.

Ну я думаю еще можно показать результат выполнения команд iptables -L INPUT -vn и iptables -L -vnt nat для уверенности, что файрвол настроен правильно.

Dmitry
08-11-2007, 09:46
...
ptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 1555 -j DNAT --to-destination 192.168.1.1:22
:confused:
А нельзя-ли добиться желаемого результата используя закладку виртуальный сервер в веб-интерфейсе? Входящие соединения на 1555 порт отправлять на 192.168.1.1:22

Mam(O)n
08-11-2007, 14:55
В веб-интерфейсе делается похожее, окромя того, что в том примере перекидываются соединения только с vpn туннеля а в вебе будут перекидываться также соединения с MAN. Но это о5 же не избавляет от необходимости открывать локальный порт в файрволе.

gsnake
08-11-2007, 15:10
Нужна только единственная команда iptables -I INPUT -p tcp --dport 22 -j ACCEPT которая вставит в начало таблицы правило, которое разрешает все входящие пакеты на 22 tcp порт. Другое дело - может быть закрыт порт либо домашним провайдером, либо на работе.

Ну я думаю еще можно показать результат выполнения команд iptables -L INPUT -vn и iptables -L -vnt nat для уверенности, что файрвол настроен правильно.

22 порт не закрыт ни на работе, ни у провайдера - проверено. Я же не на 22-ом слушаю, а на другом (скажем на 1555). То есть я в firewall открыл порт не 22, а 1555 вот так:
iptables -I INPUT -p tcp --dport 1555 -j ACCEPT

И соответственно dropbear работает на этом же порту (1555). Неужели надо 22 тоже открывать? Я позже напишу что эта команда выдает (iptables -L ...) когда домой доберусь..
gsnake

Mam(O)n
08-11-2007, 15:56
Я 22 порт в качестве примера привел.

al37919
08-11-2007, 16:05
где вывод iptables -L ?
http://wl500g.info/showpost.php?p=68635&postcount=7

KRandall
08-11-2007, 16:59
Ну да, в post-firewall строка
iptables -A INPUT -p tcp --dport 1555 -j ACCEPTзапуск dropbear
#!/bin/sh
killall dropbear
dropbear -p 1555 -d /usr/local/etc/dropbear/dropbear_dss_host_key -r /usr/local/etc/dropbear/dropbear_rsa_host_keyи вот так все работает
http://krandall.myftp.org:81/FTP/Download/WL-500gP/Network/Dropbear.jpg

и вот еще
[I'm@Router /]$ iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1443 75004 ACCEPT tcp -- vlan1 * 0.0.0.0/0 10.131.4.163 tcp dpt:81 flags:0x16/0x02
4161 409K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
50M 13G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
43697 2622K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
5482 726K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:80
696 38181 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
579 29256 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
7 336 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1555
0 0 ACCEPT icmp -- * * 194.84.10.0/24 192.168.1.0/24 icmp type 8
0 0 ACCEPT icmp -- * * 195.239.98.16/28 192.168.1.0/24 icmp type 8
0 0 ACCEPT icmp -- * * 212.164.199.16/28 192.168.1.0/24 icmp type 8
0 0 ACCEPT icmp -- * * 193.178.135.16/28 192.168.1.0/24 icmp type 8
0 0 ACCEPT udp -- * * 194.84.10.0/24 192.168.1.0/24 udp dpts:33434:33700
0 0 ACCEPT udp -- * * 195.239.98.16/28 192.168.1.0/24 udp dpts:33434:33700
0 0 ACCEPT udp -- * * 212.164.199.16/28 192.168.1.0/24 udp dpts:33434:33700
0 0 ACCEPT udp -- * * 193.178.135.16/28 192.168.1.0/24 udp dpts:33434:33700
0 0 ACCEPT tcp -- * * 194.84.10.0/24 192.168.1.0/24 tcp spt:200 dpts:1024:65535
0 0 ACCEPT tcp -- * * 195.239.98.16/28 192.168.1.0/24 tcp spt:200 dpts:1024:65535
0 0 ACCEPT tcp -- * * 212.164.199.16/28 192.168.1.0/24 tcp spt:200 dpts:1024:65535
0 0 ACCEPT tcp -- * * 193.178.135.16/28 192.168.1.0/24 tcp spt:200 dpts:1024:65535
654K 76M DROP all -- * * 0.0.0.0/0 0.0.0.0/0
[I'm@Router /]$ iptables -L -vnt nat
Chain PREROUTING (policy ACCEPT 2442K packets, 371M bytes)
pkts bytes target prot opt in out source destination
1620 81484 DNAT tcp -- * * 0.0.0.0/0 10.131.4.163 tcp dpt:80 to:10.131.4.163:81
0 0 DROP tcp -- vlan1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:81
920K 75M VSERVER all -- * * 0.0.0.0/0 10.131.4.163

Chain POSTROUTING (policy ACCEPT 698K packets, 44M bytes)
pkts bytes target prot opt in out source destination
938K 95M MASQUERADE all -- * vlan1 !10.131.4.163 0.0.0.0/0
9947 630K MASQUERADE all -- * br0 192.168.0.0/22 192.168.0.0/22

Chain OUTPUT (policy ACCEPT 44341 packets, 2772K bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8082 to:192.168.1.1:80
55632 2743K DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20658 to:192.168.1.68:20658
3426 173K DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:4662 to:192.168.1.75:4662
603K 39M DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:4672 to:192.168.1.75:4672
173 8950 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20659 to:192.168.1.75:20659
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:7523 to:192.168.1.68:7523
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:7524 to:192.168.1.68:7524
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5190 to:192.168.1.68:5190
872 41856 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 to:192.168.1.68:3306
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:3306 to:192.168.1.68:3306

Mam(O)n
08-11-2007, 18:00
Ну да, в post-firewall строка
iptables -A INPUT -p tcp --dport 1555 -j ACCEPT

Не стоит путать людей. Если использовать -A то это добавит правило в конец цепочки INPUT, в которой в конце по-умолчанию у всех прописано правило DROP, что неприемлемо в данном случае. Нужно использовать -I, что добавит правило в начало цепочки и что будет самое простое в реализации.

Если уж очень охота (в целях оптимизации) добавить правило в конец цепочки (-A) тогда:


# Устанавливаем действие по-умолчанию(DROP или ACCEPT), которое будет выполнено при достижении конца цепочки. По-дефолту стоит ACCEPT.
iptables -P INPUT DROP
# Удаляем последнее правило в цепочке, которое дропает пакеты.
iptables -D INPUT -j DROP
# Добавляем в конец цепочки правило, разрешающее входящие tcp пакеты на 1555 порт
iptables -A INPUT -p tcp --dport 1555 -j ACCEPT

gsnake
09-11-2007, 03:02
вот что получается при выполнении команд


$ iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
187K 17M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED, ESTABLISHED
16687 1001K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
96672 35M ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
4537 1650K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
245 139K DROP all -- * * 0.0.0.0/0 0.0.0.0/0


root]$ iptables -L -vnt nat
Chain PREROUTING (policy ACCEPT 14153 packets, 1462K bytes)
pkts bytes target prot opt in out source destination
251 139K VSERVER all -- * * 0.0.0.0/0 xx.xx.x.36
0 0 NETMAP udp -- * * 0.0.0.0/0 xx.xx.x.36 udp spt:6112
192.168.1.0/24

Chain POSTROUTING (policy ACCEPT 17490 packets, 1051K bytes)
pkts bytes target prot opt in out source destination
0 0 NETMAP udp -- * * 192.168.1.0/24 0.0.0.0/0 udp dpt:6112
xx.xx.x.36/32
8553 446K MASQUERADE all -- * vlan1 !xx.xx.x.36 0.0.0.0/0
59 18726 MASQUERADE all -- * br0 192.168.1.0/24 192.168.1.0/24

Chain OUTPUT (policy ACCEPT 17549 packets, 1070K bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6881 to:192.168.1.196:6881
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:6881 to:192.168.1.196:6881


что-то явно не то с firewall.. eще раз - вот что у меня в post-firewall
iptables -I INPUT -p tcp --dport xxxx -j ACCEPT

где хххх - номер порта

Mam(O)n
09-11-2007, 04:45
Если бы было сделано, как я написал, то в post-firewall было бы:


#!/bin/sh
iptables -I INPUT -p tcp --dport xxxx -j ACCEPT

где xxxx - номер порта. Или это в конец пост-файрвола добавилось бы. Главное, чтоб первая строчка - #!/bin/sh. Вывод iptables -L INPUT -vn был бы таким:


$ iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3061 291K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:xxxx
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
187K 17M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED, ESTABLISHED
16687 1001K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
96672 35M ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
4537 1650K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
245 139K DROP all -- * * 0.0.0.0/0 0.0.0.0/0

где xxxx - номер порта. Надеюсь post-firewall не в венде(допустим в блокноте) правил?

На данном этапе интересны выводы команд:
cat /usr/local/sbin/post-firewall
ls -la /usr/local/sbin/

BORODA(C)
09-11-2007, 09:38
Надеюсь post-firewall не в венде(допустим в блокноте) правил?



А что, от 0D0A у Юникса крыша поедет? :)

Dmitry
09-11-2007, 09:53
А что, от 0D0A у Юникса крыша поедет? :)

Именно так и происходит.
Он читает первую строку в скрипте в качестве интерпретатора, и не находит /bin/sh<0D>

BORODA(C)
09-11-2007, 10:18
Именно так и происходит.
Он читает первую строку в скрипте в качестве интерпретатора, и не находит /bin/sh<0D>

Oleg,
может тогда в код sh (хотя я думаю, что это fopen() в libc) ввести поправку на конец строки 0D or 0D0A? Ведь не все на виндах FAR`ом пользуются.

Reyter
09-11-2007, 10:36
Oleg,
может тогда в код sh (хотя я думаю, что это fopen() в libc) ввести поправку на конец строки 0D or 0D0A? Ведь не все на виндах FAR`ом пользуются.
О как... А может все-таки проще FAR установить чем линукс патчить?

gsnake
09-11-2007, 13:37
Если бы было сделано, как я написал, то в post-firewall было бы:


#!/bin/sh
iptables -I INPUT -p tcp --dport xxxx -j ACCEPT

где xxxx - номер порта. Или это в конец пост-файрвола добавилось бы. Главное, чтоб первая строчка - #!/bin/sh. Вывод iptables -L INPUT -vn был бы таким:


$ iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3061 291K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:xxxx
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
187K 17M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED, ESTABLISHED
16687 1001K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
96672 35M ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
4537 1650K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
245 139K DROP all -- * * 0.0.0.0/0 0.0.0.0/0

где xxxx - номер порта. Надеюсь post-firewall не в венде(допустим в блокноте) правил?

На данном этапе интересны выводы команд:
cat /usr/local/sbin/post-firewall
ls -la /usr/local/sbin/

вот выводы:
cat /usr/local/sbin/post-firewall
#!/bin/sh
iptables -I INPUT -p tcp --dport xxxx -j ACCEPT

ls -la /usr/local/sbin/
drwxr-xr-x 1 gxxxx root 0 Oct 31 13:39 .
drwxr-xr-x 1 gxxxx root 0 Dec 31 1999 ..
-rwxr-xr-x 1 gxxxx root 142 Nov 8 16:19 post-boot
-rwxr-xr-x 1 gxxxx root 58 Nov 9 02:06 post-firewall

все вроде правильно..

gsnake
09-11-2007, 13:39
О как... А может все-таки проще FAR установить чем линукс патчить?

все введено FARом, или VI-ем
:)

Reyter
09-11-2007, 13:53
cat /usr/local/sbin/post-firewall
#!/bin/sh
iptables -I INPUT -p tcp --dport xxxx -j ACCEPT

ls -la /usr/local/sbin/
drwxr-xr-x 1 gxxxx root 0 Oct 31 13:39 .
drwxr-xr-x 1 gxxxx root 0 Dec 31 1999 ..
-rwxr-xr-x 1 gxxxx root 142 Nov 8 16:19 post-boot
-rwxr-xr-x 1 gxxxx root 58 Nov 9 02:06 post-firewall

все вроде правильно..
Так... Вопрос может и глупый, но все-таки...
Роутер после создания и сохранения post-firewall перегружали?
Либо - вручную post-firewall запускать пробовали?
Либо - вручную ввести в шелле iptables -I INPUT -p tcp --dport xxxx -j ACCEPT пробовали?

gsnake
09-11-2007, 14:35
Так... Вопрос может и глупый, но все-таки...
Роутер после создания и сохранения post-firewall перегружали?
Либо - вручную post-firewall запускать пробовали?
Либо - вручную ввести в шелле iptables -I INPUT -p tcp --dport xxxx -j ACCEPT пробовали?

да - конечно. выполнил все 3 команды flashfs save, commit and enable. потом reboot.
вручную post-firewall запускать не пробовал.. но я же с локалки могу на порт хххх зайти после того как все запускаю. если я номер порта поменяю то соответсвенно и на другой порт захожу. то есть стандатный 22-ой конечно не работает, а хххх (который указан в post-firewall и post-boot) принимает вызовы.. может порт не самый лучший выбрал?
я использую 4662 :o

gsnake

BORODA(C)
09-11-2007, 14:48
Как узнать, загружался ли /usr/local/sbin/post-firewall ? Сей факт в логах должен отразиться?

А нет ли чего в post-boot, что перебивает post-firewall?..

gsnake
09-11-2007, 15:17
Как узнать, загружался ли /usr/local/sbin/post-firewall ? Сей факт в логах должен отразиться?

А нет ли чего в post-boot, что перебивает post-firewall?..

в post-boot только команда на старт dropbear..

al37919
09-11-2007, 16:35
я же с локалки могу на порт хххх зайти после того как все запускаю.
Это не аргумент. Для того, чтобы зайти с локалки открывать вообще ничего не надо. Файрволл висит на WAN. На мой взгляд копать надо по вопросу запускается ли post-firewall, а если нет, то почему. В связи с этим предлагаю:


Как узнать, загружался ли /usr/local/sbin/post-firewall ? Сей факт в логах должен отразиться?
добавить комманду, скажем:
logger "Executing post-firewall."

gsnake
11-11-2007, 00:29
Это не аргумент. Для того, чтобы зайти с локалки открывать вообще ничего не надо. Файрволл висит на WAN. На мой взгляд копать надо по вопросу запускается ли post-firewall, а если нет, то почему. В связи с этим предлагаю:


добавить комманду, скажем:
logger "Executing post-firewall."

да - согласен. dropbear меня с толку сбил. он же на этом порту работает и поэтому коннект на этом порту есть а на других нет. тормознул я..
добавил logger. теперь post-firewall выглядит так

#!/bin/sh
logger starting the iptables command
iptables -I INPUT -p tcp --dport 4662 -j ACCEPT
logger iptables initialized

------
syslog.log:

Nov 10 13:14:22 xxxx: starting the iptables command
Nov 10 13:14:22 xxxx: iptables initialized

попробовал добавить еще один порт. (у обоих dropbear и iptables) - не помогло.. кстати вот вывод такой команды

iptables -L |grep ACCEPT
Chain INPUT (policy ACCEPT)
ACCEPT tcp -- anywhere anywhere tcp dpt:4524
ACCEPT tcp -- anywhere anywhere tcp dpt:4662
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere state NEW
ACCEPT all -- anywhere anywhere state NEW
ACCEPT udp -- anywhere anywhere udp spt:bootps dpt:bootpc
Chain FORWARD (policy ACCEPT)
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere ctstate DNAT
Chain OUTPUT (policy ACCEPT)
LOG all -- anywhere anywhere state NEW LOG level warning tcp-sequence
tcp-options ip-options prefix `ACCEPT '
ACCEPT all -- anywhere anywhere

gsnake
12-11-2007, 20:58
Есть подозрение что интернет-провайдер закрыл все порты совсем недавно. :mad:
Хотя я слышал что порт 1720 всегда им открыт (для voice-over-ip). Я пробовал на этом порту и тоже без толку..
Как можно вычислить порты, которые не заблокированы провайдером?

Mam(O)n
12-11-2007, 21:43
Можно так:


# Создаём каталог для веб сервера
mkdir -p /tmp/www
# Создаём индекс страницу для проверки
echo "Preved!!" > /tmp/www/index.html
# Заворачиваем входящий трафик, предназначенный роутеру со всех портов на порт 81 роутера
iptables -t nat -I PREROUTING -s ip_с_которого_будет_идти_скан -d интернет_ип_адрес_роутера -p tcp -j DNAT --to lan_адрес_роутера:81
# Открваем 81 порт роутера
iptables -I INPUT -p tcp --dport 81 -j ACCEPT
# Запускаем веб-сервер
busybox_httpd -p 81 -h /tmp/www

И после (без перезагрузки!) сканируй порты роутера с какого-нибудь хоста из инета.

gsnake
13-11-2007, 03:15
Можно так:


# Создаём каталог для веб сервера
mkdir -p /tmp/www
# Создаём индекс страницу для проверки
echo "Preved!!" > /tmp/www/index.html
# Заворачиваем входящий трафик, предназначенный роутеру со всех портов на порт 81 роутера
iptables -t nat -I PREROUTING -s ip_с_которого_будет_идти_скан -d интернет_ип_адрес_роутера -p tcp -j DNAT --to lan_адрес_роутера:81
# Открваем 81 порт роутера
iptables -I INPUT -p tcp --dport 81 -j ACCEPT
# Запускаем веб-сервер
busybox_httpd -p 81 -h /tmp/www

И после (без перезагрузки!) сканируй порты роутера с какого-нибудь хоста из инета.

Mam(O)n,
супер! Наконец-то разобрался, огромное спасибо!!!
Гр..ый провайдер закрыл все порты, кроме 8080, 443, 21, 22, 8000. Еще недавно все было нормально.
Короче - все настроил и могу зайти с работы. Вопрос - как сделать ограниченное количество попыток входа? Я пытался искать и нашел вот это
----
добавить в post-boot строчку в конце
Код:

insmod ipt_recent

б) добавить в post-firewall две строчки в конце
Код:

iptables -t nat -I PREROUTING -i $1 -p tcp -m state --state NEW --dport 1555 -m recent --set --name SSH_ATTACKER --rsource
iptables -I INPUT -i $1 -p tcp -m state --state NEW --dport 1555 -m recent --update --seconds 600 --hitcount 3 --name SSH_ATTACKER --rsource -j DROP

где 1555 - порт ssh
-----
но почему-то ничего не работает..
gsnake

Mam(O)n
13-11-2007, 04:51
Лучше так:

iptables -t nat -I PREROUTING -i ! $3 -p tcp -m state --state NEW --dport 1555 -m recent --set --name SSH_ATTACKER --rsource
iptables -I INPUT -i ! $3 -p tcp -m state --state NEW --dport 1555 -m recent --update --seconds 600 --hitcount 3 --name SSH_ATTACKER --rsource -j DROP

цветом я отметил изменения. То есть раньше это работало только если заходили с WAN (то есть если был vpn, то man это не затрагивало) а так правило действует на все входящие, кроме входящих с LAN.

И insmod ipt_recent обязательно именно в pre-boot, о чём я и говорил в той самой ветке (http://wl500g.info/showthread.php?t=8015). Да и кстати, а почему бы в той самой ветке (http://wl500g.info/showthread.php?t=8015) и не спросить?

gsnake
13-11-2007, 15:35
Лучше так:

iptables -t nat -I PREROUTING -i ! $3 -p tcp -m state --state NEW --dport 1555 -m recent --set --name SSH_ATTACKER --rsource
iptables -I INPUT -i ! $3 -p tcp -m state --state NEW --dport 1555 -m recent --update --seconds 600 --hitcount 3 --name SSH_ATTACKER --rsource -j DROP

цветом я отметил изменения. То есть раньше это работало только если заходили с WAN (то есть если был vpn, то man это не затрагивало) а так правило действует на все входящие, кроме входящих с LAN.

И insmod ipt_recent обязательно именно в pre-boot, о чём я и говорил в той самой ветке (http://wl500g.info/showthread.php?t=8015). Да и кстати, а почему бы в той самой ветке (http://wl500g.info/showthread.php?t=8015) и не спросить?

А как избежать риска что после этих изменений в post-xxx файлах я смогу залогиниться? Как проверить что все работает перед тем как запустить flashfs? я пытался запустить post-boot в котором была строчка insmod ipt_recent и после этого соединение с роутером было закрыто до его перезагрузки..

al37919
13-11-2007, 16:59
включить telnet в виде запасного варианта

Еще для тестирования наверное можно запустить dropbear -p 1555 -p 1556 и пытаться заблокировать один из портов оставив второй для себя открытым...

Кстати, насколько я понимаю, недостаток этого метода в том, что если кто-то начинает ломиться по ssh , то для всех логины на данном порту тормозятся (в т.ч. и для хозяина). Это так?

Mam(O)n
13-11-2007, 19:05
Бан идёт по IP и не распространяется на LAN(br0).

al37919
13-11-2007, 19:27
ну насчет LAN(br0) --- это понятно. А насчет IP --- хорошо ежели так. А можно ли посмотреть список забаненных IP адресов?

gsnake
13-11-2007, 19:31
ну насчет LAN(br0) --- это понятно. А насчет IP --- хорошо ежели так. А можно ли посмотреть список забаненных IP адресов?

А также как этот список почистить (если необходимо)?

gsnake
13-11-2007, 19:45
А как избежать риска что после этих изменений в post-xxx файлах я смогу залогиниться? Как проверить что все работает перед тем как запустить flashfs? я пытался запустить post-boot в котором была строчка insmod ipt_recent и после этого соединение с роутером было закрыто до его перезагрузки..

Ну как я и ожидал - роутер не инициализируется и я не могу никак залогиниться.. Как вернуться назад (если это вообще возможно) :eek:

al37919
13-11-2007, 19:51
совсем совсем ничего нет?
web-IF, samba, ftp, telnet?

gsnake
13-11-2007, 19:55
совсем совсем ничего нет?
web-IF, samba, ftp, telnet?

Ничего не мог сделать. У меня почти портов нет попробовать (я сейчас на работе а провайдер все порты кроме нескольких заблокировал).
По запасному порту вошел....:cool: Основной порт почему-то все время timeout говорит..
Чего-то не так со скриптами наверное..

al37919
13-11-2007, 20:03
Основной порт почему-то все время timeout говорит..
Полагаю, что результат работы ipt_recent должен выглядеть именно так, значит работает:)

gsnake
13-11-2007, 21:41
Полагаю, что результат работы ipt_recent должен выглядеть именно так, значит работает:)

ага.. оно почему-то то тормозит, то нет. я так понимаю, что на 3 неудачные попытки ip должен блокироваться? а на сколько? как вообще это должно работать? как обнулить все "плохие" ip?

Mam(O)n
13-11-2007, 22:22
Блокируются входящие соединения во время, когда за последние 600 секунд имеется более 3 запросов на установления tcp сессии с одного ip. Попытки здесь не причем. Рабочая таблица находится в /proc/net/ipt_recent/SSH_ATTACKER

gsnake
13-11-2007, 22:31
Блокируются входящие соединения во время, когда за последние 600 секунд имеется более 3 запросов на установления tcp сессии с одного ip. Попытки здесь не причем. Рабочая таблица находится в /proc/net/ipt_recent/SSH_ATTACKER

ясно.. но тогда все это не работает. у меня постоянные timeoutы на основной порт и SSH_ATTACKER пустой.. а нужно ли иметь в post-firewall эту строку (перед теми 2-мя, которые ты посоветовал)?
iptables -I INPUT -p tcp --dport 1555 -j ACCEPT

al37919
13-11-2007, 22:45
перед точно не надо, а вот после --- желательно

Правила выполняются одно за другим. Как только встречается правило, которое принимает окончательное решение, остальные не выполняются.

Mam(O)n
13-11-2007, 23:25
перед точно не надо, а вот после --- желательно
Он имел ввиду в post-firewall файле. А там как раз именно до этих строк нужно вставлять её. Мы ведь делаем -I (INSERT, вставка) на позицию 1 в цепочке и результат получится обратным(зеркальным) по отношению порядка следования команд в post-firewall.

gsnake, покажи чтоли таблицы (iptables -L -vn && iptables -L -vnt nat), а то непонятно, что там у тебя сейчас получилось. Ясно то, что до бана дело даже не доходит.

ps. Раскопал щас в man от iptables про то, как можно той таблицей манипулировать:


echo xx.xx.xx.xx > /proc/net/ipt_recent/DEFAULT
to Add to the DEFAULT list

echo -xx.xx.xx.xx > /proc/net/ipt_recent/DEFAULT
to Remove from the DEFAULT list

echo clear > /proc/net/ipt_recent/DEFAULT
to empty the DEFAULT list.

Соответственно DEFAULT на SSH_ATTACKER нужно заменить

gsnake
14-11-2007, 02:24
ok. я пользуюсь или vi или far для редактирования post-xxx файлов. то есть сейчас мой post-firewall выглядит так

#!/bin/sh
iptables -I INPUT -p tcp --dport хххх -j ACCEPT
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -i ! $3 -p tcp -m state --state NEW --dport хххх-m recent --set --name SSH_ATTACKER --rsource
iptables -I INPUT -i ! $3 -p tcp -m state --state NEW --dport хххх -m recent --update --seconds 600 --hitcount 3 --name SSH_ATTACKER --rsource -j DROP
logger '----iptables initialized----'

---------------------------------
Примечание - ХХХХ это мой порт. 8080 тоже открыт времменно (на всякий пожарный) :)
----------------------------

iptables -L -vn


Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4 200 DROP tcp -- !br0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:XXXX recent: UPDATE seconds: 600 hit_count: 3 name: SSH_ATTACKER side: source
211 22258 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
362 38177 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:XXXX
2 152 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
16208 1453K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
1451 87060 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
4658 1610K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
441 159K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
88 20114 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT 735 packets, 38292 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
519K 479M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 vlan1 0.0.0.0/0 0.0.0.0/0
70 5462 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT

Chain OUTPUT (policy ACCEPT 22838 packets, 3255K bytes)
pkts bytes target prot opt in out source destination

Chain MACS (0 references)
pkts bytes target prot opt in out source destination

Chain SECURITY (0 references)
pkts bytes target prot opt in out source destination
0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x16/0x02 limit: avg 1/sec burst 5
0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 1/sec burst 5
0 0 RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
0 0 RETURN icmp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

Chain logaccept (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW LOG flags 7 level 4 prefix `ACCEPT '
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0

Chain logdrop (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW LOG flags 7 level 4 prefix `DROP '
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0



----

iptables -L -vnt nat


Chain PREROUTING (policy ACCEPT 1358 packets, 157K bytes)
pkts bytes target prot opt in out source destination
4 200 tcp -- !br0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:XXXX recent: SET name: SSH_ATTACKER side: source
146 24959 VSERVER all -- * * 0.0.0.0/0 99.238.7.36

Chain POSTROUTING (policy ACCEPT 1576 packets, 96278 bytes)
pkts bytes target prot opt in out source destination
735 38292 MASQUERADE all -- * vlan1 !99.238.7.36 0.0.0.0/0
5 956 MASQUERADE all -- * br0 192.168.1.0/24 192.168.1.0/24

Chain OUTPUT (policy ACCEPT 1532 packets, 92894 bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
13 608 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6881 to:192.168.1.196:6881
36 3732 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:6881 to:192.168.1.196:6881
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:31220 to:192.168.1.1:4662
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:31220 to:192.168.1.1:4662

Mam(O)n
14-11-2007, 04:56
Это похоже баг. Подробности расскажу позже.

зы. Через 600 секунд после старта роутера все должно заработать как надо.

Mam(O)n
14-11-2007, 06:26
В общем я думаю, что это этот баг (http://blog.blackdown.de/2005/05/09/fixing-the-ipt_recent-netfilter-module/) тут воду мутит.

зы. Я попытался пересобрать прошивку, изменив код согласно приложенному к той статье патчу, но в связи со своими скромными познаниями наткнулся в результате на "insmod: unresolved symbol get_seconds" при попытке загрузить исправленный модуль. Так что подтвердить или опровергнуть выдвинутую мной гипотезу я не в состоянии.

Oleg
14-11-2007, 08:11
Надо поискать эквивалент get_seconds в нашем ядре...

gsnake
14-11-2007, 12:58
В общем я думаю, что это этот баг (http://blog.blackdown.de/2005/05/09/fixing-the-ipt_recent-netfilter-module/) тут воду мутит.

зы. Я попытался пересобрать прошивку, изменив код согласно приложенному к той статье патчу, но в связи со своими скромными познаниями наткнулся в результате на "insmod: unresolved symbol get_seconds" при попытке загрузить исправленный модуль. Так что подтвердить или опровергнуть выдвинутую мной гипотезу я не в состоянии.

ну елки-палки.. все началось так тихо-мирно с обычного вопроса а теперь дошли и до ядра.. :rolleyes:
ну мне бы ваши знания.. в любом случае - еще раз спасибо за помощь!

gsnake

gsnake
14-11-2007, 16:25
ну елки-палки.. все началось так тихо-мирно с обычного вопроса а теперь дошли и до ядра.. :rolleyes:
ну мне бы ваши знания.. в любом случае - еще раз спасибо за помощь!

gsnake

Я также обратил внимание на то, что сегодня первые 2 попытки логина были удачными (без timeout) а все последующие - c timeouts.. (даже если логиниться пытался с других IP).

Mam(O)n
15-11-2007, 23:56
Надо поискать эквивалент get_seconds в нашем ядре...
Нашел :) CURRENT_TIME ему имя. В общем выдрал я из ядра 2.4.35.3 ipt_recent.c и ipt_recent.h, наложил патч, что в той статье был и проблема исчезла. Не знаю, правильно ли я сделал, взяв из другой версии ядра эти файлы, но чёрт возьми это работает :) К тому же, судя по chanelog ядра, в ipt_recent были исправлены некоторые ошибки после версии 2.4.20.

Кто хочет, может попробовать приаттаченный модуль ipt_recent.o. Если позволит место во flashfs, то распакуйте файл .gz и запишите модуль .o допустим в /usr/local/lib и сохраните flashfs save && flashfs commit. В pre-boot соответственно строка загрузки будет такая: insmod /usr/local/lib/ipt_recent.o

upd:
До ввода команды flashfs commit, во избежание недоразумений убедитесь, что размер полученного flashfs не превышает 64К. Для этого после команды flashfs save (и до commit) обратите внимание на строку вида:


-rw-r--r-- 1 root root 10710 Nov 16 15:24 /tmp/flash.tar.gz
Check saved image and type "/sbin/flashfs commit" to commit changes

где значение, выделенное красным не должно превышать 65535. Если значение превышает максимальный размер, то откажитесь от данной затеи, НЕ делайте flashfs commit и удалите /usr/local/lib/ipt_recent.o.

upd2:
Можно также его слить с форума средствами роутера:


mkdir /usr/local/lib
wget 'http://wl500g.info/attachment.php?attachmentid=2005&d=1195170790' -O - | gzip -d > /usr/local/lib/ipt_recent.o

После только не забудьте проверить полученный размер с помощью ls -la /usr/local/lib/ipt_recent.o, он должен быть равен 14900 байт.

-rw-r--r-- 1 root root 14900 Nov 16 01:03 /usr/local/lib/ipt_recent.o

gsnake
16-11-2007, 04:02
Нашел :) CURRENT_TIME ему имя. В общем выдрал я из ядра 2.4.35.3 ipt_recent.c и ipt_recent.h, наложил патч, что в той статье был и проблема исчезла. Не знаю, правильно ли я сделал, взяв из другой версии ядра эти файлы, но чёрт возьми это работает :) К тому же, судя по chanelog ядра, в ipt_recent были исправлены некоторые ошибки после версии 2.4.20.

Кто хочет, может попробовать приаттаченный модуль ipt_recent.o. Если позволит место во flashfs, то распакуйте файл .gz и запишите модуль .o допустим в /usr/local/lib и сохраните flashfs save && flashfs commit. В pre-boot соответственно строка загрузки будет такая: insmod /usr/local/lib/ipt_recent.o

Круто! :cool:Надо попробовать. Стоит ли упомянуть о том, что мой роутер не очень дружит с текущем временем.. Вот что я вижу в логе...

Dec 31 13:00:17 kernel: FAT: bogus logical sector size 20487
Dec 31 13:00:17 kernel: VFS: Can't find a valid FAT filesystem on dev 08:00.
Nov 15 09:24:06 ntp client: Synchronizing time with time.nist.gov ...
Nov 15 09:26:48 dnsmasq[81]: DHCPDISCOVER(br0) 00:02:72:5a:2f:e5

И то и другое неверно - ни 31 декабря ни 15 ноября в 9 часов..

gsnake

al37919
16-11-2007, 07:59
Минуты то правильные --- а чтобы часы были правильными надо выставлять корректную timezone в веб-ИФ. ntp сервер лучше ставить pool.ntp.org или ru.pool.ntp.org , хотя если с nist успешно соединяется, то это ничего не изменит.

Впрочем, для ipt_recent абсолютное время неважно. Ему нужны только относительные интервалы.

P.S. Прикольно --- действительно работает (по крайней мере меня банит). Могу добавить пару наблюдений, уточняющих поведение этой фичи:
1) Запрет происходит независимо от успешности/неуспешности логина.
2) Если --hitcount задан 3, то две попытки пропускаются третья банится.
3) Поскольку в приведенном примере используется параметр --update, то после третьей попытки будет баниться любые дальнейшие попытки в течение 600 секунд после последней попытки с этого IP. Для смягчения этого довольно жесткого правила можно вместо --update задать --rcheck, тогда время действия бана отсчитывается от первой попытки из трех. ( http://www.snowman.net/projects/ipt_recent/ )

Полагаю, что этот --hitcount можно увеличить где-то до 6, или даже до 11, чтобы не дай бог не обидеть себя любимого :). А то ведь иной раз и сам пароль перепутаешь, а с другой строрны иногда удобно организовать не одну сессию.

А нет ли возможности составить белый список адресов, на который данные правила не распространяются?

Mam(O)n
16-11-2007, 13:27
Впрочем, для ipt_recent абсолютное время неважно.
Неважно, если только оно не близкое к 1970-01-01 00:00:00 UTC, что для мной пропатченного ipt_recent является нулём со всеми вытекающими. Чтобы этого избежать в post-boot(или даже лучше в pre-boot) можно вставить допустим date 010101012000. Это поможет пропатченному, но не поможет оригинальному ipt_recent. В оригинальном ведется собственный отсчет, не зависящий от системного времени.

upd


А нет ли возможности составить белый список адресов, на который данные правила не распространяются?
Ну а какже. Перед дропающим правилом в INPUT можно вставить правило ACCEPT с источником ip=нужному адресу. Допустим, на примере моего post-firewall:


#!/bin/sh
iptables -P INPUT DROP
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp -s xx.xx.xx.xx --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set --name SSH_ATTACKER --rsource
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 600 --hitcount 6 --name SSH_ATTACKER --rsource -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

gsnake
16-11-2007, 15:24
Неважно, если только оно не близкое к 1970-01-01 00:00:00 UTC, что для мной пропатченного ipt_recent является нулём со всеми вытекающими. Чтобы этого избежать в post-boot можно вставить допустим date 010101012000. Это поможет пропатченному, но не поможет оригинальному ipt_recent. В оригинальном ведется собственный отсчет, не зависящий от системного времени.

upd


Ну а какже. Перед дропающим правилом в INPUT можно вставить правило ACCEPT с источником ip=нужному адресу. Допустим, на примере моего post-firewall:


#!/bin/sh
iptables -P INPUT DROP
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp -s xx.xx.xx.xx --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set --name SSH_ATTACKER --rsource
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 600 --hitcount 6 --name SSH_ATTACKER --rsource -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT


- А зачем тогда PREROUTING используется? Если я запускаю dropbear на порту 8080 могу ли я использовать твой post-firewall (заменив соответственно 22 на 8080)? Или обязательно PREROUTING нужен?
- Кстати как часовой пояс правильно выставил все стало работать лучше (как описано у al37919 ). до этого было не 600 секунд а гораздо больше...

Mam(O)n
16-11-2007, 15:27
Если я запускаю dropbear на порту 8080 могу ли я использовать твой post-firewall (заменив соответственно 22 на 8080)?Да .

gsnake
16-11-2007, 16:19
Да .

поменял - теперь пускает сколько хочешь.. =)

#!/bin/sh
iptables -P INPUT DROP
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -m recent --set --name SSH_ATTACKER --rsource
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -m recent --update --seconds 600 --hitcount 6 --name SSH_ATTACKER --rsource -j DROP
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

Mam(O)n
16-11-2007, 16:26
Внимательнее, товарищи:)
#!/bin/sh
iptables -P INPUT DROP
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -m recent --set --name SSH_ATTACKER --rsource
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -m recent --update --seconds 600 --hitcount 6 --name SSH_ATTACKER --rsource -j DROP
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

al37919
16-11-2007, 16:40
O, вот теперь получился любимый мной вариант, когда можно спокойно добавлять правила с помощью -A и не нужно монитор переворачивать вверх ногами, чтобы посмотреть в каком порядке они будут выполняться. :)

А если серьезно, то всегда надо проверять результат с помощью iptables -L [-t nat]

А если совсем по теме, то таблица постепенно заполняется. Эта штука работает часа 4, а в SSH_ATTACKER уже 3 записи включая мой тест. Аптайм к данному моменту 11 дней и надеюсь, что до своего возвращения из командировки он дойдет где-нибудь дней до 40. Сколько же записей будет в этой таблице и почему не удаляются бесполезные записи (те, срок давности по которым уже вышел). Ведь если гость с этого же адреса заглянет еще разок, то он будет добавлен с нуля без проблем. А ведь где-то это должно храниться, да и проверка идти по всем адресам --- лишние накладные расходы. Нет ли там варианта самоочистки от бесполезной информации. Или эта таблица из себя что то вроде лога представляет?

P.S. Ну да я понял, по крайней мере для ADSL соединения такая проблема не существует, т.к. при ежесуточном разрыве соединения iptables перезапускаются.

gsnake
16-11-2007, 18:17
Внимательнее, товарищи:)
#!/bin/sh
iptables -P INPUT DROP
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -m recent --set --name SSH_ATTACKER --rsource
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -m recent --update --seconds 600 --hitcount 6 --name SSH_ATTACKER --rsource -j DROP
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

OOOOPS.. :)
теперь все как надо.:D

al37919
18-11-2007, 20:07
У меня в результате получился такой вариант начальной части post-firewall, который делает следующее:

1) Все действия по ssh порту вынесены в отдельный SSH_EVAL chain (насколько я понимаю так снижается количество проверок выполняемых iptables при выполнении _каждого_ соединения. Если запрос приходит на ssh порт, то на здоровье пусть хоть 100 правил проверяет...)
2) Созданы "белый" и "черный" списки адресов (какая польза от черного не знаю, но сделал для полноты картины). По тем IP которые находятся в этих списках решение принимается до проверки ipt_recent
3) Первое обновление recent перенесено из PREROUTING в тот же SSH_EVAL chain. Теперь оно выполняется только на тех соединениях, которые идут на ssh и не были отфильтрованы двумя вышеуказанными списками.

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:usr/bin:/opt/sbin:/opt/bin:/opt/local/bin

logger "post-firewall started"

#this rule can be uncommented for the testing period
#iptables -A INPUT -p tcp --syn --dport 2222 -j ACCEPT

# set default policy
iptables -P INPUT DROP

# remove last default rule
iptables -D INPUT -j DROP

# ***ssh subsection begin***
SSH_PORT=22
SSH_ALLOW=/usr/local/etc/ssh.allow
SSH_DENY=/usr/local/etc/ssh.deny

# Create a new SSH_EVAL chain which will evaluate incoming connections to ssh server from WAN
iptables -N SSH_EVAL

# Transfer all ssh connections to the SSH_EVAL chain
iptables -A INPUT -p tcp --dport $SSH_PORT -j SSH_EVAL

# Evaluate incoming ssh connections through ssh.allow and ssh.deny lists
for i in `awk '{print $1}' $SSH_ALLOW`
do
iptables -A SSH_EVAL -p tcp --syn -s $i --dport $SSH_PORT -j ACCEPT
done
for i in `awk '{print $1}' $SSH_DENY`
do
iptables -A SSH_EVAL -p tcp --syn -s $i --dport $SSH_PORT -j DROP
done

# Block annoying intruder's attemtps (after --hitcount connections occured, wait --seconds after the last connection attempt)
# Remember, that both successful and unsuccessful connections are counted
iptables -A SSH_EVAL -i ! $3 -p tcp -m state --state NEW --dport $SSH_PORT -m recent --set --name SSH_ATTACKER --rsource
iptables -A SSH_EVAL -i ! $3 -p tcp -m state --state NEW --dport $SSH_PORT -m recent --update --seconds 600 --hitcount 4 --name SSH_ATTACKER --rsource -j DROP

# Accept the rest of ssh connections which were able to pass through the filtering
iptables -A SSH_EVAL -p tcp --syn --dport $SSH_PORT -j ACCEPT
# ***ssh subsection end***

...

Остальные правила post-firewall
Файлы /usr/local/etc/ssh.allow & /usr/local/etc/ssh.deny содержат следующиее (сам адрес стоит в начале строки, потом пробел, потом любой комментарий):

12.34.56.78 разрешить/запретить доступ с одиночного IP
87.65.43.0/24 разрешить/запретить доступ с подсетки

P.S. Напоминаю, что модуль ipt_recent.o должен быть загружен в файле /usr/local/sbin/pre-boot

Так что в файле pre-boot должно стоять либо ( для использования встроенного в прошивку ipt_recent ):

insmod ipt_recent
либо ( для использования ipt_recent от Mam(o)n : http://wl500g.info/showpost.php?p=69660&postcount=53 )

date 010101012000
insmod /usr/local/lib/ipt_recent.o

gsnake
19-11-2007, 03:47
OOOOPS.. :)
теперь все как надо.:D

поставил openvpn, все вроде без проблем..
и вопросов совсем пока нет..
:)
Всем огромное спасибо! Особенно Мам(он)у!!

Mam(O)n
20-11-2007, 04:09
2 Mam(o)n --- как оценишь данное решение?Решение замечательное, правильное, оптимизированное. Всё организовано и упорядочено. Но заморочено :rolleyes: Его хорошо применять при динамически составляющихся и немалых по объему white и black списках, но если вего-лишь нужно за-white-листить пару айпи со своей работы то имхо проще пару команд в post-firewall добавить ;)

al37919
20-11-2007, 06:56
Спасибо, за добрые слова. Я в iptables начал не так давно что то понимать, так что мнение эксперта для меня важно.
Да и когда я основательно все перечислил у меня список почти на десяток получился :) Правда можно, конечно, оставить пару-тройку, зайдя с которых можно открыть на любой нужный --- но это как то неспортивно. :)

Mam(O)n
20-11-2007, 09:01
Я в iptables начал не так давно что то понимать, так что мнение эксперта для меня важно.
Да какой там из меня эксперт. Я то с *nix'ом сам всего лишь год с небольшим назад как познакомился и до сих пор в шоке от его потенциала. И всё благодаря этой коробочке с прошивкой Олега. Олегу за это отдельный респект :)


... да и проверка идти по всем адресам --- лишние накладные расходы. Нет ли там варианта самоочистки от бесполезной информации. Или эта таблица из себя что то вроде лога представляет?Нет, это не лог. Это так сказать проекция рабочей таблицы. Пока в тонкости работы ipt_recent я не углублялся, но поверхностно глянув в мануал, решения пока не увидел. Сходу в качестве варварского альтернативного способа можно в крон добавить команду очистки всей таблицы: echo clear > /proc/net/ipt_recent/SSH_ATTACKER. Или же можно периодично, с помощью того же крона, чистить таблицу избирательно, только устаревшие записи:


cat /proc/net/ipt_recent/SSH_ATTACKER | awk -F '[ =]' -v date=$(date +%s) '{if(date-$6>600)system("echo -"$2" >/proc/net/ipt_recent/SSH_ATTACKER")}'
Где выделено красным это время жизни записи в секундах. То есть все записи, которые старше данного значения будут удалены. Данная конструкция будет работать только в пропатченном ipt_recent, где время считается в секундах относительно POSIX time (http://en.wikipedia.org/wiki/Unix_time). В оригинальном же модуле отсчет ведётся в попугаях (jiffies (http://en.wikipedia.org/wiki/Jiffy_(time))) и похоже, что относительно запуска программы.

gsnake
27-11-2007, 02:25
что-то не пойму как работает post-firewall... почему-то или openvpn работает в такой конфигурации или только ssh. (если меняю местами части для dropbear и openvpn) что же не так? вот мой post-firewall:

#!/bin/sh
iptables -P INPUT DROP
iptables -D INPUT -j DROP

# this is for dropbear and hit count
iptables -A INPUT -p tcp -m state --state NEW --dport 1111 -m recent --set --name SSH_ATTACKER --rsource
iptables -A INPUT -p tcp -m state --state NEW --dport 1111 -m recent --update --seconds 600 --hitcount 6 --name SSH_ATTACKER --rsource -j DROP
iptables -A INPUT -p tcp --dport 1111 -j ACCEPT


# this is for openvpn
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 8080 -j DNAT --to-destination \$4:8080
iptables -A INPUT -j DROP
iptables -I INPUT -i tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -I OUTPUT -o tun0 -j ACCEPT

logger ----iptables initialized----

al37919
27-11-2007, 09:08
ssh не работает из-зи правила iptables -A INPUT -j DROP , которое не дает выполняться ничему после него. Его надо убрать, т.к. все равно стоит iptables -P INPUT DROP

В остальном разницы что где ставить вроде нет, т.к. ssh кусок добавляет правила в конец, а vpn кусок в начало...

gsnake
27-11-2007, 15:28
ssh не работает из-зи правила iptables -A INPUT -j DROP , которое не дает выполняться ничему после него. Его надо убрать, т.к. все равно стоит iptables -P INPUT DROP

В остальном разницы что где ставить вроде нет, т.к. ssh кусок добавляет правила в конец, а vpn кусок в начало...

все понял - спасибо, теперь работает нормально!:)

leniviy
28-01-2008, 12:20
вот строчка из /etc/pwd:

portforwarder:*********:98:98:root:/:/bin/ls
через телнет логинится нормально, а через putty/plink пишет access denied.
я пробовал опцию -N в plink, чтобы не запускать шелл, но не помогло.

al37919
28-01-2008, 12:24
1) /etc/passwd
2) login шелы должны быть перечислены в /etc/shells
странно, что через теленет --- ОК

leniviy
28-01-2008, 12:36
спасибо, получилось. Сможет ли хакер взломать роутер, если будет знать пароль от portforwarder? Например копировать файлы по sftp? Мне надо, чтобы под этим юзером можно было только пробрасывать порты. Пароль мне придется сохранить на клиенте, откуда его могут украсть
/etc/passwd:

portforwarder:*******:98:98:nobody:/:/bin/nologin
/etc/shells:

/bin/nologin

leniviy
28-01-2008, 12:40
а можно вместо пароля сделать ключ и ассоциировать его с юзером portforwarder?

angel_il
28-01-2008, 12:44
сломать просто если есть доступ на чтение к /etc/passwd и для шифрования используется алгоритм md5.
какой у нас исспользуется не скожу, посмотреть сейчас не могу.

angel_il
28-01-2008, 12:58
посмотрел у нас не md5 :)

angel_il
28-01-2008, 13:31
а можно вместо пароля сделать ключ и ассоциировать его с юзером portforwarder?

можно, посмотри тему про подключение через putty я там веселые картинки выкладывал к пошаговой инструкции.

Oleg
28-01-2008, 15:08
посмотрел у нас не md5 :)
У нас MD5. $1 - это его salt.

leniviy
28-01-2008, 15:59
оказывается, если добавлять что-то в /etc/shells, надо сперва добавить туда /bin/sh, а не то перестает работать ssh

leniviy
28-01-2008, 16:53
Пока не нашел, как привязать ключ к юзеру. (под админом я нормально логинюсь с помощью ключа)
http://www.nslu2-linux.org/wiki/HowTo/UseDropBearForRemoteAccess

Once we have this we want to save our public key into the authorized keys file which can be done easily as follows (The key here has been shortened for display purposes. Your generated key will be a much longer string):
# echo ssh-rsa AAAAB3NzaC1yc2EAAAABIwAA......aJ3Wy+Ws4IZEgdJgPlTY UBWWtCWOGc= someone@hostname > authorized_keys

someone@hostname заменил на portforwarder
не работает.

angel_il
28-01-2008, 17:01
Пока не нашел, как привязать ключ к юзеру. (под админом я нормально логинюсь с помощью ключа)
http://www.nslu2-linux.org/wiki/HowTo/UseDropBearForRemoteAccess

someone@hostname заменил на portforwarder
не работает.
Я же говорил - прочти мою тему где я по шагам с картинками рассписал как ходить на рутер используя ключи.

Oleg
28-01-2008, 17:05
Пока не нашел, как привязать ключ к юзеру. (под админом я нормально логинюсь с помощью ключа)
http://www.nslu2-linux.org/wiki/HowTo/UseDropBearForRemoteAccess

someone@hostname заменил на portforwarder
не работает.
Положить ключ в директорию .ssh у юзера.

leniviy
28-01-2008, 18:59
гениально :D

fuzzylogic
10-07-2008, 08:10
Добрый день. Помогите пожалуйста чайнику. Решил настроить ssh. Настраивал по инструкции:
http://wl500g.info/showthread.php?t=12833&highlight=%C8%F1%EF%EE%EB%FC%E7%EE%E2%E0%ED%E8%E5+ SSH

в /usr/local/sbin/post-boot прописано следующее:
dropbear -p 16016
в /usr/local/sbin/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 16016 -j ACCEPT

в процессах dropbear висит:

-sh: 59: not found
[fuzzylogic@pela root]$ 64 fuzzylog 380 S httpd vlan1
-sh: 64: not found
[fuzzylogic@pela root]$ 69 fuzzylog 408 S syslogd -m 0 -O /tmp/syslog.log -S -l 7
-sh: 69: not found
[fuzzylogic@pela root]$ 70 fuzzylog 364 S klogd
-sh: 70: not found
[fuzzylogic@pela root]$ 75 nobody 432 S [dnsmasq]
-sh: 75: not found
[fuzzylogic@pela root]$ 77 fuzzylog SW [khubd]
-sh: 77: not found
[fuzzylogic@pela root]$ 85 fuzzylog 276 S lpd
-sh: 85: not found
[fuzzylogic@pela root]$ 87 fuzzylog 260 S p9100d -f /dev/usb/lp0 0
-sh: 87: not found
[fuzzylogic@pela root]$ 90 fuzzylog 340 S waveservermain
-sh: 90: not found
[fuzzylogic@pela root]$ 92 fuzzylog 344 S rcamdmain
-sh: 92: not found
[fuzzylogic@pela root]$ 105 fuzzylog 312 S infosvr br0
-sh: 105: not found
[fuzzylogic@pela root]$ 106 fuzzylog 448 S watchdog
-sh: 106: not found
[fuzzylogic@pela root]$ 109 fuzzylog 344 S ntp
-sh: 109: not found
[fuzzylogic@pela root]$ 116 fuzzylog 480 S dropbear -p 16016
-sh: 116: not found
[fuzzylogic@pela root]$ 121 fuzzylog 492 S upnp -D -L br0 -W vlan1
-sh: 121: not found
[fuzzylogic@pela root]$ 125 fuzzylog 728 S dropbear -p 16016
-sh: 125: not found
[fuzzylogic@pela root]$ 126 fuzzylog 548 S -sh
-sh: 126: not found
[fuzzylogic@pela root]$ 130 fuzzylog 728 S dropbear -p 16016
-sh: 130: not found
[fuzzylogic@pela root]$ 131 fuzzylog 548 S -sh
-sh: 131: not found
[fuzzylogic@pela root]$ 134 fuzzylog 392 R ps

Putty c машины из внутренней сети заходит. Проблемы начинаются при удаленном доступе.
В логах iptables порт 16016 не открыт:
Chain INPUT (policy ACCEPT)
target prot opt source destination
MACS all -- anywhere anywhere
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere state NEW
ACCEPT all -- anywhere anywhere state NEW
SECURITY all -- anywhere anywhere state NEW
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
DROP all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
MACS all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere
SECURITY all -- anywhere anywhere state NEW
ACCEPT all -- anywhere anywhere ctstate DNAT

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain MACS (2 references)
target prot opt source destination
RETURN all -- anywhere anywhere MAC 00:1E:8C:9A:1D:C4
RETURN all -- anywhere anywhere MAC 00:19:CB:41:72:BC
RETURN all -- anywhere anywhere MAC 00:19:CB:41:72:B9
RETURN all -- anywhere anywhere MAC 00:19:CB:41:72:B8
RETURN all -- anywhere anywhere MAC 00:1E:8C:9A:1C:3A
DROP all -- anywhere anywhere

Chain SECURITY (2 references)
target prot opt source destination
RETURN tcp -- anywhere anywhere tcp flags:SYN,RST,ACK/SYN limit: avg 1/sec burst 5
RETURN tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5
RETURN udp -- anywhere anywhere limit: avg 5/sec burst 5
RETURN icmp -- anywhere anywhere limit: avg 5/sec burst 5
DROP all -- anywhere anywhere

Chain logaccept (0 references)
target prot opt source destination
LOG all -- anywhere anywhere state NEW LOG level warning tcp-sequence tcp-options ip-options prefix `ACCEPT '
ACCEPT all -- anywhere anywhere

Chain logdrop (0 references)
target prot opt source destination
LOG all -- anywhere anywhere state NEW LOG level warning tcp-sequence tcp-options ip-options prefix `DROP '
DROP all -- anywhere anywhere

если добавляю руками - в iptables прописывается:


Как сделать чтобы это происходило автоматом?

vectorm
10-07-2008, 09:23
Файл /usr/local/sbin/post-firewall отрабатывает?
Полное содержимое файла можно?

fuzzylogic
10-07-2008, 09:35
Файл /usr/local/sbin/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 16016 -j ACCEPT


Заранее спасибо

6opoga
10-07-2008, 13:29
Не отработал post-firewall
Возможно, из-за того, что на него не сказали chmod +x
Возможно, из-за того, что нет в начале магической строчки

#!/bin/sh

И оставлять файрвол без "DROP все остальное" некрасиво.
Надо добавить в конце

iptables -A INPUT -j DROP

upd. А, там дефолтная политика ставится. Тогда последнее не обязательно.

vectorm
10-07-2008, 14:04
Не отработал post-firewall
Возможно, из-за того, что на него не сказали chmod +x
Возможно, из-за того, что нет в начале магической строчки

#!/bin/sh

Не возможно,а точно - в приведенном листинге файла ее нет. В содержимом исполняемых файлов Линукса ОБЯЗАТЕЛЬНО должно быть указание чем их исполнять!

Vbifi
10-07-2008, 14:07
Раз уж зашла тема о SSH,-

Такой глюк(?) при смене пароля через web конфигуратор пароль на SSH не меняется что с этим делать и как лечить?

P.S. подозреваю что это может быть из за того что система грузится с флешки ... вобщем теряюсь в догадках спасайте :)

fuzzylogic
11-07-2008, 09:05
Не отработал post-firewall
Возможно, из-за того, что на него не сказали chmod +x
Возможно, из-за того, что нет в начале магической строчки

#!/bin/sh

И оставлять файрвол без "DROP все остальное" некрасиво.
Надо добавить в конце

iptables -A INPUT -j DROP

upd. А, там дефолтная политика ставится. Тогда последнее не обязательно.

Большое спасибо всем! Помогло! У меня снчала была эта строчка, но потом ее зачем-то удалил.
Вы были правы, оказалось что не дал команду chmod +x. Еще раз спасибо!

Antero
26-07-2008, 02:31
Vbifi а что passwd уже не спасает? Я сделал его и монументальные flashfs save и тд.

macek
06-10-2008, 11:38
Сограждане, подскажите что делать.
Заметил на роутере жуткие тормоза, проверил лог и обнаружил вот такую портянку весом 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


Айпишник один и тот же.

Подскажите, есть ли какое-то решение, чтоб после трёх попыток логина айпишник банился?

rattis
06-10-2008, 11:53
не раз обсуждалось. в поиск - "безопасность ssh"
и вообще для начала поменяйте порт со стандартного 22 на какой-нибудь другой после 10000. сразу проблем станет меньше.

macek
06-10-2008, 11:58
спасибо за наводку.

bornnewyear
11-10-2008, 23:17
Всем добрый вечер! Не могу сам сделать! Извените за глупуй вопрос, но я не могу!
Недавно приобрел роутер 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 серверу и просматривать свой диск!

ПОМОГИТЕ ПОЖАЛУЙСТО! НЕЗНАЮ УЖЕ ЧТО ДЕЛАТЬ!
Заранее спасибо!

kosilas
12-10-2008, 12:16
Хочу спросить.

#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

Проделал вот такие настройки, чтоб открыть ssh на 8022 порту.
Порт доступен по 8022, но при етом и по 22 нормально логинится.
Как закрыть тогда 22 порт?
Спасибо.

dimaka
12-10-2008, 22:32
Снаружи логинится?

kosilas
13-10-2008, 15:48
Снаружи логинится?
А нет снаружи видно только с 8022, спсибо.

ipkiller
14-10-2008, 20:11
кому какие проблеммы :)
у меня все с точностью но наоборот...
у меня нет доступа из вне по 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

Power
14-10-2008, 20:29
кому какие проблеммы :)
у меня все с точностью но наоборот...
у меня нет доступа из вне по ssh
Давайте вывод iptables-save, посмотрим.

А вообще, меня несколько удивляет, насколько широко на этом форуме распространена практика добавления в virtual server портов, пакеты на которые предназначены самому роутеру - ведь это действие ничего не даёт с точки зрения открытия порта.

DarkSide
14-10-2008, 21:18
Перечитав все посты касающиеся безопасности SSH на этом форуме пришел в такому варианту:

pre-boot:


#!/bin/sh

insmod ipt_recent


post-firewall:


#!/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



Этот код позволит работать DB даже в том случае, когда через веб-интерфейс в разделе файрвола была установлена какая-либо опция логирования пакетов.

Krey
15-10-2008, 00:20
Все-таки не понимаю я такой политики. Зачем блокировать брутефорсников на полторы минуты ?! Их надо блокировать навсегда или по крайней мере на сеанс загрузки роутера, что бы не забивать таблицы.
Например так:


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


Цепочка ATTACK одна, ставит признак блокировки. В последствии он проверяется одним правилом. Цепочек вроде TESTBRUTE может быть несколько. Каждая со своими вхождениями и периодичностью. Например можно создать еще две цепочки TESTSCAN для отлавливания сканирования well-known портов и TESTDOS для блокирования хостов, которые запрашивают слишком много соединений за короткий момент времени. В итоге каждая подобная цепочка перенаправляет проверку на ATTACK, где метится запалившийся хост.

ipkiller
15-10-2008, 09:49
# 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

al37919
15-10-2008, 11:15
-A INPUT -j logdrop
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j ACCEPT
ну и чего мы хочем --- сначала logdrop всего, а потом разрешаем ходить на порт 22. Туда ходить то уже нечему...

Power
15-10-2008, 11:24
хм, а почему?! онде делает проброс на локальный ип, а из локалки работате....
-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
Объясняю. Тот факт, что пакет прошёл через преобразование адреса назначения (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), так как оно сбрасывает все пакеты и дальше они не идут.


iptables -D INPUT -j logdrop
iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT
iptables -A INPUT -j logdrop

откроет ваш 22 порт.

И -A VSERVER -p tcp -m tcp --dport 22 -j DNAT --to-destination 11.11.11.1:22 не нужно.

ipkiller
15-10-2008, 11:43
ОГРОМНОЕ Спасибо за разъяснения....
и за помощь,
все заработало....

al37919
28-01-2009, 14:58
проблема в том, что ipt_recent подсчитывает не только неудачные попытки, но и удачные тоже. Так что есть шанс забанить самого себя "навсегда"

kostik
03-03-2009, 10:21
Привет всем!
http://www.wl500g.info/showthread.php?p=70645 читал внимательно.
У меня wl500gpv1, прошивка Олега...7-10.

Проблема такая: из wan коннектится только на 22 порт. Из лан - на любой.
Трабл и у меня, и у друга - у него тоже wl500gpv1.

В web интерфейсе роутера файрвол отключен.
Если запускать
dropbear -p 443
то процесс появляется в списке, при попытке соединения
ssh <адрес wl500gpv1> -p 443 - сессия с дугого компа подвисает намертво
При этом на роутере создается еще 1 процесс dropbear -p 443.
Лог роутера:
Mar 3 13:24:24 dropbear[178]: Running in background # запуск соединения
Mar 3 13:24:36 dropbear[179]: Child connection from ::ffff:217.118.85.89:45461 # черное окошко putty другого компа, зависает
Mar 3 13:26:15 dropbear[179]: exit before auth: Exited normally # закрываешь окно putty

Маршрут на всякий случай прописан:
iptables -I INPUT -p tcp --syn --dport 443 -j ACCEPT

Подскажите плз, что делать? С рабочего компа не могу зайти :( - 22 порт отрублен.

Заранее благодарю,
Константин

Oleg
03-03-2009, 11:21
А если обращаться на 443 порт из LAN?

kostik
03-03-2009, 12:24
А если обращаться на 443 порт из LAN?
То все ОК - заходит, сессия не виснет.

Less
03-03-2009, 17:09
Дайте вивод команд



iptables -nvL

и


iptables -L -nvt nat

kostik
04-03-2009, 06:22
Вывод команд:

$ iptables -nvL
Chain INPUT (policy ACCEPT 32235 packets, 2707K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 flags:0x16/0x02
59 4520 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
435K 36M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3000 180K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
11728 4330K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW

Chain FORWARD (policy ACCEPT 292 packets, 18640 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
292 18640 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x16/0x02 TCPMSS clamp to PMTU
5337 2789K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- !br0 vlan1 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT

Chain OUTPUT (policy ACCEPT 709K packets, 845M bytes)
pkts bytes target prot opt in out source destination

Chain MACS (0 references)
pkts bytes target prot opt in out source destination

Chain SECURITY (0 references)
pkts bytes target prot opt in out source destination
0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x16/0x02 limit: avg 1/sec burst 5
0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 1/sec burst 5
0 0 RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
0 0 RETURN icmp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

Chain logaccept (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW LOG flags 7 level 4 prefix `ACCEPT '
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0

Chain logdrop (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 state
NEW LOG flags 7 level 4 prefix `DROP '
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

$ iptables -L -nvt nat
Chain PREROUTING (policy ACCEPT 14493 packets, 1255K bytes)
pkts bytes target prot opt in out source destination
10246 782K VSERVER all -- * * 0.0.0.0/0 78.106.60.42
12 576 VSERVER all -- * * 0.0.0.0/0 10.29.75.190

Chain POSTROUTING (policy ACCEPT 6133 packets, 368K bytes)
pkts bytes target prot opt in out source destination
290 18544 MASQUERADE all -- * ppp0 !78.106.60.42 0.0.0.0/0
0 0 MASQUERADE all -- * vlan1 !10.29.75.190 0.0.0.0/0
53 11496 MASQUERADE all -- * br0 192.168.1.0/24 192.168.1.0/24

Chain OUTPUT (policy ACCEPT 6186 packets, 380K bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (2 references)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:32506 to:192.168.1.122:32506
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:32506 to:192.168.1.122:32506

Less
04-03-2009, 08:10
Добавьте правило

iptables -I INPUT -i WANIF -d WANIP -p tcp --dport 443 -j LOG --log-prefix '** SSH FROM WAN **' --log-level 4

Врезультате будете видить кто и когда стучался на Ваш порт.

kostik
04-03-2009, 13:17
Врезультате будете видить кто и когда стучался на Ваш порт.
Добавил (WANIF - ppp0, WANIP - IP туннеля) - в системный лог на вебморде ничего нового не попадает.
В каком логе смотреть?
Подскажите плз, а зачем Вы просили вывод iptables?

cipipi
04-03-2009, 16:37
Выведите листинг команды

/usr/sbin/iptables-save
так наглядней. Плюс выведите листинг команды

/bin/netstat -al

Первая команда нужна, чтоб выяснить, как настроен ваш фаервол и какие пакеты он не пускает.
Вторая команда нужна, чтоб выяснить, по каким адресам и интерфейсам слушает служба на 443 порте

kostik
04-03-2009, 20:26
Вывод команд:

$ /usr/sbin/iptables-save
# Generated by iptables-save v1.2.7a on Wed Mar 4 23:10:38 2009
*nat
:PREROUTING ACCEPT [5740:607938]
:POSTROUTING ACCEPT [5633:338293]
:OUTPUT ACCEPT [5651:341795]
:VSERVER - [0:0]
-A PREROUTING -d 78.106.xx.xx -j VSERVER
-A PREROUTING -d 10.29.xx.xx -j VSERVER
-A POSTROUTING -s ! 78.106.xx.xx -o ppp0 -j MASQUERADE
-A POSTROUTING -s ! 10.29.xx.xx -o vlan1 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/255.255.255.0 -d 192.168.1.0/255.255.255.0 -o br0 -j MASQUERADE
-A VSERVER -p tcp -m tcp --dport 32506 -j DNAT --to-destination 192.168.1.122:32506
-A VSERVER -p udp -m udp --dport 32506 -j DNAT --to-destination 192.168.1.122:32506
COMMIT
# Completed on Wed Mar 4 23:10:39 2009
# Generated by iptables-save v1.2.7a on Wed Mar 4 23:10:39 2009
*mangle
:PREROUTING ACCEPT [8714174:2743562014]
:INPUT ACCEPT [8697843:2735621632]
:FORWARD ACCEPT [15279:7834490]
:OUTPUT ACCEPT [13309041:14864647035]
:POSTROUTING ACCEPT [13331423:14875104148]
COMMIT
# Completed on Wed Mar 4 23:10:39 2009
# Generated by iptables-save v1.2.7a on Wed Mar 4 23:10:39 2009
*filter
:INPUT ACCEPT [25031:2220015]
:FORWARD ACCEPT [758:36384]
:OUTPUT ACCEPT [5709391:5483432254]
:MACS - [0:0]
:SECURITY - [0:0]
:logaccept - [0:0]
:logdrop - [0:0]
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-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 FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-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 DROP
-A FORWARD -i ! br0 -o vlan1 -j DROP
-A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
-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 DROP
-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 Mar 4 23:10:39 2009

$ /bin/netstat -al
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:51777 *:* LISTEN
tcp 0 0 *:printer *:* LISTEN
tcp 0 0 WL-0022152B:netbios-ssn *:* LISTEN
tcp 0 0 *:laserjet *:* LISTEN
tcp 0 0 *:www *:* LISTEN
tcp 0 0 *:domain *:* LISTEN
tcp 0 0 *:3838 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:https *:* LISTEN
udp 0 0 *:1024 *:*
udp 0 0 WL-0022152BC:netbios-ns *:*
udp 0 0 *:netbios-ns *:*
udp 0 0 WL-0022152B:netbios-dgm *:*
udp 0 0 *:netbios-dgm *:*
udp 0 0 localhost.localdo:34954 *:*
udp 0 0 localhost.localdom:1038 *:*
udp 0 0 *:9999 *:*
udp 0 0 *:domain *:*
udp 0 0 *:bootps *:*
raw 0 0 *:1 *:* 0
raw 0 0 *:255 *:* 0
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 833 /tmp/screens/S-p2p/160.rtorrent
unix 2 [ ACC ] STREAM LISTENING 79612 /var/run/pptp/255.255.255.255:85.21.xx.xx

Получается, что роутер пускает все пакеты, но не слушает порт 443?
Но ведь:
$ ps -ef|grep drop
admin 222 1 0 16:15 ? 00:00:00 dropbear -p 443
И с LAN интерфейса заходит на 443...

ThinkPad
04-03-2009, 20:43
iptables -I INPUT -i vlan1 -p tcp --destination-port 443 -j ACCEPT

попробуй.....

al37919
04-03-2009, 21:15
tcp 0 0 *:https *:* LISTEN
это и есть 443 порт --- т.е. слушает ок.

к сожалению, --dport = --destination-port, так что ничего нового ожидать не приходится.

в общем, все прокинуто, все слушает, но ... не работает. Я бы сказал, что еще провайдер может блокировать порт, но если "При этом на роутере создается еще 1 процесс dropbear -p 443.", то больше идей нет.

P.S. а у веб сервера случайно не настроен https? Хотя в этом случае кто-то из двух (или он или dropbear) должен вылетать с ошибкой.

kostik
05-03-2009, 07:31
Похоже варианты закончились :(

Попробовал вместо dropbear openssh - результат тот же.
Попробовал зайти с другого клиента на 443-
ssh <логин>@<роутер> -p 443
говорит:
ssh_exchange_identification: read: Connection reset by peer

Похоже что-то внутри роутера режет.
Вечером подключу к wan кабель - попробую проверить напрямую, без туннеля и провайдера.
Потом сброшу все настройки, заново накачу прошивку.
Но, сдается мне, не поможет. Неужелит ни у кого не было похожей проблемы?

D_dmitry
05-03-2009, 08:47
есть вариант - выбрать другой порт
помоему 443 - https (может его перехватывает вебб сервер, который в вебб морде?)
по поводу того что создается еще один процесс dropbear - так и должно быть
так как первый процесс это наподобе демона
а второй - само соеденение
солько соеденений на dropbear столько и процессов +1

kostik
05-03-2009, 09:19
Пробовали на 2х роутерах (2 разных провайдера) на 21, 81, 443 портах.

D_dmitry
05-03-2009, 10:10
Пробовали на 2х роутерах (2 разных провайдера) на 21, 81, 443 портах.

вы специально такие порты выбираете?
http://www.cnt.ru/~wh/articles/ref19.html
все что находиться от 1 до 1024 - лучше не использовать

kostik
05-03-2009, 10:49
Всем спасибо!!!!!
По порту 5190 - соединился.
Все сбросил, оставил только:
dropbear -p 5190
iptables -I INPUT -p tcp --dport 5190 -j ACCEPT
Вопрос закрыт. Только непонятно, почему на 443 не срабатывало?
(sftp настроен не был)

kozian
27-03-2009, 08:08
Перечитав все посты касающиеся безопасности SSH на этом форуме пришел в такому варианту:

pre-boot:


#!/bin/sh

insmod ipt_recent


post-firewall:


#!/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



Этот код позволит работать DB даже в том случае, когда через веб-интерфейс в разделе файрвола была установлена какая-либо опция логирования пакетов.

А почему ты проверку на SSH делаешь в прероутинге? Есть какая-то веская причина не выносить это в INPUT?

И вопрос общий, что-то гугл не очень говорлив. В чем разница --update и --rcheck ? Точнее, что для чего нужно? :-[

--updated--

p.s. Про блокирование - я сейчас пробую написать скрипт, выдирающий из лога фаервола попытки SSH взлома и вписывает их в ssh.deny с комментами. По крайней мере, это будет сохраняться после рестарта сервера - раз, и можно будет "почистить" - два.

al37919
27-03-2009, 10:33
В чем разница --update и --rcheck ?
http://snowman.net/projects/ipt_recent/


iptables -m recent -h

если коротко, то --update жестче.

Codeserfer
08-05-2009, 19:56
Уважаемые гуру, не могли бы помочь? Тут вопросов накопилось, форум перерываю, но ответа не нахожу, может из-за знаний узких.. В линухе чайник:confused:
1) читаю в Для новичков и ленивых (http://wl500g.info/showthread.php?t=15068&page=2):
2. Для telnet/ssh:
2.1. Сменить пароль нужного (существующего) юзера:
passwd username
Пишу
passwd admin, ввожу 2 новых пароля, все ок меняет, затем

flashfs save
flasfs commit
flashfs enable
Завершаю сессию, делаю новую с новым паролем - работает, старый пароль уже не работает, в принципе чего и надо было. Перезагружаю роутер - пароль слетает на дефаулт %) Как же сделать так, чтоб после перезагрузки пароль сохранился??
2) Читал про безопасность ssh, про то, что ломануть могут.. Но так и не понял как же перевести его с 22 порта на какой-то свой? Именно перевести, чтоб 22 перестал работать.

Serge_K
08-05-2009, 20:05
Но так и не понял как же перевести его с 22 порта на какой-то свой? Именно перевести, чтоб 22 перестал работать.

Запускайте dropbear с параметром -p xxx
где xxx номер выбранного порта.

al37919
08-05-2009, 20:12
а по первому вопросу --- ищите по файлу с названием .files

Codeserfer
08-05-2009, 20:39
а по первому вопросу --- ищите по файлу с названием .files
Но там кажется пароли кодируются особым образом..

Запускайте dropbear с параметром -p xxx
где xxx номер выбранного порта.
А он разве автоматом не стартует при запуске роутера? Если да, то где же поменять параметры запуска?

al37919
08-05-2009, 22:24
А он разве автоматом не стартует при запуске роутера? Если да, то где же поменять параметры запуска?
вообще то нормально, когда вопрошающий делится подробностями --- хотя бы какое устройство и о какой прошивке идет речь. Или предлагается описать поведение всех прошивок для всех возможных устройств? :mad:

Codeserfer
09-05-2009, 09:04
вообще то нормально, когда вопрошающий делится подробностями --- хотя бы какое устройство и о какой прошивке идет речь. Или предлагается описать поведение всех прошивок для всех возможных устройств? :mad:
Прошу прощения, виноват:(
Прошивка от Олега 1.9.2.7-10, роутер Asus Wl-500 gP v2. Стоит все отсюда (http://wl500g.info/showthread.php?t=15266&page=52) и mc.

Serge_K
09-05-2009, 09:14
Прошу прощения, виноват:(
Прошивка от Олега 1.9.2.7-10, роутер Asus Wl-500 gP v2. Стоит все отсюда (http://wl500g.info/showthread.php?t=15266&page=52) и mc.

На этой прошивке он автоматом не запускается. Надо прописывать команду в post-boot. В "настройках с нуля..." описано.

Codeserfer
09-05-2009, 10:57
На этой прошивке он автоматом не запускается. Надо прописывать команду в post-boot. В "настройках с нуля..." описано.
а в post-firewall есть строчка:

iptables -I INPUT -p tcp --dport 8081 ACCEPT
Это не то?
В post-boot пусто

Serge_K
09-05-2009, 11:58
В post-boot пусто

И будет пусто, если его не создать и в него ничего не записать.

Codeserfer
09-05-2009, 19:13
И будет пусто, если его не создать и в него ничего не записать.
Ну он создан уже, просто там почти пусто:

#!/bin/sh
dropbear > /dev/null 2>&1
Скажите, пожалуйста, что именно необходимо прописать?

Serge_K
09-05-2009, 19:17
Ну он создан уже, просто там почти пусто:

#!/bin/sh
dropbear > /dev/null 2>&1
Скажите, пожалуйста, что именно необходимо прописать?

Ну вот здесь же все написано:
http://wl500g.info/showthread.php?t=3171

alexghost
02-06-2009, 19:09
Добавил в post-firewall нужную строку (в соответсвии с рекомендациями Mam(o)n), но по ssh всё равно невозможно зайти на рутер с внехи... только если нажать кнопку Update в веб-интерфейсе рутера (IP Config-Misc-Update) Получается зайти один раз. Подскажите, что делать:confused:

al37919
02-06-2009, 19:21
Mam(o)n советовал еще это:

Ну я думаю еще можно показать результат выполнения команд iptables -L INPUT -vn и iptables -L -vnt nat для уверенности, что файрвол настроен правильно.

alexghost
03-06-2009, 02:18
[admin@gexsrv root]$ iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
46 5299 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
220K 248M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3013 181K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
19395 5868K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
1007 30224 ACCEPT 2 -- * * 0.0.0.0/0 224.0.0.0/4
19752 27M ACCEPT udp -- * * 0.0.0.0/0 224.0.0.0/4 udp dpt:!1900
648K 33M SECURITY all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 state NEW
1 328 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
1 48 BRUTE tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02
0 0 BRUTE tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 flags:0x17/0x02
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:80
10 640 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
114K 8425K DROP all -- * * 0.0.0.0/0 0.0.0.0/0




[admin@gexsrv root]$ iptables -L -vnt nat
Chain PREROUTING (policy ACCEPT 811K packets, 49M bytes)
pkts bytes target prot opt in out source destination
651K 33M VSERVER all -- * * 0.0.0.0/0 10.255.165.44

Chain POSTROUTING (policy ACCEPT 10750 packets, 902K bytes)
pkts bytes target prot opt in out source destination
153K 16M MASQUERADE all -- * vlan2 !10.255.165.44 0.0.0.0/0
110 24521 SNAT all -- * br0 192.168.1.0/24 192.168.1.0/24 to:192.168.1.1

Chain OUTPUT (policy ACCEPT 10820 packets, 922K bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
2 88 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:192.168.1.1:80
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:26578 to:192.168.1.65:26578
1 95 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:26578 to:192.168.1.65:26578
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:19505 to:192.168.1.65:19505
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:19505 to:192.168.1.65:19505
27 1440 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:36041 to:192.168.1.65:36041
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:36041 to:192.168.1.65:36041
5 224 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:24500 to:192.168.1.65:24500
1 95 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:24500 to:192.168.1.65:24500
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:36130 to:192.168.1.65:36130
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:36130 to:192.168.1.65:36130
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:29921 to:192.168.1.65:29921
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:29921 to:192.168.1.65:29921
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:28992 to:192.168.1.65:28992
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:28992 to:192.168.1.65:28992
30 3438 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:51411 to:192.168.1.65:51411

al37919
03-06-2009, 05:45
в данный момент видно, что прошивка стоит 1.9.2.7-d, ssh прокинут через веб интерфейс и там же включена защита от bruteforce путем ipt_recent. Вы пытаетесь прокинуть ssh через post-firewall второй раз и еще раз включить ту же защиту. Полагаю ничего хорошего ждать от этого не приходится.

alexghost
04-06-2009, 02:32
Отключил в веб-интерфейсе защиту от брут-форса. Доступ по ssh из WAN появился,но работает почему-то не всегда(раза 3 из 5, в 2 случаях возникает ошибка connection refusd). Может быть проблема в недоступности DynDNS ил рутер чем-то очень сильно занят?
На всякий случай:


[admin@gexsrv root]$ iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
26 2008 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
837K 1092M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3179 191K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
18268 6082K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
657 18920 ACCEPT 2 -- * * 0.0.0.0/0 224.0.0.0/4
64 9408 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.0/4 udp dpt:!1900
349K 18M SECURITY all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 state NEW
4 1312 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
1 48 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 flags:0x17/0x02
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:80
7 448 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
81854 5800K DROP all -- * * 0.0.0.0/0 0.0.0.0/0




[admin@gexsrv root]$ iptables -L -vnt nat
Chain PREROUTING (policy ACCEPT 409K packets, 24M bytes)
pkts bytes target prot opt in out source destination
354K 18M VSERVER all -- * * 0.0.0.0/0 10.255.165.44

Chain POSTROUTING (policy ACCEPT 12496 packets, 1050K bytes)
pkts bytes target prot opt in out source destination
51085 5128K MASQUERADE all -- * vlan2 !10.255.165.44 0.0.0.0/0
143 31868 SNAT all -- * br0 192.168.1.0/24 192.168.1.0/24 to:192.168.1.1

Chain OUTPUT (policy ACCEPT 12572 packets, 1074K bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:192.168.1.1:80
40 1816 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:26578 to:192.168.1.65:26578
1 95 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:26578 to:192.168.1.65:26578
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:19505 to:192.168.1.65:19505
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:19505 to:192.168.1.65:19505
27 1452 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:36041 to:192.168.1.65:36041
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:36041 to:192.168.1.65:36041
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:24500 to:192.168.1.65:24500
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:24500 to:192.168.1.65:24500
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:36130 to:192.168.1.65:36130
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:36130 to:192.168.1.65:36130
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:29921 to:192.168.1.65:29921
1 95 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:29921 to:192.168.1.65:29921
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:28992 to:192.168.1.65:28992
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:28992 to:192.168.1.65:28992
35 4045 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:51411 to:192.168.1.65:51411

al37919
04-06-2009, 06:34
возможно, по крайней мере с точки зрения файрволла прокинуто все ок.

alexghost
04-06-2009, 06:48
В чем же дело?
Прямо щас с работы проверяю и получаю Connection Refused :(
Хотя на веб интерфейс заходит...
Ради интереса покапался в логах и вот, что обнаружил


Jan 1 05:00:10 ddns update: connected to members.dyndns.org (204.13.248.112) on port 80.
Jan 1 05:00:11 ddns update: authentication failure
Jan 1 05:00:11 ddns update: failure to update vlan2->10.255.165.44 (gex45.ath.cx)
Jan 1 05:00:11 ddns update: shutting down updater for gex45.ath.cx due to fatal error


Похоже, что невозможно пройти аутентификацию, хотя никакие настройки не менял и раньше периодически можно было заходить по ssh.

UPD. Оттуда же из лога


Jan 1 05:00:09 dropbear[131]: Failed listening on '22': Error listening: Address already in use
Jan 1 05:00:10 dropbear[131]: premature exit: No listening ports available.
Jan 1 05:00:10 ddns update: connected to members.dyndns.org (204.13.248.112) on port 80.
Jan 1 05:00:11 ddns update: request successful
Jan 1 05:00:11 ddns update: successful update for vlan2->10.255.165.44 (gex45.ath.cx)

Хм, почему же 22 порт in use?

al37919
04-06-2009, 16:59
Хм, почему же 22 порт in use?
значит dropbear уже запущен.

kodmis
13-06-2009, 21:51
А если совсем по теме, то таблица постепенно заполняется. Эта штука работает часа 4, а в SSH_ATTACKER уже 3 записи включая мой тест. Аптайм к данному моменту 11 дней и надеюсь, что до своего возвращения из командировки он дойдет где-нибудь дней до 40. Сколько же записей будет в этой таблице и почему не удаляются бесполезные записи (те, срок давности по которым уже вышел). Ведь если гость с этого же адреса заглянет еще разок, то он будет добавлен с нуля без проблем. А ведь где-то это должно храниться, да и проверка идти по всем адресам --- лишние накладные расходы. Нет ли там варианта самоочистки от бесполезной информации. Или эта таблица из себя что то вроде лога представляет?

P.S. Ну да я понял, по крайней мере для ADSL соединения такая проблема не существует, т.к. при ежесуточном разрыве соединения iptables перезапускаются.
Тоже этот вопрос заинтересовал
Автор модуля вот что пишет:


The module itself accepts parameters, defaults shown:
ip_list_tot=100 ; Number of addresses remembered per table
ip_pkt_list_tot=20 ; Number of packets per address remembered
ip_list_hash_size=0 ; Hash table size
0 means to calculate it based on ip_list_tot, default: 512
ip_list_perms=0644 ; Permissions for /proc/net/ipt_recent/* files
debug=0 ; Set to 1 to get lots of debugging info

Параметры меняются наверное так:

modprobe ipt_recent ip_list_tot=1000

igor77777
30-09-2009, 07:47
Пытался настроить безопасный доступ к ssh. Но что-то сам запутался.
ssh работает на стандартном порту (22).
Но доступ с работы я могу иметь только по 80 или 443 портам.
Поэтому делаю прокидывание 443 на локальный 22.
Сейчас этот кусок в пост-файрволл выглядит так:

# Ловим атакующих на shh (22) порт
# - создали таблицу для пакетов на 22 порт
iptables -N SSH_EVAL
# - Удаляю запрещающее правило
iptables -D INPUT -j DROP
# - все, что приход на 22 порт отправляем в нашу таблицу
iptables -A INPUT -p tcp --dport $SSH_PORT -j SSH_EVAL
# - фильтруем все, что не пришло с внутреннего интерфейса br0
iptables -A SSH_EVAL -i ! $BR0IF -p tcp -m state --state NEW --dport $SSH_PORT -m recent --set --name SSH_ATTACKER --rsource
iptables -A SSH_EVAL -i ! $BR0IF -p tcp -m state --state NEW --dport $SSH_PORT -m recent --update --seconds 600 --hitcount 4 --name SSH_ATTACKER --rsource -j DROP
# - установленные соединения разрешаю
iptables -A SSH_EVAL -p tcp --syn --dport $SSH_PORT -j ACCEPT
# - Возвращаю назад запрещающее правило
iptables -A INPUT -j DROP
# - пробрасываем внешний порт на 22 внутренний
iptables -t nat -I PREROUTING -i $PPP0IF -p tcp --dport $PPP0_SSH_PORT -j DNAT --to-destination $BR0IP:$SSH_PORT

где

PPP0IP=$2
VLAN1IP=$6
BR0IP=$4

PPP0IF=$1
VLAN1IF=$5
BR0IF=$3

SSH_PORT=22
PPP0_SSH_PORT=443

В результате получаются открытыми в интернет оба порта и 22 и 443.
Как сделать так чтобы остался открытым снаружи только 443, а внутри остался 22 ?

vectorm
30-09-2009, 12:51
Пытался настроить безопасный доступ к ssh. Но что-то сам запутался.
ssh работает на стандартном порту (22).
Но доступ с работы я могу иметь только по 80 или 443 портам.
Поэтому делаю прокидывание 443 на локальный 22.

А если сделать ТОЛЬКО доступ по 443 порту везде? В веб морде. И не заморачиваться с пробросами?

igor77777
30-09-2009, 15:35
А если сделать ТОЛЬКО доступ по 443 порту везде? В веб морде. И не заморачиваться с пробросами?
Это тоже вариант, но я кажется решил проблему.
Перечитав man по iptables в частности по DNAT, понял что там происходит с адресами.
Короче. В правило, открывающее доступ к 22 порту добавил проверку по целевому ip.
Теперь это правило выглядит так:

# - все, что приход на 22 порт отправляем в нашу таблицу
iptables -A INPUT -d $BR0IP -p tcp --dport $SSH_PORT -j SSH_EVAL
а было так:

# - все, что приход на 22 порт отправляем в нашу таблицу
iptables -A INPUT -p tcp --dport $SSH_PORT -j SSH_EVAL

Wadson
12-10-2009, 10:15
Такая вот проблема жить мешает.

Роутер WL-700gE, прошивка от KFurge.

Через какое-то время работы перестает пускать к себе по ssh.
Т.е. сначала могу нормально залогиниться через PuTTy и nTorrent c ББ или любого ноута.
Через какое-то время nTorrent пишет disconnected. При попытке запустить его по новой (опять же на любом компе) пишет Auth fail.
При попытке захода через PuTTy после ввода пароля пишет Access denied.
По телнету при этом пускает без проблем.

В чем может быть причина и как ее побороть?

vectorm
12-10-2009, 15:18
Такая вот проблема жить мешает.
В чем может быть причина и как ее побороть?
Смотреть логи.

Wadson
12-10-2009, 17:28
Смотреть логи.
Логи чего и где?

vectorm
12-10-2009, 19:07
Логи чего и где?
Роутера. В роутере.

KBac
16-10-2009, 14:58
Описанными способами можно ограничить интенсивность атак, т.е., например, не более 3 коннектов в течение 10 минут. А как можно ограничить количество одновременных коннектов к ssh-серверу с одного адреса? Как можно ограничить таймаут между установлением соединения с ssh-сервером и авторизацией на нем?

al37919
16-10-2009, 16:17
А как можно ограничить количество одновременных коннектов к ssh-серверу с одного адреса?
Это очень стремное действо, т.к. не каждая сессия закрывается при разрыве и так можно очень легко себя оставить без доступа вообще.

Wadson
17-10-2009, 11:54
Долго он держался, в т.ч. еще сегодня утром, но вот опять не пускает.
nTorrent выдает "Auth fail".
В Putty ввожу root, ввожу пароль - говорит: "Access denied".
Вот конец лога:


Oct 17 07:32:42 -- MARK --
Oct 17 07:52:46 -- MARK --
Oct 17 08:12:46 -- MARK --
Oct 17 08:32:46 -- MARK --
Oct 17 08:48:04 dropbear[1186]: Child connection from 192.168.1.5:2875
Oct 17 08:48:07 dropbear[1186]: password auth succeeded for 'admin' from 192.168.1.5:2875
Oct 17 08:52:46 -- MARK --
Oct 17 09:12:46 -- MARK --
Oct 17 09:32:46 -- MARK --
Oct 17 09:52:46 -- MARK --
Oct 17 10:12:46 -- MARK --
Oct 17 10:32:46 -- MARK --
Oct 17 10:52:50 -- MARK --
Oct 17 11:12:50 -- MARK --
Oct 17 11:17:52 dropbear[1186]: exit after auth (admin): error reading: Connection reset by peer
Oct 17 11:32:50 -- MARK --
Oct 17 11:52:50 -- MARK --
Oct 17 12:12:51 -- MARK --
Oct 17 12:32:51 -- MARK --
Oct 17 12:52:51 -- MARK --
Oct 17 13:12:51 -- MARK --
Oct 17 13:32:51 -- MARK --
Oct 17 13:52:57 -- MARK --
Oct 17 14:09:15 dropbear[1233]: Child connection from 192.168.1.5:2686
Oct 17 14:09:18 dropbear[1233]: login attempt for nonexistent user from 192.168.1.5:2686
Oct 17 14:09:18 dropbear[1233]: exit before auth: Disconnect received
Oct 17 14:11:53 dropbear[1241]: Child connection from 192.168.1.5:2943
Oct 17 14:12:24 dropbear[1241]: user 'root' has blank password, rejected
Oct 17 14:12:57 -- MARK --
Oct 17 14:13:16 dropbear[1241]: user 'root' has blank password, rejected
Oct 17 14:13:22 dropbear[1241]: user 'root' has blank password, rejected
Oct 17 14:13:27 dropbear[1241]: exit before auth (user 'root', 6 fails): Exited normally
Oct 17 14:16:22 dropbear[1243]: Child connection from 192.168.1.5:3242
Oct 17 14:16:42 dropbear[1243]: user 'root' has blank password, rejected
Oct 17 14:16:47 dropbear[1243]: user 'root' has blank password, rejected
Oct 17 14:21:48 dropbear[1243]: exit before auth (user 'root', 4 fails): Timeout before auth

asp
17-10-2009, 17:13
а) вы уж выясните - админ или рут.
Тем более, что он вам английским языком пишет -
Oct 17 08:48:07 dropbear[1186]: password auth succeeded for 'admin' from 192.168.1.5:2875
Oct 17 14:13:22 dropbear[1241]: user 'root' has blank password, rejected

Wadson
17-10-2009, 17:49
а) вы уж выясните - админ или рут.
Тем более, что он вам английским языком пишет -
Oct 17 08:48:07 dropbear[1186]: password auth succeeded for 'admin' from 192.168.1.5:2875
Oct 17 14:13:22 dropbear[1241]: user 'root' has blank password, rejected
А что тут выяснять? Это заходы из разных программ в разное время. С утра авторизация проходила, потом перестала. И про того же админа лог написал уже "несуществующий юзер". Я потому и привел весь кусок.
Если Вас это смущает, вот последние действия:

Oct 17 20:21:04 dropbear[643]: Child connection from 192.168.1.5:1203
Oct 17 20:21:07 dropbear[643]: password auth succeeded for 'admin' from 192.168.1.5:1203
Oct 17 20:21:23 dropbear[644]: Child connection from 192.168.1.5:1271
Oct 17 20:21:32 dropbear[644]: password auth succeeded for 'root' from 192.168.1.5:1271

А вот почему он отрубается и перестает принимать пароль - вопрос.

KBac
18-10-2009, 21:11
а как же насчет того, что dropbear держит не более 30 соединений одновременно? так действительно можно остаться без свободных соединений.

YVM
18-02-2010, 14:16
Можно ли сделать логин / пароль на SSH таким образом, чтобы он отличался от telnet?

Noobeum
18-02-2010, 14:20
Можно ли сделать логин / пароль на SSH таким образом, чтобы он отличался от telnet?

вы и там и там заходите под рутом.
нельзя.

Corvus
15-04-2010, 10:28
Прошу помочь разобраться с brut force FTP. Задрали наши желтолицые соседи.
Перечитав данную ветку в post-firewall добавил следующее правило:


# for FTP

FTP_PORT=21

iptables -N FTPSCAN

iptables -A INPUT -p tcp --dport $FTP_PORT -j FTPSCAN

iptables -A FTPSCAN -i ! $3 -p tcp --dport $FTP_PORT /
-m state --state NEW -m recent --set --name FTP_BR_FR --rsource

iptables -A FTPSCAN -i ! $3 -p tcp --dport $FTP_PORT /
-m state --state NEW -m recent --update --seconds 60 --hitcount 3 /
--name FTP_BR_FR --rsource -j DROP

iptables -A FTPSCAN -p tcp --dport $FTP_PORT -j ACCEPT




$ lsmod

Module Size Used by Tainted: P
.........
ip_nat_ftp 3912 0 (unused)
ip_conntrack_ftp 5216 1
wl 892280 0 (unused)
et 31288 0 (unused)
ipt_recent 11640 2

Вот что говорит iptables -L INPUT -vn

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

34 3076 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
27147 2454K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
188 11280 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
1129 385K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
31 868 ACCEPT 2 -- * * 0.0.0.0/0 224.0.0.0/4
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.0/4 udp dpt:!1900
1850 233K DROP all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 FTPSCAN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21


Доступа, соответственно, к FTP нет. Порт в таймауте. Друзья, куда копать :confused:

Заранее благодарен за помощь!

al37919
15-04-2010, 19:45
Вот что говорит iptables -L INPUT -vn

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

34 3076 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
27147 2454K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
188 11280 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
1129 385K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
31 868 ACCEPT 2 -- * * 0.0.0.0/0 224.0.0.0/4
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.0/4 udp dpt:!1900
1850 233K DROP all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 FTPSCAN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21


Доступа, соответственно, к FTP нет. Порт в таймауте. Друзья, куда копать :confused:
выделенное жирным правило не пропускает ничего за себя. Так что проверка на разрешенность ftp должна быть вставлена перед ним

Corvus
16-04-2010, 09:30
выделенное жирным правило не пропускает ничего за себя. Так что проверка на разрешенность ftp должна быть вставлена перед ним

al37919, СПАСИБО за наводку! Прозевал строчку. Очищение цепочки INPUT было закоментировано и роутер, видимо, втыкал свое, какое-то "умолчальное", DROP-правило перед разрешающим для FTP.

Asgard
28-04-2010, 09:56
Если уж очень охота (в целях оптимизации) добавить правило в конец цепочки (-A) тогда:


# Устанавливаем действие по-умолчанию(DROP или ACCEPT), которое будет выполнено при достижении конца цепочки. По-дефолту стоит ACCEPT.
iptables -P INPUT DROP
# Удаляем последнее правило в цепочке, которое дропает пакеты.
iptables -D INPUT -j DROP
# Добавляем в конец цепочки правило, разрешающее входящие tcp пакеты на 1555 порт
iptables -A INPUT -p tcp --dport 1555 -j ACCEPT


Если мы удаляем последнее правило в цепочке, которое дропает пакеты, то не создаст ли это "дырку" в фаерволе через которую будут проникать нежелательные пакеты?

Power
28-04-2010, 12:55
Если мы удаляем последнее правило в цепочке, которое дропает пакеты, то не создаст ли это "дырку" в фаерволе через которую будут проникать нежелательные пакеты?

Не создаст. Прочитайте внимательно две строчки выше:




# Устанавливаем действие по-умолчанию(DROP или ACCEPT), которое будет выполнено при достижении конца цепочки. По-дефолту стоит ACCEPT.
iptables -P INPUT DROP
# Удаляем последнее правило в цепочке, которое дропает пакеты.
iptables -D INPUT -j DROP
# Добавляем в конец цепочки правило, разрешающее входящие tcp пакеты на 1555 порт
iptables -A INPUT -p tcp --dport 1555 -j ACCEPT

flanker
09-09-2010, 20:38
Недавно на моем WL-500w произошел программный сбой - приходится перенастраивать. Вот и дело дошло и до SSH. Все настроил без проблем благодаря доходчивым пояснениям знатоков в этой ветке, за что большое им спасибо. Добавил в post-firewall часть кода для контроля попыток залогиниться на сервер SSH в соответствии с сообщением al37919 (http://wl500g.info/showthread.php?p=69964#post69964). Вроде, работает все исправно. По крайней мере, меня пускает на мой маршрутизатор с других компьютеров через интернет. Также я установил syslog-ng для пущей информативности логов. Периодически наблюдаю попытки залогиниться на моем сервере SSH, пока безуспешные. Только почему-то не выводится IP-адрес "плохого парня". Вывод в таком формате:

21:46:14 09-09-2010 (info|authpriv|dropbear) dropbear[770]: exit before auth: Exited normally
Раньше, до сбоя, я помню, что адрес выводился в лог.

Все мои действия авторизации на сервере SSH и выходе с него логируются нормально - лог в полном объеме, с IP-адресом.

Прошивка установлена WL500W-1.9.2.7-d-r1825.trx, SSH встроен в прошивку, запущен на нестандартном порту (скажем, 12345). В веб-интерфейсе отключена защита от лобовой атаки.

Вывод iptables (MAC-адреса заменены на фиктивные, IP-адрес маршрутизатора тоже - 999.999.999.999, на период настройки марщрутизатора открыт доступ к веб-интерфейсу из интернет через порт 55555):

IP Tables

Chain INPUT (policy DROP 51213 packets, 4185K bytes)
pkts bytes target prot opt in out source destination
11381 884K MACS all -- br0 * 0.0.0.0/0 0.0.0.0/0
320 31078 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
64322 45M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
90 5664 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
5685 400K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
66497 5262K SECURITY all -- eth1 * 0.0.0.0/0 0.0.0.0/0 state NEW
4 192 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345 flags:0x17/0x02
100 4800 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:80
0 0 SSH_EVAL tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345

Chain FORWARD (policy ACCEPT 192K packets, 16M bytes)
pkts bytes target prot opt in out source destination
27M 23G MACS all -- br0 * 0.0.0.0/0 0.0.0.0/0
12483 630K ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
37M 24G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 eth1 0.0.0.0/0 0.0.0.0/0
45043 2277K SECURITY all -- !br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
13851 696K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT
0 0 DROP all -- * br0 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 60421 packets, 51M bytes)
pkts bytes target prot opt in out source destination

Chain BRUTE (0 references)
pkts bytes target prot opt in out source destination

Chain MACS (2 references)
pkts bytes target prot opt in out source destination
27M 23G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 11:11:11:11:11:11
201 106K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 22:22:22:22:22:22
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 33:33:33:33:33:33
59997 4781K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 44:44:44:44:44:44
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 55:55:55:55:55:55
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 66:66:66:66:66:66
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 77:77:77:77:77:77
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 88:88:88:88:88:88
2 658 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

Chain SECURITY (2 references)
pkts bytes target prot opt in out source destination
13724 693K RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 limit: avg 1/sec burst 5
338 13520 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 1/sec burst 5
51099 4179K RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
7 464 RETURN icmp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
46372 2653K DROP all -- * * 0.0.0.0/0 0.0.0.0/0

Chain SSH_EVAL (1 references)
pkts bytes target prot opt in out source destination
0 0 tcp -- !br0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:12345 recent: SET name: SSH_ATTACKER side: source
0 0 DROP tcp -- !br0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:12345 recent: UPDATE seconds: 600 hit_count: 4 name: SSH_ATTACKER side: source
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345 flags:0x17/0x02

Chain logaccept (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW LOG flags 7 level 4 prefix `ACCEPT '
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0

Chain logdrop (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW LOG flags 7 level 4 prefix `DROP '
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0


IP Tables NAT

Chain PREROUTING (policy ACCEPT 277K packets, 26M bytes)
pkts bytes target prot opt in out source destination
107K 6710K VSERVER all -- * * 0.0.0.0/0 999.999.999.999

Chain POSTROUTING (policy ACCEPT 15273 packets, 793K bytes)
pkts bytes target prot opt in out source destination
1584 78569 SNAT all -- * br0 192.168.1.0/28 192.168.1.0/28 to:192.168.1.1
113K 11M SNAT all -- * eth1 !999.999.999.999 0.0.0.0/0 to:999.999.999.999

Chain OUTPUT (policy ACCEPT 1903 packets, 125K bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
513 24624 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:55555 to:192.168.1.1:80
46132 2328K DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:61157 to:192.168.1.3:61157
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10308 to:192.168.1.3:10308
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:2302 to:192.168.1.3:2302
Файл /proc/net/ipt_recent/SSH_ATTACKER всегда пуст. Хотя дата его модификации постоянно обновляется.

flanker
09-09-2010, 20:41
В предыдущем сообщении все не поместилось, продолжу в этом.

post-firewall выглядит так:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:usr/bin:/opt/sbin:/opt/bin:/opt/local/bin

logger "post-firewall started"

#this rule can be uncommented for the testing period
#iptables -A INPUT -p tcp --syn --dport 2222 -j ACCEPT

# set default policy
iptables -P INPUT DROP

# remove last default rule
iptables -D INPUT -j DROP

# ***ssh subsection begin***
SSH_PORT=12345
SSH_ALLOW=/usr/local/etc/ssh.allow
SSH_DENY=/usr/local/etc/ssh.deny

# Create a new SSH_EVAL chain which will evaluate incoming connections to ssh server from WAN
iptables -N SSH_EVAL

# Transfer all ssh connections to the SSH_EVAL chain
iptables -A INPUT -p tcp --dport $SSH_PORT -j SSH_EVAL

# Evaluate incoming ssh connections through ssh.allow and ssh.deny lists
for i in `awk '{print $1}' $SSH_ALLOW`
do
iptables -A SSH_EVAL -p tcp --syn -s $i --dport $SSH_PORT -j ACCEPT
done
for i in `awk '{print $1}' $SSH_DENY`
do
iptables -A SSH_EVAL -p tcp --syn -s $i --dport $SSH_PORT -j DROP
done

# Block annoying intruder's attemtps (after --hitcount connections occured, wait --seconds after the last connection attempt)
# Remember, that both successful and unsuccessful connections are counted
iptables -A SSH_EVAL -i ! $3 -p tcp -m state --state NEW --dport $SSH_PORT -m recent --set --name SSH_ATTACKER --rsource
iptables -A SSH_EVAL -i ! $3 -p tcp -m state --state NEW --dport $SSH_PORT -m recent --update --seconds 600 --hitcount 4 --name SSH_ATTACKER --rsource -j DROP

# Accept the rest of ssh connections which were able to pass through the filtering
iptables -A SSH_EVAL -p tcp --syn --dport $SSH_PORT -j ACCEPT
# ***ssh subsection end***

# Low PPTP speed fix
iptables -t nat -nvL POSTROUTING | grep MASQUERADE | awk '{
"ifconfig "$7" | grep Mask" | getline ip;
split(ip,ip,":"); split(ip[2],ip," ");
split($8,src,"!");
if (src[1]=="") {src="! -s "src[2]} else {src="-s "src[1]};
if ($9=="0.0.0.0/0") {dst=""} else {dst="-d "$9};
system("iptables -t nat -A POSTROUTING -o "$7" "src" "dst" -j SNAT --to-source "ip[1]);
system("iptables -t nat -D POSTROUTING -o "$7" "src" "dst" -j MASQUERADE");
}'

Собственно, меня не напрягает отсутствие в логах IP-адреса атакующего. Но для полноты картины не помешает. Тем более, что раньше все работало. К тому же, возможно, это является признаком неправильных настроек в iptables или еще где.

Не подскажут ли уважаемые знатоки, где копать? Если вопрос уже обсуждался, подскажите, пожалуйста, где смотреть, сам не нашел.

Gaku
14-01-2011, 15:21
Почему-то при использовании этого скрипта (post-firewall) uTorrent не может принимать входящие подключения, встроенная проверка говорить, что порт закрыт.

Помогите пожалуйста разобраться: что означают строки
grep -q -- '--dport 0\b' /tmp/nat_rules && grep -v -- '--dport 0\b' /tmp/nat_rules | iptables-restore
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

и не может ли быть проблема в том, что мы обнуляем все правила первыми двумя строчками скрипта?

Заранее большое спасибо!



iptables -P INPUT DROP
iptables -D INPUT -j DROP
SSH_PORT=22
SSH_ALLOW=/usr/local/etc/ssh.allow
SSH_DENY=/usr/local/etc/ssh.deny
ssh server from WAN
iptables -N SSH_EVAL
iptables -A INPUT -p tcp --dport $SSH_PORT -j SSH_EVAL
for i in `awk '{print $1}' $SSH_ALLOW`
do
iptables -A SSH_EVAL -p tcp --syn -s $i --dport $SSH_PORT -j ACCEPT
done
for i in `awk '{print $1}' $SSH_DENY`
do
iptables -A SSH_EVAL -p tcp --syn -s $i --dport $SSH_PORT -j DROP
done

iptables -A SSH_EVAL -i ! $3 -p tcp -m state --state NEW --dport $SSH_PORT -m recent --set --name SSH_ATTACKER --rsource
iptables -A SSH_EVAL -i ! $3 -p tcp -m state --state NEW --dport $SSH_PORT -m recent --update --seconds 600 --hitcount 4 --name SSH_ATTACKER --rsource -j DROP

iptables -A SSH_EVAL -p tcp --syn --dport $SSH_PORT -j ACCEPT

grep -q -- '--dport 0\b' /tmp/nat_rules && grep -v -- '--dport 0\b' /tmp/nat_rules | iptables-restore
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

DmitryZz
01-03-2011, 19:51
500 gpV2 с прошивкой от энтузиастов 1.9.2.7-d-r1087.
нужен мне удаленный доступ снаружи по SSH.
регистрируюсь в dyndns - роутер извне пингуется нормально.
включаю в нем SSH на порту 443.
иду на nettols.ru, проверяю - говорит, что извне порт 443 закрыт.
включаю на роутере доступ к web морде по 8080.
пытаюсь извне в гуглхроме залезть на http:// мойдинднс:8080 - нет ответа от сервера.
что и где подкрутить чайнику?
спасибо.

Pablo Escobar
30-03-2011, 18:13
исходные данные:
wl500gp v.1 - 1.9.2.7-d-r2624
белый динамический ip, обращаюсь через DynDNS.
ssh слушает порт, например, 57000.

с работы (Win7 Ultimate, сижу за фрей, все наружу открыто) пытаюсь зайти на роутер с помощью putty. разрешил в виндовом файрволле putty, подключился на порт, например, 57000, но спутал логин и закрыл ее.
после этого пробовал еще раз десять - ноль эффекта, таймаут подключения.

добрался до дома, вижу в логах удачное подключение

Mar 30 10:27:54 dropbear[557]: Child connection from my_work_ip:55558
Mar 30 10:28:15 dropbear[557]: login attempt for nonexistent user from my_work_ip:55558
Mar 30 10:28:21 dropbear[557]: exit before auth: Exited normally

Вопрос, в общем, в следующем - откуда взялся этот левый порт, и что я вообще делаю не так?

Спасибо.

al37919
30-03-2011, 18:49
my_work_ip:55558 --- это исходящий порт
login attempt for nonexistent user from my_work_ip:55558 --- это вполне естественный отлуп при неправильном имени пользователя
exit before auth: Exited normally --- это закрытие второй копии dropbear, которая создается на каждое новое соединение.

В общем, нет причин для беспокойства --- судя по приведенному логу у вас все в абажуре.

Pablo Escobar
30-03-2011, 18:53
my_work_ip:55558 --- это исходящий порт
login attempt for nonexistent user from my_work_ip:55558 --- это вполне естественный отлуп при неправильном имени пользователя
exit before auth: Exited normally --- это закрытие второй копии dropbear, которая создается на каждое новое соединение.

В общем, нет причин для беспокойства --- судя по приведенному логу у вас все в абажуре.

не все, однако. putty перестал коннектиться (подключился всего один раз) и отваливается по таймауту соединения. один раз смог и все.
может из опыта подскажете что, а то я за два дня уже фрю изучил, а толку нет, в логах роутера коннектов нет.

al37919
30-03-2011, 19:12
те в логе dropbear больше не упоминался?
причем по возвращении dropbear в запущенных процессах присутствовал?

что можно сделать:
1) если подозрения на защиту recent и у фри адрес статический, то его можно прописать в белый список (файл /usr/local/etc/ssh.allow ). Тогда на этот адрес/подсеть она не распространяется
2) если действительно падает dropbear, то можно в cron засунуть что-то подобное для его переподъема раз минут в 5-10:

#! /bin/sh

# This script checks to make sure important
# processes are running (in case they crash).
# It also makes sure annoying or unwanted
# programs are not running.

# Based on:
# http://wl500g.info/showthread.php?t=2556

ensure()
{
[ $ENSURE = "no" ] && exit
name=$1
cmd=$2
[ -z "$2" ] && cmd="$name"
running=`/bin/ps | grep "$name" | grep -v "grep"`
if [ -z "$running" ]; then
logger -t ensure-proc "$name: restarting"
$cmd
fi
}

ensure dropbear

3) Если заниматься исследованием проблемы связанной с файрволом, то желательно физически находиться внутри него. Т.е. делаем коннект на фрю и с нее логинимся обратно и ищем где и почему что-то не так.

Pablo Escobar
30-03-2011, 19:40
те в логе dropbear больше не упоминался?
причем по возвращении dropbear в запущенных процессах присутствовал?

да, и пускает и изнутри, и с мобилки. в логе больше нет его.


1) если подозрения на защиту recent и у фри адрес статический, то его можно прописать в белый список (файл /usr/local/etc/ssh.allow ). Тогда на этот адрес/подсеть она не распространяется
зватра обязательно попробую и отпишусь. однако, почему один раз все-таки проскочил коннект, непонятно. случилось это после внесения исключения в виндовый файрволл.

2) если действительно падает dropbear, то можно в cron засунуть что-то подобное для его переподъема раз минут в 5-10:

уверен, что не падает, все стабильно.

3) Если заниматься исследованием проблемы связанной с файрволом, то желательно физически находиться внутри него. Т.е. делаем коннект на фрю и с нее логинимся обратно и ищем где и почему что-то не так.
да, точно, вот об этом как-то и не подумал.

завтра проверю, отпишусь, спасибо.

Pablo Escobar
31-03-2011, 07:46
В общем, все оказалось проще и дурнее.
Из-за глючного adsl интернета очень долго происходит соединение, и putty успевает отвалиться по таймауту.

А так - все работает.

TReX
21-04-2011, 00:19
500 gpV2 с прошивкой от энтузиастов 1.9.2.7-d-r1087.
нужен мне удаленный доступ снаружи по SSH.
регистрируюсь в dyndns - роутер извне пингуется нормально.
включаю в нем SSH на порту 443.
иду на nettols.ru, проверяю - говорит, что извне порт 443 закрыт.
включаю на роутере доступ к web морде по 8080.
пытаюсь извне в гуглхроме залезть на http:// мойдинднс:8080 - нет ответа от сервера.
что и где подкрутить чайнику?
спасибо.

А зачем выбирать порт зарезервированный под https? пробуйте порты выше 2000

vectorm
21-04-2011, 07:08
А зачем выбирать порт зарезервированный под https? пробуйте порты выше 2000
Автор вопроса не указал, "белый" ли у него адрес.
Может он совсем не роутер пингует.

mr-butch
20-07-2011, 06:08
Добрый день.

Заметил стабильное зависание роутера после удаленного подключения к нему по ssh. Причем виснет "намертво", так что после не из локалки, не из внешки к нему нет доступа (ни web, ни ssh, ни wi-fi, ни dhcp с него не работают). Только ping из локалки отвечает, если подключиться кабелем и назначить ip вручную. Помогает передергивание питания.
Не было ни одного раза чтобы не "повис". В остальных случаях работает сутки напролет.

В чем может быть причина?

P.S. Прошивка - 1.9.2.7-rtn-r3121.

Satoorn
21-07-2011, 23:31
Уже какой день бьюсь, не могу зайти из вне по ssh.
В веб интерфейсе всё что связанно с ssh отключено.
Настроено соединение ddns через no-ip.com
Прошивка последняя от энтузиастов. роутер wl-500gP

cat /tmp/local/sbin/post-boot
dropbear > /dev/null 2>&1


cat /tmp/local/sbin/post-firewall
iptables -P INPUT DROP
iptables -D INPUT -j DROP

#Исправляем низкую скорость PPTP
iptables -t nat -nvL POSTROUTING | grep MASQUERADE | awk '{
"ifconfig "$7" | grep Mask" | getline ip;
split(ip,ip,":"); split(ip[2],ip," ");
split($8,src,"!");
if (src[1]=="") {src="! -s "src[2]} else {src="-s "src[1]};
if ($9=="0.0.0.0/0") {dst=""} else {dst="-d "$9};
system("iptables -t nat -A POSTROUTING -o "$7" "src" "dst" -j SNAT --to-source "ip[1]);
system("iptables -t nat -D POSTROUTING -o "$7" "src" "dst" -j MASQUERADE");
}'

# ***ssh subsection begin***
#iptables -t raw -A PREROUTING -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 56789 -j REDIRECT --to-ports 22
# ***ssh subsection end***
iptables -A INPUT -j DROP


iptables -L -vn
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT all -- tun0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2613
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
2620 516K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
166 51485 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 SECURITY all -- ppp0 * 0.0.0.0/0 0.0.0.0/0 state NEW
57 8804 SECURITY all -- vlan1 * 0.0.0.0/0 0.0.0.0/0 state NEW
14 5190 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
40 3530 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

iptables -t nat -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 34 packets, 2597 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2613 to:192.168.25.1:2613
4 251 VSERVER all -- * * 0.0.0.0/0 94.24.196.21
0 0 VSERVER all -- * * 0.0.0.0/0 10.62.86.84
2 304 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:56789 redir ports 22
0 0 DNAT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:192.168.25.1:443


С локалки захожу и по 22 и по 56789 порту, хотя пытаюсь 22 дропать. С WAN ну ни в какую, пишет:
$ ssh ***.no-ip.info
ssh: connect to host ***.no-ip.info port 22: No route to host
Не пойму, почему не видно соединение по netstat?


netstat -na
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5431 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 10.62.86.84:1024 78.29.3.77:1723 ESTABLISHED
udp 0 0 0.0.0.0:1025 0.0.0.0:*
udp 0 0 0.0.0.0:514 0.0.0.0:*
udp 0 0 127.0.0.1:34954 0.0.0.0:*
udp 0 0 0.0.0.0:53 0.0.0.0:*
udp 0 0 0.0.0.0:67 0.0.0.0:*
udp 0 0 0.0.0.0:1900 0.0.0.0:*

TReX
22-07-2011, 03:07
Уже какой день бьюсь, не могу зайти из вне по ssh.
В веб интерфейсе всё что связанно с ssh отключено.
Настроено соединение ddns через no-ip.com
Прошивка последняя от энтузиастов. роутер wl-500gP
A для чего такие сложности или сэр любит стоя в гамаке и в акваланге? :D

Satoorn
22-07-2011, 10:15
Что вы увидели сложного?
Давайте по простому.

$ cat /tmp/local/sbin/post-firewall
#!/bin/sh

iptables -P INPUT DROP
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set --name SSH_ATTACKER --rsource
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 600 --hitcount 6 --name SSH_ATTACKER --rsource -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP


$ iptables -L -vn
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
2414 472K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
156 44601 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 SECURITY all -- ppp0 * 0.0.0.0/0 0.0.0.0/0 state NEW
44 10302 SECURITY all -- vlan1 * 0.0.0.0/0 0.0.0.0/0 state NEW
16 5846 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 recent: SET name: SSH_ATTACKER side: source
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 recent: UPDATE seconds: 600 hit_count: 6 name: SSH_ATTACKER side: source
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
26 4400 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

$ netstat -na
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5431 0.0.0.0:* LISTEN
tcp 0 0 10.62.86.84:1024 78.29.3.44:1723 ESTABLISHED
udp 0 0 0.0.0.0:1025 0.0.0.0:*
udp 0 0 0.0.0.0:514 0.0.0.0:*
udp 0 0 127.0.0.1:34954 0.0.0.0:*
udp 0 0 0.0.0.0:53 0.0.0.0:*
udp 0 0 0.0.0.0:67 0.0.0.0:*
udp 0 0 0.0.0.0:1900 0.0.0.0:*
По локалке захожу на 22 порт.
Почему 22 порт не прослушивается? Что ещё показать?

TReX
22-07-2011, 14:07
Что вы увидели сложного?
Давайте по простому. По локалке захожу на 22 порт.
Почему 22 порт не прослушивается? Что ещё показать?
Непонятен смысл всех приведенных выше телодвижений - увеличение скорости давно не актуально для текущих прошивок, поскольку патч тупо в них включен, все настройки ssh прекрасно работают и через web мордочку, поэтому вопрос - и зачем все выше перечисленные пляски с бубном? )

П.С. Для проброса наружу ssh лучше использовать например порт 1122 а не стандартный, бо большинство провайдеров стандатный давят, для безопасности, об этом опять же 1000 раз писалось )

Satoorn
22-07-2011, 15:50
При установке в веб морде и при выставлении доступа с WAN, зайти с внешки я не могу. По этому я и пробовал отключать в веб интерфейсе и прописать в исполняемые скрипты. Плюс я хотел пробросить (REDIRECT) на 22 порт, что бы оставить всё на своих портах и чтоб он был закрыт на внешку. У провайдера открыты порты. Ok.

$ iptables -L -vn

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT all -- tun0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2613
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
15639 3612K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
950 208K ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 SECURITY all -- ppp0 * 0.0.0.0/0 0.0.0.0/0 state NEW
585 134K SECURITY all -- vlan1 * 0.0.0.0/0 0.0.0.0/0 state NEW
89 33665 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:*****
484 99548 DROP all -- * * 0.0.0.0/0 0.0.0.0/0



$ netstat -na

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5431 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 10.62.86.84:1024 78.29.3.44:1723 ESTABLISHED
tcp 0 0 192.168.25.1:22 192.168.25.11:56784 ESTABLISHED
udp 0 0 0.0.0.0:1025 0.0.0.0:*
udp 0 0 0.0.0.0:514 0.0.0.0:*
udp 0 0 127.0.0.1:34954 0.0.0.0:*
udp 0 0 0.0.0.0:53 0.0.0.0:*
udp 0 0 0.0.0.0:67 0.0.0.0:*
udp 0 0 0.0.0.0:1900 0.0.0.0:*

TReX
22-07-2011, 16:25
При установке в веб морде и при выставлении доступа с WAN, зайти с внешки я не могу. По этому я и пробовал отключать в веб интерфейсе и прописать в исполняемые скрипты. Плюс я хотел пробросить (REDIRECT) на 22 порт, что бы оставить всё на своих портах и чтоб он был закрыт на внешку. У провайдера открыты порты.

Чудес не бывает, на последней прошивке использую SSH и снаружи и изнутри, все работает, поскольку пров режет порты то порт нестандартный, поменял в мордочке больше ничего не донастраивал...

Satoorn
22-07-2011, 16:32
Кинул в личку.
Личку почисти, не могу сообщение послать.

Из локалки то без проблем могу зайти, а с внешки: ssh: connect to host ****.no-ip.info port ****: No route to host.
Хочешь сказать прописывать маршрут до no-ip.com?

FilimoniC
22-07-2011, 23:53
Кинул в личку.
Личку почисти, не могу сообщение послать.

Из локалки то без проблем могу зайти, а с внешки: ssh: connect to host ****.no-ip.info port ****: No route to host.
Хочешь сказать прописывать маршрут до no-ip.com?

Ну собственно SSH тут не при чем.
Либо у вас no-ip глючит (посмотрите nslookup), либо ... либо... ну короче любое звено между А и Б

TReX
23-07-2011, 00:16
Кинул в личку.
Личку почисти, не могу сообщение послать.

Из локалки то без проблем могу зайти, а с внешки: ssh: connect to host ****.no-ip.info port ****: No route to host.
Хочешь сказать прописывать маршрут до no-ip.com?

Для начала проверить пинг на самого себя изнутри по внешнему адресу -
ping ****.no-ip.info, это должно работать, если пинг проходит, а соединение все равно нет, значит где то по дороге убивается фаирволом, скорее всего провайдера.
Либо самый тупой вариант у вас серый IP и вы за провайдерским NAT (пинги тогда не пройдут ))

Satoorn
23-07-2011, 08:07
Для начала проверить пинг на самого себя изнутри по внешнему адресу -
ping ****.no-ip.info, это должно работать, если пинг проходит, а соединение все равно нет, значит где то по дороге убивается фаирволом, скорее всего провайдера.
Либо самый тупой вариант у вас серый IP и вы за провайдерским NAT (пинги тогда не пройдут ))

Пинги у меня зарезаются настройкой iptables. Порты открыты у провайдера.
Вопрос решился сменой сервера c no-ip на ddns.
Доступ появился, надо было в строке писать логин на ddns, а не емейл.

Я прописал так:

cat /tmp/local/sbin/post-firewall
#!/bin/sh

iptables -P INPUT DROP
iptables -D INPUT -j DROP

iptables -A INPUT -p tcp --dport 12345 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 22 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 12345 -j REDIRECT --to-ports 22

iptables -A INPUT -j DROP
Почему? Стараюсь не менять стандартные порты у приложений.
Здесь идёт простой проброс с 12345 порта на 22. В то же время 22 порт прикрыт.

reiten
23-07-2011, 09:40
Почитайте, какие действия iptables предназначены для каких таблиц.
Например, в PREROUTING действия DROP быть не должно.

TReX
23-07-2011, 10:06
Почему? Стараюсь не менять стандартные порты у приложений.
Здесь идёт простой проброс с 12345 порта на 22. В то же время 22 порт прикрыт.

Веб-интерфейс и сделан для людей которым лень/нет сил/времени изучать iptables, так что либо понимайте что делаете, либо оставьте то, что сделали за вас те кто разобрался, иначе в лучшем случае будете иметь проблемы с соединением а в худшем светить всем в инет )

Satoorn
26-07-2011, 04:08
Веб-интерфейс и сделан для людей которым лень/нет сил/времени изучать iptables, так что либо понимайте что делаете, либо оставьте то, что сделали за вас те кто разобрался, иначе в лучшем случае будете иметь проблемы с соединением а в худшем светить всем в инет )
Спасибо за совет, но сделал как и писал ранее через REDIRECT, проблема была с хостингом no-ip.com, через него не проходили запросы. Поставил dyndns, всё сразу заработало в лучшем виде.
reiten, возможно, но как я понимаю, надо хотя бы выдержку из мана кидать (как я понял это - http://www.opennet.ru/docs/RUS/iptables/#PREROUTINGCHAIN), а не заявлять ничем не подтверждая. (raw у меня не работает, модуль нужен, на форуме не нашёл), но правило работает же. )

nat PREROUTING Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях.

nen777w
02-08-2011, 08:25
Как сделать telnet доступным из вне?
прошивка: 1.9.2.7-rtn-r3121
SSH не устраивает потому что в одном месте где мне нужен роутер его режут, и похоже на уровне протокола.
А вот telnet работает.
Спасибо.

FilimoniC
02-08-2011, 10:39
Как сделать telnet доступным из вне?
прошивка: 1.9.2.7-rtn-r3121
SSH не устраивает потому что в одном месте где мне нужен роутер его режут, и похоже на уровне протокола.
А вот telnet работает.
Спасибо.

Это примерно так же, как оставлять ключи в замке или выставлять жопу в окно с надписью Free Sex

max2007
02-08-2011, 11:00
Как сделать telnet доступным из вне?
прошивка: 1.9.2.7-rtn-r3121
SSH не устраивает потому что в одном месте где мне нужен роутер его режут, и похоже на уровне протокола.
А вот telnet работает.
Спасибо.
Ну наверное вот так
iptables -I INPUT -p tcp --dport 23 -j ACCEPT

TReX
13-09-2011, 17:05
В поле DMZ прописан IP адрес (с локалки захожу без проблем в обоих случаях):

Кто что подскажет или это в ветку разработчиков прошивки?
Пока IP не пробовал прописывать в Virtual Server с полным открытием портов, DMZ нужен для PS3.

Почитать книгу TCP/IP для чайников?

А ваши простыни лучше сразу постить на bash.org.ru, народ повеселите...

Satoorn
13-09-2011, 18:09
Носом можете ткнуть в мою ошибку? Или вы мои 2 последних поста даже не прочитали?

TReX
13-09-2011, 18:12
Носом можете ткнуть в мою ошибку? Или вы мои 2 последних поста даже не прочитали?

Изучаем что такое NAT и DMZ и сразу поймете что у вас и куда исчезает

Satoorn
13-09-2011, 18:26
Изучаем что такое NAT и DMZ и сразу поймете что у вас и куда исчезает

Я понимаю, что послать читать маны это простой вариант, помочь же тяжелее. Плюс у меня немного другой профиль и я тоже могу вас за пояс заткнуть, типа, учите закон ома или что такое разность потенциалов.
Спасибо за совет, я попробую сам разобраться, а вам совет, спуститесь на землю. Если в ближайшее время никто не ответит, потру посты, так что копируйте для башорга. )

smi
13-09-2011, 19:36
Я понимаю, что послать читать маны это простой вариант, помочь же тяжелее. А зачем вы включаете функцию, совершенно не понимая, как она работает? Вы включили перенаправление ВСЕХ ВХОДЯЩИХ соединений на вашу PS3 и какого результата вы ожидали? У вас на PS3 на порту 5222 есть ssh?


Плюс у меня немного другой профиль и я тоже могу вас за пояс заткнуть, типа, учите закон ома или что такое разность потенциалов. :D А не подскажите, почему я операционник в розетку пихаю, хочу усислить напругу из розетки, а он взрывается и пробки вышибает? Что я делаю не так? :p


Если в ближайшее время никто не ответит, потру посты, так что копируйте для башорга. ) Удалите, если не сложно, инфы в них нет, а очень объемны. Вы если что надо еще будет, не пихайте простыни в текст, а прикрепите как файлы вложения ;)

Satoorn
13-09-2011, 20:01
А зачем вы включаете функцию, совершенно не понимая, как она работает? Вы включили перенаправление ВСЕХ ВХОДЯЩИХ соединений на вашу PS3 и какого результата вы ожидали? У вас на PS3 на порту 5222 есть ssh?
Я ожидал, что именно для PS3 всё будет открыто. Не хочу прописывать отдельные порты, проще же записать в DMZ. Я не прав?


:D А не подскажите, почему я операционник в розетку пихаю, хочу усислить напругу из розетки, а он взрывается и пробки вышибает? Что я делаю не так? :p
Розетка высоковольтная ))) Уменьшите напругу раз в 15.


Удалите, если не сложно, инфы в них нет, а очень объемны. Вы если что надо еще будет, не пихайте простыни в текст, а прикрепите как файлы вложения ;)
Ок.

ps. smi спасибо за фразу "перенаправление ВСЕХ ВХОДЯЩИХ", прописал в Virtual Server порты для нужных мне служб, а в DMZ прописал PS3, вроде всё работает. Надеюсь правильно сделал. Я думал, если я в DMZ пропишу IP, то все порты будут открыты только на нём, а другие машины в локальной сети будут работать по остальным правилам и DMZ их не затронет.

vectorm
13-09-2011, 20:52
Я ожидал, что именно для PS3 всё будет открыто. Не хочу прописывать отдельные порты, проще же записать в DMZ. Я не прав?

Да, так оно и есть - весь трафик заворачивается на PS3.
Все остальные правила, прописанные ПОСЛЕ DMZ - пустая трата текста, потому, что не обрабатываются системой ВООБЩЕ.
Это все равно, что надеяться, распилив трубу с водой, и отнеся второй конец трубы подальше, что до него дойдет хоть часть воды (с электричеством аналогии в голову не пришло).

olegmilantiev
24-10-2011, 07:59
Что-то подвисает у меня ssh при входе в роутер. Причём, заходишь на второй аналогичный, тоже на скайлинке - всё ок, а в мой можно несколько минут ждать, пока зайдёт. Уж весь гугл вскопал, не пойму причину.

Oct 24 06:23:01 dropbear[573]: Child connection from 77.108.х.х:61464
и так может несколько минут висеть

Закрываешь ssh (putty), в логах появляется
Oct 24 06:23:34 dropbear[573]: Exit before auth: Exited normally
типа, всё нормально.

Пробовал телнет на 22 порт, моментально выдаёт
SSH-2.0-dropbear_0.53.1
пишет в лог то, что указано выше и висит.

Пробовал очистить firewall (iptables -F) то же. Пробовал перевесить dropbear на другой порт, то же.

Будь то "большой линух", там надо reverse dns выключить, но dropbear не ресолвит адрес клиента, такой настройки не имеет вовсе... Уже пробовал на флешку dropbear ставить и из прошивки пробовал - без толку.

Щас попробую переформатировать флешку, но что-то подсказывает, что не в этом дело.... (не помогло).

И ещё дико тормозит родной веб снаружи (вход изнутри по ssh / web сейчас проверить не могу, роутер на даче). Симптомы очень похожие. Вот сейчас даже не могу зайти глянуть номер прошивки. В то же время thttpd на 8080 откликается моментально и достаточно заметные объёмы прокачивает (временно, для экспериментов и его уже снёс). И ssh, если зайдёт, работает шустро и интерактивно, в рамках возможностей скайлинка.

Перезапуск httpd не помогает.
Перезапуск роутера не помогает.
Перепрошить удалённо с учётом плохой открываемости родного веба не могу - не знаю как из консоли, да и модем может не подняться.


[me@WL-BCAEC5C342EA root]$ uname -a
Linux WL-BCAEC5C342EA 2.6.22.19 #2 Fri Sep 16 22:44:34 MSK 2011 mips GNU/Linux

... никак не доберусь до страницы где посмотреть прошивку. Веб снаружи вообще невозможно использовать
Предположительно RT-N-1.9.2.7-rtn-r3300 (2011-09-16) , что совпадает с датой выдаваемой uname -a.

ConstAntz
24-10-2011, 08:04
никак не доберусь до страницы где посмотреть прошивку
cat /.version

olegmilantiev
24-10-2011, 08:07
cat /.version

Спасибо

[me@WL-BCAEC5C342EA root]$ cat /.version
1.9.2.7-rtn-r3300

Совпало с моим предположением.

Второй роутер, тоже asus wl500gpV2 (забыл написать же...) прошит той же прошивкой.

------

Самое простое предположение, что связь плохая не оправдывается

[me@WL-BCAEC5C342EA root]$ ping ya.ru
PING ya.ru (93.158.134.3): 56 data bytes
64 bytes from 93.158.134.3: seq=0 ttl=60 time=120.811 ms
64 bytes from 93.158.134.3: seq=1 ttl=60 time=172.255 ms
64 bytes from 93.158.134.3: seq=2 ttl=60 time=192.142 ms
64 bytes from 93.158.134.3: seq=3 ttl=60 time=275.298 ms
64 bytes from 93.158.134.3: seq=4 ttl=60 time=352.442 ms
64 bytes from 93.158.134.3: seq=5 ttl=60 time=140.272 ms
64 bytes from 93.158.134.3: seq=6 ttl=60 time=153.234 ms
64 bytes from 93.158.134.3: seq=7 ttl=60 time=192.240 ms
64 bytes from 93.158.134.3: seq=8 ttl=60 time=149.237 ms
64 bytes from 93.158.134.3: seq=9 ttl=60 time=137.250 ms
64 bytes from 93.158.134.3: seq=10 ttl=60 time=149.255 ms
64 bytes from 93.158.134.3: seq=11 ttl=60 time=133.241 ms
64 bytes from 93.158.134.3: seq=12 ttl=60 time=305.246 ms
64 bytes from 93.158.134.3: seq=13 ttl=60 time=144.247 ms

К тому же, все другие сервисы (thttpd, mjpg_streamer -o output_http) работают хорошо.

lly
24-10-2011, 08:15
http://thread.gmane.org/gmane.network.ssh.dropbear/1068

У меня проблема не воспроизводится, без этого помочь практически невозможно.

olegmilantiev
24-10-2011, 08:19
http://thread.gmane.org/gmane.network.ssh.dropbear/1068

У меня проблема не воспроизводится, без этого помочь практически невозможно.
Спасибо за ссылку.
Я пока не собирал пакеты под мипс. А кто собирал, может собрать мне с закоментированным


In options.h search for #define DO_HOST_LOOKUP and comment it out.

?

Я только не особо пойму, как это может помочь хорошей работе встроенного веба. Судя по совпадающим симптомам, проблема растёт из одного и того же места. К примеру, слишком большой mtu / mru для этого модема..

lly
24-10-2011, 08:24
Спасибо за ссылку.
Я пока не собирал пакеты под мипс. А кто собирал, может собрать мне с закоментированным


In options.h search for #define DO_HOST_LOOKUP and comment it out.

Перед тем как что-то менять, было бы неплохо глянуть, а как оно уже есть...

http://code.google.com/p/wl500g/source/browse/trunk/dropbear/000-build.patch#40

olegmilantiev
24-10-2011, 08:26
Перед тем как что-то менять, было бы неплохо глянуть, а как оно уже есть...

http://code.google.com/p/wl500g/source/browse/trunk/dropbear/000-build.patch#40

Отлично. Это отпадает, стало быть.
Копаем дальше. Идеи? Я второй день гуглю, новых мыслей пока нет.

lly
24-10-2011, 08:32
Копаем дальше. Идеи? Я второй день гуглю, новых мыслей пока нет.
В зависимости от того, кто чего лучше знает.

Я бы взялся за strace/gdb, т.к. iptables знаю гораздо хуже. Но, судя по симптомам, общим с httpd, похоже надо браться именно за iptables.

olegmilantiev
24-10-2011, 12:16
В зависимости от того, кто чего лучше знает.

Я бы взялся за strace/gdb, т.к. iptables знаю гораздо хуже. Но, судя по симптомам, общим с httpd, похоже надо браться именно за iptables.

Я начал проверку с
iptables -F
iptables -t nat -F
iptables -t mangle -F

то есть с полной очистки firewall.
Проверил все таблицы, везде policy: ACCEPT, то есть iptables не используется вовсе.

Мне вообще осталось вернуть роутер к заводским и проверить на них, но это смогу сделать только на выходных, поеду на дачу. Хотел что-то ещё попробовать до этого.

olegmilantiev
24-10-2011, 12:35
Я бы взялся за strace
Не сказать, что я прям знаю strace, но ... вдруг Вам что-то подскажет трейс.

strace -ff -o /opt/s dropbear -F -p 2222 -4


_newselect(4, [3], NULL, NULL, NULL) = 1 (in [3])
accept(3, {sa_family=AF_INET, sin_port=htons(60476), sin_addr=inet_addr("77.37.х.х")}, [16]) = 5
pipe([0, 2139856048]) = 6
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGC HLD, child_tidptr=0x2aab0068) = 570
close(7) = 0
close(5) = 0


Вот он форкнулся...
начал писать трейс в отдельный файл

time([1319455840]) = 1319455840
open("/etc/TZ", O_RDONLY) = 8
read(8, "GMT0\n", 68) = 5
close(8) = 0
send(4, "<86>Oct 24 11:30:40 dropbear[570"..., 76, MSG_NOSIGNAL) = 76
setsid() = 570
close(3) = 0
close(6) = 0
gettimeofday({1319455840, 527648}, NULL) = 0
pipe([0, 0]) = 3
fcntl64(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
fcntl64(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
time(NULL) = 1319455840
brk(0x450000) = 0x450000
rt_sigaction(SIGCHLD, {SIG_IGN, [FPE SEGV PIPE ALRM TERM USR1 CHLD STOP RT_49 RT_65 RT_66 RT_67], SA_SIGINFO|SA_NOCLDWAIT|0x407c74}, NULL, 16) = 0
time(NULL) = 1319455840
getpeername(5, {sa_family=AF_INET, sin_port=htons(60476), sin_addr=inet_addr("77.37.x.x")}, [16]) = 0
getpeername(5, {sa_family=AF_INET, sin_port=htons(60476), sin_addr=inet_addr("77.37.x.x")}, [16]) = 0
write(5, "SSH-2.0-dropbear_0.53.1\r\n", 25) = 25
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {0, 846000})
time(NULL) = 1319455840
read(5, "S", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "S", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "H", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "-", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "2", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, ".", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "0", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "-", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "O", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "p", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "e", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "n", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "S", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "H", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "_", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "5", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, ".", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "4", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "\r", 1) = 1
_newselect(6, [5], NULL, NULL, {1, 0}) = 1 (in [5], left {1, 0})
time(NULL) = 1319455840
read(5, "\n", 1) = 1
_newselect(7, [3 5], [5], NULL, {300, 0}) = 1 (out [5], left {300, 0})
time(NULL) = 1319455840
write(5, "\0\0\1\234\4\24\307\202\223o\377\303\212x\221\2468 \276w\312\0\252\0\0\0006diffie"..., 416) = 416
time(NULL) = 1319455840
_newselect(7, [3 5], [], NULL, {300, 0}) = 1 (in [5], left {299, 801000})
time(NULL) = 1319455840
read(5, "\0\0\3L\6\24'M", 8) = 8
read(5, "\252\305Y\332\3048=P\224\262\330\35\1\260\0\0\0~di ffie-hellman"..., 840) = 840
time(NULL) = 1319455840
brk(0x451000) = 0x451000
brk(0x452000) = 0x452000
_newselect(7, [3 5], [], NULL, {300, 0}


и залип... больше ничего не пишет, ждёт чего-то.
Пробовал заходить с использованием putty с винды или openssh с линуха. Эффект схожий.

Вот, прикола для, посидел и посмотрел на неизменный трейс в течение пяти минут.

lly
24-10-2011, 13:03
Не сказать, что я прям знаю strace, но ... вдруг Вам что-то подскажет трейс.

Ну, как минимум, ситуация отличается от описанной на форуме dropbear.

Предложения два:

таки обновится до r3497, т.к. были поправлены баги в uClibc
собрать dropbear c DEBUG_TRACE. Если сам не можешь, сделаю на досуге.


P.S. А раньше(до r3300) как работало?

olegmilantiev
24-10-2011, 14:00
Ну, как минимум, ситуация отличается от описанной на форуме dropbear.

Предложения два:

таки обновится до r3497, т.к. были поправлены баги в uClibc
собрать dropbear c DEBUG_TRACE. Если сам не можешь, сделаю на досуге.


P.S. А раньше(до r3300) как работало?

А раньше роутера не было :). Сразу начал с r3300.
Удивительно другое. Я сразу настроил роутер себе и знакомому. Купил два одинаковых wl500gpv2, залил в оба r3300. У него только скайлинк модем другой модели, а так то же самое. К нему заходит на ура, ко мне тупит.

Ладно, до субботы тогда. В субботу буду на месте, залью r3497, сброшу установки, первым делом проверю вход снаружи по ssh / web. Сообщу.

olegmilantiev
29-10-2011, 15:47
Сижу возле роутера. Не понимаю...

Вернул его в Factory Settings.
Прошил новой прошивкой


cat /.version
1.9.2.7-rtn-r3497

затруднения с соединением по ssh остались. Где-то раз из 10 можно зайти. 9 из 10 "висят" пока не прервёшь.

Из мыслей только попробовать мой скайлинк-модем на аналогичном роутере знакомого, которому я ставил 3300 и чуток своего софта. У которого подобной проблемы нет.

Из минусов r3497... или это обновили php-thttpd. Но перестал работать консольный php, а я им пользуюсь...


php
php: can't load library 'libuClibc++.so.0'


Веб снаружи пробросил средствами интерфейса, проверю из дома (через часа 3...4).

vostokvostok
04-01-2012, 18:03
WL500g
Как создать несколько пользователей без прав админов для доступа по SSH? Для тунелей.

Как создать несколько пользователей без прав админов для доступа по SSH в WL500g. Хочу допустить пользователей только до определённой машины в локальной сети , прокинув до неё туннели.

tosick
29-01-2012, 14:48
Прошивка Dir-320 (Vampik 1.9.2.7-d-r3591M). Возможно ли на внешнем интерфесе поднять ssh тунель до некоего сервера с пробросом всех портов? Допустим провайдер выдает интернет по VPN. Если VPN не работает, а доступ к локалке имеется, то роутер должен уметь поднять ssh -тунель с пробросом всех портов на некий ssh-сервер, имеющий выход в интернет. Т.о., соединившись с роутером по wifi получить возможность выхода в интернет.

bidfal
16-02-2012, 06:43
Доброе время суток.

Необходимо сделать доступ из внешней сети к роутеру. Статик ип есть. Роутер Wl500 gp v2. Прошивка WL500gpv2-1.9.2.7-rtn-r3702.trx.

Подскажите актуальную информацию как это сделать. Актуальна ли инструкция из темы Инструкция по настройке роутера WL-500gP с нуля (http://wl500g.info/showthread.php?t=3171)? Необходимо ли прописывать какие-либо правила в iptables? В веб-интерфейсе есть возможность настроить доступ по ssh, в чем отличия от способа в инструкции?

TReX
16-02-2012, 06:59
Доброе время суток.

Необходимо сделать доступ из внешней сети к роутеру. Статик ип есть. Роутер Wl500 gp v2. Прошивка WL500gpv2-1.9.2.7-rtn-r3702.trx.

Подскажите актуальную информацию как это сделать. Актуальна ли инструкция из темы Инструкция по настройке роутера WL-500gP с нуля (http://wl500g.info/showthread.php?t=3171)? Необходимо ли прописывать какие-либо правила в iptables? В веб-интерфейсе есть возможность настроить доступ по ssh, в чем отличия от способа в инструкции?

Все можно сделать через веб интерфейс, плюс желательно настроить DYNDNS для того чтобы обращаться по имени а не адресу

skVoID
11-05-2012, 10:31
Не подскажите в чем дело - после перехода на новый репозитарий (исполнения скрипта entware_install.sh), ни одна команда (через SSH) не выполняется - пишет 'can't handle reloc type 47'. Проблема началась еще в скрипте (на строке 'rm -fr /opt/tmp/*', до этого все прошло и установилось). Что это? Проблема нехватки памяти?

Роутер WL-500gP, прошивка 1.9.2.7-d-r1000. (По поиску форума искал, ничего похожего не нашлось в темах.)

MercuryV
11-05-2012, 12:03
Роутер WL-500gP, прошивка 1.9.2.7-d-r1000.
AFAIK, на настолько раритетной прошивке не взлетит. Для использования нового репозитория нужно перейти на актуальную прошивку из -rtn ветки.

skVoID
11-05-2012, 12:17
AFAIK, на настолько раритетной прошивке не взлетит. Для использования нового репозитория нужно перейти на актуальную прошивку из -rtn ветки.

Понял.
А скажите RT-N16-1.9.2.7-rtn-r3158 точно встанет на WL-500gP (роутер еще первой версии)? Или лучше поставить WL500gp-1.9.2.7-d-r3253.

Vampik
11-05-2012, 12:18
Понял.
А скажите RT-N16-1.9.2.7-rtn-r3158 точно встанет на WL-500gP (роутер еще первой версии)? Или лучше поставить WL500gp-1.9.2.7-d-r3253.

Зачем вам прошивка для RT-N16, да еще и старой версии, если есть WL500gp-1.9.2.7-rtn-r4051?
http://code.google.com/p/wl500g/downloads/detail?name=WL500gp-1.9.2.7-rtn-r4051.trx&can=2&q=

skVoID
11-05-2012, 12:21
AFAIK, на настолько раритетной прошивке не взлетит. Для использования нового репозитория нужно перейти на актуальную прошивку из -rtn ветки.


Зачем вам прошивка для RT-N16, да еще и старой версии, если есть WL500gp-1.9.2.7-rtn-r4051?
http://code.google.com/p/wl500g/downloads/detail?name=WL500gp-1.9.2.7-rtn-r4051.trx&can=2&q=

Да, спасибо, это я невнимательно скопипэйстил.
Сейчас попробую поставить.

skVoID
12-05-2012, 07:26
Добрый день, помогите советом или просьба слегка подправить скрипт, потому как при его выполнении если происходит коннект к хосту с ip адресом 77.88.21.83:80 то дальнейшая установка скрипта невозможна, либо проходит с ошибками, так как указанный хост не отвечает. Раньше все ставилось на ура, делал установку на прошлый хард-пока не полетел. Rung -помоги пожалуйста, не хотелось бы optware и все остальное прикручивать по отдельности руками ! :)
Да, увы, из-за проблем с коннектом к хосту 77.88.21.83:80 всё ставится жутко криво, т.е. можно сказать скрипт не работает :(
Уважаемые, может у кого-нибудь слит контент для скрипта, который был по адресу 77.88.21.83 (файлы rc.unslung; _lighttpd.conf; cgi-bin.tar.gz; etc)?
Поделитесь пожалуйста... а то смысл скрипта и этой ветки похоже утрачен. (Странно сам адрес пингуется, но нужных файлов там нет или не отдаются).

sapper1982
19-02-2016, 08:04
Здравструйте! Мне необходимо с комьютера получить статистику трафика роутера командой «ssh 192.168.1.1 -p 22 -l root ifconfig».
Авторизация по ключу на роутере настроена. При этом данная команда возвращает ошибку, т.к. не находит ifconfig.
Работает вот этот вариант «ssh 192.168.1.1 -p 22 -l root '/sbin/ifconfig'».

Подскажите, как настроить роутер, чтобы работал первый вариант команды «ssh 192.168.1.1 -p 22 -l root ifconfig»?

dansoftware
19-02-2016, 17:17
sapper1982, попробуйте: "ssh 192.168.1.1 -p 22 -l root 'PATH=$PATH:/sbin; ifconfig'".