LinuxForum.Fans
Тема

Как закрыть telnet в lenny

Автор: waldi 34 сообщений 10284 просмотров
#109699
voral написал:
Давайте разбираться какие порты у вас открыты.

зачем вы людей-то путаете? :(
lsof -i показывает вовсе не открытые/закрытые порты, а порты, которые слушаются серверами:
например:

text
X          1904   root    3u  IPv4   6861      0t0  TCP *:x11 (LISTEN)

Видите? Сервер X слушает свой порт. Что вовсе не говорит о том, что этот порт открыт. Он у меня закрыт. Открытость портов показывает команда
[console]iptables -L[/console]
можете сами посмотреть набрав
[console]telnet drbatty.no-ip.org 6000[/console]
хотя вот это - работает:
[console]telnet drbatty.no-ip.org 80[/console]
Для того, что-бы был отклик, нужно 2 вещи:
1) открытый порт
2) сервер - программа, которая слуша5ет этот порт.

#109706
drBatty написал:

зачем вы людей-то путаете? :(
lsof -i показывает вовсе не открытые/закрытые порты, а порты, которые слушаются серверами:

что ж вы сегодня активный то какой? ;)
Тем не менее идем по шагам и (хорошо я переформулирую задачу) определим порты которые кемто слушаются.... (те две команды)
Давайте идти по порядку и не спеша. Чтоб решение было понято, а не принято.
Так ок?

#109712
waldi написал:
Говорят,что отклик сервера на команду 'telnet ip-адрес порт', когда выводится инфа о системе - это подарок злоумышленнику, правда

SAGE

voral написал:
Так ок?

Угу. Только нам ТС ничего не скажет. Он даже боится сказать, какой порт он пробивает telnet'ом. И что ему такое пишут?

waldi, вы можете наконец сказать, ЧТО вы пробиваете? Да, и кстати, на большинстве серверов программы пишут правду. И они не ломаются. Вы-бы лучше занялись чем-либо полезным, например проверили все обновления. Вот эту например: http://www.opennet.ru/openforum/vsluhforumID3/35956.html А закрывать имена ПО - глупо (смысла нет - от того, что вы напишете Windows 95 OSR2 RUS ваша система не станет надёжнее и безопаснее).

#109722
waldi написал:
В нете прочитал, что возможно сломать сервер через службу telnet.
Говорят,что отклик сервера на команду 'telnet ip-адрес порт', когда выводится инфа о системе - это подарок злоумышленнику, правда пишут, что нужно отредактировать содержимое файла issue, чтобы отклик был помягче, но отклик покороче все равно будет

еще проще, даже порт не нужен wink

Показать
[console]
BCM96XXX ADSL Router
Login: wwwuser
Password:
> help

?
help
logout
reboot
adsl
atm
brctl
cat
ddns
df
dumpcfg
echo
ifconfig
kill
arp
defaultgateway
dhcpserver
dns
lan
passwd
ppp
remoteaccess
restoredefault
route
save
swversion
wan
ping
ps
pwd
sntp
sysinfo
tftp

> sysinfo
Number of processes: 24
1:11am up 1:11,
load average: 1 min:0.00, 5 min:0.00, 15 min:0.00
total used free shared buffers
Mem: 5896 5384 512 0 92
Swap: 0 0 0
Total: 5896 5384 512
> ifconfig
br0 Link encap:Ethernet HWaddr 00:21:91:XX:XX:XX
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32702 errors:0 dropped:0 overruns:0 frame:0
TX packets:31916 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5512538 (5.2 MiB) TX bytes:18462568 (17.6 MiB)

eth0 Link encap:Ethernet HWaddr 00:21:91:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32666 errors:0 dropped:0 overruns:0 frame:0
TX packets:31957 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6098870 (5.8 MiB) TX bytes:18669305 (17.8 MiB)
Interrupt:23 Base address:0x2800

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

nas_0_8_35 Link encap:Ethernet HWaddr 00:21:91:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21278 errors:0 dropped:0 overruns:0 frame:0
TX packets:19947 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15011682 (14.3 MiB) TX bytes:4273643 (4.0 MiB)

ppp_0_8_35_1 Link encap:Point-Point Protocol
inet addr:82.XXX.XXX.XXX P-t-P:212.16.203.13 Mask:255.255.255.
255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:20658 errors:0 dropped:0 overruns:0 frame:0
TX packets:19374 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:14817456 (14.1 MiB) TX bytes:3619263 (3.4 MiB)

> logout
Bye bye. Have a nice day.
[/console]
#109724
Termo написал:
еще проще, даже порт не нужен

это если есть telnet-сервер, который висит на стандартном 23м порте. в вашем роутере такой есть. А вот ТС удалил этот сервер. Потому у него не сработает без порта.

#109726

понятно

#109901

Я дико извиняюсь, но кто такой TC? smile

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

все-таки что плохого в подавлении отклика хоста, ведь легко же подавить отклик апача в броузере, пусть не отвечает, кто он

Аналогично, логически рассуждая, можно и нужно подавить отклик мускуля при попытке подключения телнет к 3306 порту и т д

#109908
waldi написал:
Я дико извиняюсь, но кто такой TC?

это вы - топик-стартер. Тот кто тему начал. Да, алсо "тема" значит "сабж".

waldi написал:
все-таки что плохого в подавлении отклика хоста, ведь легко же подавить отклик апача в броузере, пусть не отвечает, кто он

плохого тут ничего нет. просто есть вещи намного важнее. Если вам совсем уж делать нечего, за chroot'те ваши серверы. Есть ещё разные меры безопасности, к примеру вынесение всех разделов отдельно, и монтирование их с noexec,nosuid,nodev (кроме /usr & /). Это приведёт к тому, что злоумышленник не сможет запускать свои эксплоиты - вход в /usr и / он не имеет, а в других каталогах ничего не запускается. Атрибуты неплохо выставить в 4711 для SUID файлов, тогда враг не сможет их читать, а значит - будет применять эксплоиты лишь наугад. Неплохо сделать оповещение себя по SMS в случае атаки. Да много чего можно сделать... А менять имена... Это не задача первой необходимости. Как и удаление компилятора - враг может вам отправить уже собранный у себя эксплоит.

waldi написал:
Аналогично, логически рассуждая, можно и нужно подавить отклик мускуля при попытке подключения телнет к 3306 порту и т д

не проще-ли не открывать порт 3306 наружу? Зачем вам это надо?

#110272

не проще-ли не открывать порт 3306 наружу? Зачем вам это надо?

Большое спасибо за советы и подсказки!!!
У меня сайт на сервере написан на пхп, ежедневно десятки- сотни клиентов регистрируются в базе мускульной, подключение к базе идет через пхп-шную функцию pconnect() в скриптах.
Поясните, пожалуйста, как отключить порт мускуля, через iptables или как-то более радикально?
И будет ли работать сайт после этого или это будет видно в процессе эксперимента, отключить порт и посмотреть, будет ли сайт работать?

#110280
waldi написал:
У меня сайт на сервере написан на пхп, ежедневно десятки- сотни клиентов регистрируются в базе мускульной, подключение к базе идет через пхп-шную функцию pconnect() в скриптах.
Поясните, пожалуйста, как отключить порт мускуля, через iptables или как-то более радикально?
И будет ли работать сайт после этого или это будет видно в процессе эксперимента, отключить порт и посмотреть, будет ли сайт работать?

у вас ГДЕ скрипт, и ГДЕ база? На одном сервере? В таком случае, для скрипта это localhost. И естественно, закрыв порт СНАРУЖИ, вы не помешаете работе сайта. Ну разве только если у вас скрипты и база на разных серверах.

waldi написал:
ежедневно десятки- сотни клиентов регистрируются в базе мускульной

я рад за вас. У вас хоть один клиент напрямую работает с БД? Или все через этот (или любой другой) скрипт?

вот вам пример: зайдите на http://drbatty.no-ip.org (это мой локальный компьютер), и можете там хоть месяц регистрироваться. Хотя порты там ВСЕ закрыты (кроме http 80). можете просканировать, если не верите, я не против.

заодно можете telnet'ом зайти

[console]doc@dt:~$ telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ProFTPD 1.3.3d Server (Windows 666 server) [::ffff:127.0.0.1]
USER ftp
331 Anonymous login ok, send your complete email address as your password
PASS nopassword
230-FUCK OFF!!!
230 Anonymous access granted, restrictions apply
QUIT
221 Goodbye.
Connection closed by foreign host.
[/console]

#110309


у вас ГДЕ скрипт, и ГДЕ база? На одном сервере? В таком случае, для скрипта это localhost. И естественно, закрыв порт СНАРУЖИ, вы не помешаете работе сайта. Ну разве только если у вас скрипты и база на разных серверах.

Да, действительно, для скриптов localhost, простите глупость, скрипты и база на одном сервере

я рад за вас. У вас хоть один клиент напрямую работает с БД? Или все через этот (или любой другой) скрипт?

Я один с базой работаю через ssh, mysql-monitor, phpmyadmin закрыл за ненадобностью, да и ломились туда постоянно
Все клиенты через 80 порт ходят
Я понимаю, что ssh прикрыт от взлома динамическим портом и т д, но я не понял, как Вы закрыли наглухо порты мускуля (3306), postfix( у меня 25), pop3 dovecot - 110, imap -143.
Они у меня все открыты, откликаются на телнет.
Подскажите, как их закрыть?

вот вам пример: зайдите на http://drbatty.no-ip.org (это мой локальный компьютер), и можете там хоть месяц регистрироваться. Хотя порты там ВСЕ закрыты (кроме http 80). можете просканировать, если не верите, я не против.

заодно можете telnet'ом зайти

[console]doc@dt:~$ telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ProFTPD 1.3.3d Server (Windows 666 server) [::ffff:127.0.0.1]
USER ftp
331 Anonymous login ok, send your complete email address as your password
PASS nopassword
230-FUCK OFF!!!
230 Anonymous access granted, restrictions apply
QUIT
221 Goodbye.
Connection closed by foreign host.
[/console]

Красиво, ничего не скажешь!
Подскажите, как закрыть порты и где вставить это самое "FUCK OFF!!!"
Я бы еще добавил типа "scheise! fick dich!", чтобы всем понятно было

#110314
waldi написал:
Я один с базой работаю через ssh

нет. Вы работаете через ssh, через порт 22 (если не изменили).
а вот демон sshd вам обеспечивает вход в shell, а уж shell локально запускает mysql (клиент БД). Потому, тут вы локально работаете с базой, удалённо только с ssh.

waldi написал:
Я понимаю, что ssh прикрыт от взлома динамическим портом и т д, но я не понял, как Вы закрыли наглухо порты мускуля (3306), postfix( у меня 25), pop3 dovecot - 110, imap -143.
Они у меня все открыты, откликаются на телнет.

mysql (3306) можно закрывать. Что касается остального - не знаю. Если вам действительно нужен там ещё и почтовый сервер (нужен?) то 25й и 110й порт закрывать НЕ надо. Что касается imap, то я не понял - хорошо, у вас там почтовый сервис, который принимает почту от других сервисов. Но зачем вам ДВА протокола? Оставьте один.

waldi написал:
Красиво, ничего не скажешь!
Подскажите, как закрыть порты и где вставить это самое "FUCK OFF!!!"
Я бы еще добавил типа "scheise! fick dich!", чтобы всем понятно было

ну на 21ом порту висит сервер FTP (кстати, сегодня вышло обновление, я уже поставил). При попытке соединения, сервер выдаёт своё имя (ServerName, исправлять в конфиге), там обычно пишут OS - у меня Windows 666 server. Ну и версию самого сервера пишет. Вот только я с ходу не понял, где её менять. Но тоже где-то можно. Вроде-бы... (давно не занимался такой ерундой). Ну а дальше идёт аутентификация: логин/пароль. Если всё верно, то сервер выплёвывает welcom.msg из домашнего каталога юзера, который туда зашёл. Вот только, это видно лишь хакерам с телнетом. Обычные люди этого обычно не видят, а просто качают что надо.

Если вход неудачный, то выдаются другие сообщения. Программам важен лишь цифровой код (230 - вход успешный. В соотв. RFC можете глянуть всё остальное (коды, команды и прочее).

По SSH механизм примерно такой-же (только несколько сложнее - данные зашифрованы для избежания атаки MID) Но всё остаётся так-же.


Основной принцип:

Порт - это ворота на компьютер.

Предположим, на компьютер с IP 192.2.7.8 приходит пакет на порт 666. (IP и порт записаны в заголовке пакета, по дороге номер порта никого не волнует, волнует только IP).

Пакет попадает в стек TCP, и сохраняется там, пока ОС решает что с ним делать.

Прежде всего ОС смотрит на IP, руководствуясь правилами которые задаются программой iptables (эта программа ничего не делает, а лишь служит интерфейсом к ядру. С её помощью мы можем сказать ядру, что делать с пакетом). Возможны варианты:
1) ядро не знает, что делать с пакетом. Тогда этот пакет уничтожается. Тот, кто отправил этот пакет в известность не ставится. Отправитель отправил пакет как-будто в никуда.
2) ядро понимает, что этот пакет не ему. Но оно знает, кому. Тогда этот пакет отправляется адресату. При этом ядро может изменить параметры пакета, в том числе порт и IP получателя (NAT), а так-же может порезать/склеить пакеты.
3) ядро понимает, что пакет ему. Это значит, что IP адрес совпадает с каким-нибудь из наших (а у нас их много), и кроме того, существует программа, которая слушает порт, который записан в пакете (адрес "кому"). Тогда ядро отправляет пакет получателю.

Входящий порт называется "закрытым", если ядро имеет правило, которое запрещает прохождение пакета снаружи, внутрь этого компьютера.lsof -i

Но если порт "открыт", это не значит, что мы дождёмся ответа, нам нужна ещё и программа на этом сервере. Если пакет приехал на порт 666, и если порт 666 слушает какая-то программа, и если ядро соизволит его туда отправить, и если программа пожелает ответить, то только в этом случае отправитель получит ответ (если конечно он дойдёт до адресата, и не потеряется на обратной дороге). Т.о. имеем 6 необходимых условий для установления связи.

1,2) доступность получателя и отправителя. Т.е. наличие Сети у обоих (кстати, www может и не быть).
3) у получателя есть рабочий комп, причём его IP должен быть известным в Сети. Пускай и косвенно. Например мой IP 192.168.1.2, и никому в Сети не известен. За то у меня есть роутер, который с одной стороны знает про меня, с другой стороны он имеет известный всей Сети адрес.
4) У меня должна быть запущена программа, которая слушает конкретный порт.
5) Моё ядро отправит пакет этой программе.
6) Программа пожелает ответить (а она вовсе не обязана это делать).

Если все 6 условий выполнены, соединение установится. Клиент (который послал нам на сервер пакет) тоже открывает порт (случайный, 1024..65535), и его слушает. Этот порт называется входящим. Мы с сервера отправляем туда ответ, т.к. в принятом нами пакете есть обратный адрес клиента (IP:port).

А уж дальше происходит обмен информацией, и клиент сможет хоть что-то увидеть.

В итоге, если вы желаете, что-бы злобные хакеры что-то видели, вам придётся устанавливать с ними соединение. И ставить какой-то софт. Без этого никак...

ИМХО самое лучшее (не только ИМХО) это
1) отключить все программы, которые слушают порты. Список в lsof -i они помечены как LISTEN. Если есть что-то непонятное и LISTEN - читайте ман. В мане должно быть сказано, что это, и зачем надо.
2) вторая превентивная и необязательная мера (но паранойя рулит, потому так делают почти все) - указать ядру, что не надо переправлять пакеты на входящие порты, на все, кроме перечисленных.

Вообще-то п2 часто не является необязательным - если у вас своя локалка, вы возможно захотите, что-бы ваш FTP сервер был доступен домашним, но недоступен всем остальным. Кроме того, у нас ещё есть X сервер. Несмотря на то, что он откликается лишь на внутренние запросы (по умолчанию), но враг может подбросить какой-нить кривой пакет X серверу, которым он подавится, и сделает всё, что скажет враг. Конечно это страшная сказка, лучше от греха подальше вообще закрыть X. Да и всё остальное тоже.

Кроме того, злоумышленник может вам подбросить руткит, даже если и не знает пароля root'а. Этот вредонос будет слушать какой-то порт, но из пользовательского пространства (доступно 1024..65535й порт). Если перекрыть доступ к этим портам, то вредонос не сможет получать команды из "центра", что хотя и плохо для врага, но не смертельно (вредонос сможет сам выходить на связь как Штирлиц). Это тоже страшная сказка, но всё-же.

#110385


mysql (3306) можно закрывать. Что касается остального - не знаю. Если вам действительно нужен там ещё и почтовый сервер (нужен?) то 25й и 110й порт закрывать НЕ надо. Что касается imap, то я не понял - хорошо, у вас там почтовый сервис, который принимает почту от других сервисов. Но зачем вам ДВА протокола? Оставьте один.

Еще раз спасибо за ответ!
Я понял, что imap 143 надо закрывать, раньше сервером и сайтом занимался другой человек, а я об администрировании почти ничего не знал, теперь пришлось переехать на вирт. хост из-за проблем со старым хостером, пришлось все ставить впервые, в том числе postfix, еле поставил и не совсем понимал, зачем imap нужен

И снова я не понял вот что, простите за глупый вопрос
Правильно ли я понимаю, что iptables своими правилами динамически закрывает порт(порты), но ведь, например, команда nmap localhost все равно покажет, что порт(порты) открыты, и телнет тоже получит в ответ и приглашение,
а статически порт закрыть можно какой-нибудь командой из bash, чтобы команда nmap localhost его не показывала?

ну на 21ом порту висит сервер FTP (кстати, сегодня вышло обновление, я уже поставил).

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

#110465
waldi написал:
И снова я не понял вот что, простите за глупый вопрос
Правильно ли я понимаю, что iptables своими правилами динамически закрывает порт(порты), но ведь, например, команда nmap localhost все равно покажет, что порт(порты) открыты, и телнет тоже получит в ответ и приглашение,
а статически порт закрыть можно какой-нибудь командой из bash, чтобы команда nmap localhost его не показывала?

1) нет никаких "динамических портов".
2) iptables должна "закрывать порт" снаружи внутрь (точнее блокировать этот маршрут, из Сети на приложение которое слушает порт). А внутри iptables ничего вовнутрь не должна закрывать, внутри всё открыто. Потому telnet localhost и должен работать. Я не понимаю, почему это вас так расстраивает: если враг имеет доступ к компу, то он просто украдёт весь винт, и плевал он на ВСЕ защиты, потому и закрываются только снаружи внутрь.
3) смотреть кто слушает порты надо командой lsof -i. Слушать порты должны только нужные серверы, изучите назначение каждого (их немного), и отключите лишние (удалять не надо. Может он нужный).

waldi написал:
До обновления софта у меня вообще руки не доходят и страшно, хоть бы понять как настроить и защитить то, что есть и не завалить ничего, надо , наверное новую тему открыть, что скажут спецы по поводу возможных конфликтов между программами после апгрейта и можно ли вернуть старую версию, если что?

да вроде не должны. Но лучше сделать бекап (проще всего слить командой dd весь диск). Впрочем, бекап сделать никогда не рано (но часто бывает поздно). Сделав бекап вы можете смело курочить сервер зная, что всегда вернётесь. Конечно бекап нужно хранить на другом диске, желательно на сменном под подушкой ;)

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

Войдите или зарегистрируйтесь, чтобы ответить.