LINUX.ORG.RU

iptables удаленно


0

1

Господа, здравствуйте.

Такая ситуёвина.

Была цель поднять ftp сервер. Запустил машину на Debian с vsftpd. Т.к. выходные, сейчас есть возможность подключения только через ssh. Так вот, можно ли с помощью iptables удаленно закрыть всё, кроме ssh и ftp. Только чтобы во время настройки не закрылось ssh.

Как я понял, достаточно сделать

#iptables -P INPUT -j DROP

#iptables -P OUTPUT -j DROP

#iptables -P FORWARD -j DROP

#iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

#iptables -A INPUT -p tcp --dport 20 -j ACCEPT

, но после первой же командой я останусь с носом.

Помогите разобраться :)



Последнее исправление: DenisZy (всего исправлений: 1)

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

provaton ★★★★★
()

cron + исключение для своего IP

zolden ★★★★★
()
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m multiport --dport 21,22 -j ACCEPT
iptables -P INPUT DROP
anton_jugatsu ★★★★
()

Стоп, а почему ты считаешь что -P .. -j DROP надо обязательно указывать перед аццептами? Это неверно, порядок здесь значения не имеет. Только не забудь еще открыть OUTPUT для установленных соединений, иначе тцп работать не будет.

provaton ★★★★★
()
Ответ на: комментарий от provaton

хм, я подумал, что общий drop приоритетнее конкретного accept видимо неправильно подумал :)

DenisZy
() автор топика

Лично я предпочитаю задавать правила iptables в формате ip(6)tables-save/ip(6)tables-restore. Плюсы:

  • Можно правила спокойно редактировать любимым текстовым редактором.
  • Можно добавлять к правилам комментарии, чтобы при чтении конфига всегда было понятно что к чему.
  • ip(6)tables-restore работает атомарно, то есть при загрузке новых правил гарантированно не будет «окна», во время которого сервер будет голой жопой торчать в интернет =).

Для удобного обновления правил на удалённых машинах использую самописный скриптик, который сначала загружает новые правила, а затем две минуты ждёт нажатия Ctrl+C. Если Ctrl+C не нажать, то по истечении двух минут он загружает старые правила. Ещё он может показывать разницу между старыми и новыми правила, а-ля git diff =).

Deleted
()
Ответ на: комментарий от provaton

В другом порядке не прокатило

#iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

#iptables -A INPUT -p tcp --dport 20 -j ACCEPT

#iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

#iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT

#iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT

#iptables -P INPUT DROP

#iptables -P OUTPUT DROP

на этом всё оборвалось :)

DenisZy
() автор топика
Ответ на: комментарий от DenisZy

#iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

Вот это неправильно, у исходящего соединения дестинейшн порт не будет 22. Тебе тов. anton_jugatsu уже ж разжевал ведь.

provaton ★★★★★
()
Ответ на: комментарий от provaton

ну ничё, чтобы что-нибудь понять - нужно что-нибудь поломать :) Жду очистки правил по заданию, спасибо за совет

DenisZy
() автор топика

>но после первой же командой я останусь с носом.

можно все команды в скрипт занести. тогда взлетит.

drBatty ★★
()
Ответ на: комментарий от DenisZy

>Жду очистки правил по заданию, спасибо за совет

iptables-save >/root/save

crontab -e

20 * * * * iptables-restory </root/save

в каждую двадцатую минуту правила будут сбрасываться.

drBatty ★★
()

Те правила что написал anton_jugatsu +

модуль ядра nf_conntrack_ftp должен быть загружен, иначе ftp у тебя с такими правилами работать не будет. (FTP DATA соединения не будут определятся connection tracker`ом как RELATED)

Nao ★★★★★
()

Попробуйте http://www.shorewall.net/. Это фаерволл, основанный на iptables, но использующий другой уровень абстракции.
Он не сложен в понимании концепции и в настройке, шансов завалить удалённо машину значительно меньше, чем при ручной правке правил iptables.

Slavaz ★★★★★
()
Ответ на: комментарий от Nao

Да, спасибо, натыкался на неё, собственно её и изучаю. Но в тот раз нужно было использовать минимум. А по этой ссылке егегей сколько инфы :)

DenisZy
() автор топика

Тоже на таком накалывался.
Надо поместить все правила в скрипт, а потом выполнить его как
# nohup ./script.sh &
тогда всё нормально будет, и текущая сессия по ssh не вылетит.

cryptos
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.