Разница между этими действиями и заключается в том,
что DROP - это "чёрная дыра", а REJECT корректно разры-
вает TCP соединение отсылая флаг RST.
К стати, сканеры портов это дело отслеживают, и в случае
REJECT оповещают о том, что де порт отфильтрован (filtered).
Прикрывать порты снаружи имхо лучше дропом (безопаснее).
Хотя где-то может больше подойдёт REJECT.
(Если ничего не напутал:)
Так, а как тогда можно "скрыть" открытые порты? Чтоб некоторые показывались и корректно работали, а некоторые были не видны вообще, как будто бы они закрыты?
>Так, а как тогда можно "скрыть" открытые порты? Чтоб некоторые показывались и корректно работали, а некоторые были не видны вообще, как будто бы они закрыты?
Я решал такую задачу путем редиректа пакетов
схема работала таким образом
- если адрес отправителя совпадает с разрешенным адресом то пакет просто пропускается (устанавливается соединение) - если адрес отправителя не совпадает с разрешенным то пакет редиректится на любой незанятый порт и система отвечает RST | ASK пакетом - типа никакого сервусу тута и нету ;)
Люди говорят, что это не так: когда пакет прихоит на несуществующий порт - шлется ответ, а если сделать DROP, то ответа не будет, следовательно ваш ответ правильный до наоборот :-)
И вообще, сделайте DROP и REJECT, просканьте себя и посмотрите что выйдет. А перед тем, как делать REJECT посмотрите tcpdump-ом что будет, если послать пакет на никем не открытый и не фильтруемый порт Unix-овой тачилы. Вставьте этот ответ в свой REJECT и сканьте.
>если адрес отправителя совпадает с разрешенным адресом то пакет
>просто пропускается (устанавливается соединение) - если адрес
>отправителя не совпадает с разрешенным то пакет редиректится на
>любой незанятый порт и система отвечает RST | ASK пакетом - типа
>никакого сервусу тута и нету ;)
намного проще использовать -j REJECT --reject-with tcp-reset ;)