Page 5 of 15 FirstFirst ... 34567 ... LastLast
Results 61 to 75 of 225

Thread: Remote ssh access

  1. #61
    Quote Originally Posted by Mam(O)n View Post
    Внимательнее, товарищи
    #!/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..
    теперь все как надо.

  2. #62
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    У меня в результате получился такой вариант начальной части post-firewall, который делает следующее:

    1) Все действия по ssh порту вынесены в отдельный SSH_EVAL chain (насколько я понимаю так снижается количество проверок выполняемых iptables при выполнении _каждого_ соединения. Если запрос приходит на ssh порт, то на здоровье пусть хоть 100 правил проверяет...)
    2) Созданы "белый" и "черный" списки адресов (какая польза от черного не знаю, но сделал для полноты картины). По тем IP которые находятся в этих списках решение принимается до проверки ipt_recent
    3) Первое обновление recent перенесено из PREROUTING в тот же SSH_EVAL chain. Теперь оно выполняется только на тех соединениях, которые идут на ssh и не были отфильтрованы двумя вышеуказанными списками.
    PHP Code:
    #!/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 -! $-p tcp -m state --state NEW --dport $SSH_PORT -m recent --set --name SSH_ATTACKER --rsource
    iptables 
    -A SSH_EVAL -! $-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 содержат следующиее (сам адрес стоит в начале строки, потом пробел, потом любой комментарий):
    PHP Code:
    12.34.56.78          разрешить/запретить доступ с одиночного IP
    87.65.43.0
    /24        разрешить/запретить доступ с подсетки 
    P.S. Напоминаю, что модуль ipt_recent.o должен быть загружен в файле /usr/local/sbin/pre-boot

    Так что в файле pre-boot должно стоять либо ( для использования встроенного в прошивку ipt_recent ):
    PHP Code:
    insmod ipt_recent 
    либо ( для использования ipt_recent от Mam(o)n : http://wl500g.info/showpost.php?p=69660&postcount=53 )
    PHP Code:
    date 010101012000
    insmod 
    /usr/local/lib/ipt_recent.
    Last edited by al37919; 03-02-2008 at 11:00.

  3. #63
    Quote Originally Posted by gsnake View Post
    OOOOPS..
    теперь все как надо.
    поставил openvpn, все вроде без проблем..
    и вопросов совсем пока нет..

    Всем огромное спасибо! Особенно Мам(он)у!!

  4. #64
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788

    Thumbs up

    Quote Originally Posted by al37919 View Post
    2 Mam(o)n --- как оценишь данное решение?
    Решение замечательное, правильное, оптимизированное. Всё организовано и упорядочено. Но заморочено Его хорошо применять при динамически составляющихся и немалых по объему white и black списках, но если вего-лишь нужно за-white-листить пару айпи со своей работы то имхо проще пару команд в post-firewall добавить

  5. #65
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    Спасибо, за добрые слова. Я в iptables начал не так давно что то понимать, так что мнение эксперта для меня важно.
    Да и когда я основательно все перечислил у меня список почти на десяток получился Правда можно, конечно, оставить пару-тройку, зайдя с которых можно открыть на любой нужный --- но это как то неспортивно.
    Last edited by al37919; 20-11-2007 at 07:10.

  6. #66
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    Quote Originally Posted by al37919 View Post
    Я в iptables начал не так давно что то понимать, так что мнение эксперта для меня важно.
    Да какой там из меня эксперт. Я то с *nix'ом сам всего лишь год с небольшим назад как познакомился и до сих пор в шоке от его потенциала. И всё благодаря этой коробочке с прошивкой Олега. Олегу за это отдельный респект

    Quote Originally Posted by al37919 View Post
    ... да и проверка идти по всем адресам --- лишние накладные расходы. Нет ли там варианта самоочистки от бесполезной информации. Или эта таблица из себя что то вроде лога представляет?
    Нет, это не лог. Это так сказать проекция рабочей таблицы. Пока в тонкости работы ipt_recent я не углублялся, но поверхностно глянув в мануал, решения пока не увидел. Сходу в качестве варварского альтернативного способа можно в крон добавить команду очистки всей таблицы: echo clear > /proc/net/ipt_recent/SSH_ATTACKER. Или же можно периодично, с помощью того же крона, чистить таблицу избирательно, только устаревшие записи:
    Code:
    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. В оригинальном же модуле отсчет ведётся в попугаях (jiffies) и похоже, что относительно запуска программы.

  7. #67
    что-то не пойму как работает 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----

  8. #68
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    ssh не работает из-зи правила iptables -A INPUT -j DROP , которое не дает выполняться ничему после него. Его надо убрать, т.к. все равно стоит iptables -P INPUT DROP

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

  9. #69
    Quote Originally Posted by al37919 View Post
    ssh не работает из-зи правила iptables -A INPUT -j DROP , которое не дает выполняться ничему после него. Его надо убрать, т.к. все равно стоит iptables -P INPUT DROP

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

  10. #70
    Join Date
    Jun 2007
    Location
    Санкт-Петербург
    Posts
    244

    не могу залогиниться через ssh, если в /etc/pwd оболочка не /bin/sh

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

  11. #71
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    1) /etc/passwd
    2) login шелы должны быть перечислены в /etc/shells
    странно, что через теленет --- ОК

  12. #72
    Join Date
    Jun 2007
    Location
    Санкт-Петербург
    Posts
    244
    спасибо, получилось. Сможет ли хакер взломать роутер, если будет знать пароль от portforwarder? Например копировать файлы по sftp? Мне надо, чтобы под этим юзером можно было только пробрасывать порты. Пароль мне придется сохранить на клиенте, откуда его могут украсть
    /etc/passwd:
    Code:
    portforwarder:*******:98:98:nobody:/:/bin/nologin
    /etc/shells:
    Code:
    /bin/nologin

  13. #73
    Join Date
    Jun 2007
    Location
    Санкт-Петербург
    Posts
    244
    а можно вместо пароля сделать ключ и ассоциировать его с юзером portforwarder?

  14. #74
    сломать просто если есть доступ на чтение к /etc/passwd и для шифрования используется алгоритм md5.
    какой у нас исспользуется не скожу, посмотреть сейчас не могу.
    vim имеет два режима - бибикать и все портить (с) не мое

  15. #75
    посмотрел у нас не md5
    vim имеет два режима - бибикать и все портить (с) не мое

Page 5 of 15 FirstFirst ... 34567 ... LastLast

Similar Threads

  1. Enable Web Access from WAN? YES-NO. Работает ли защита?
    By michaelV in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 38
    Last Post: 08-10-2013, 04:55
  2. Проблемы с RAdmin и Remote Desktop
    By dmitrych in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 184
    Last Post: 13-04-2013, 16:44
  3. [HowTo]Aria2 Torrent, FTP, HTTP mit Remote Control
    By newbiefan in forum German Discussion - Deutsch (DE)
    Replies: 3
    Last Post: 08-01-2012, 19:15
  4. Can't access my firmware
    By juvealerts in forum WL-500g Q&A
    Replies: 1
    Last Post: 10-11-2008, 16:11
  5. Access to NAS in LAN from WAN
    By Hexabyte in forum WL-500g Custom Development
    Replies: 1
    Last Post: 01-04-2008, 06:14

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •