31

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

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

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

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

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

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

 Консоль:
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.


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

32

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 пишет:

Красиво, ничего не скажешь!
Подскажите, как закрыть порты и где вставить это самое "Кю 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й порт). Если перекрыть доступ к этим портам, то вредонос не сможет получать команды из "центра", что хотя и плохо для врага, но не смертельно (вредонос сможет сам выходить на связь как Штирлиц). Это тоже страшная сказка, но всё-же.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

33

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

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

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

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

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

34

waldi пишет:

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

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

waldi пишет:

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

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

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

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)