Как я могу предотвратить блокировку после изменения политики iptables по умолчанию?

Я работаю над экспериментом. Когда я (клиент) SSH в шлюз и запускаю sudo iptables --policy INPUT DROPтогда шлюз не принимает никаких сообщений (или входных данных) от моего клиента.

От running sudo iptables --policy INPUT ACCEPT на шлюзе, то клиент может снова написать.

У меня вопрос: как я могу восстановить ситуацию с клиента?

3 ответа

Решение

Есть две вещи, которые вы должны сделать, чтобы сохранить эту систему доступной перед изменением netfilter -rules:

  1. создать исключение в правилах брандмауэра для ssh с вашей машины
  2. создать защиту

создать исключение

создать соответствующее правило с iptables

sudo iptables -A INPUT -p tcp --dport ssh --source-address yourextIPadd -j ACCEPT

(где yourextIPadd это IP адрес вашей машины дома, видно снаружи)

или используя UFW

Если у вас есть UFW Установить UFW уже установлен, вы можете сказать UFW создать исключение

sudo ufw allow from yourextIPadd to any port 22

создать защиту

Перед выполнением команды для изменения политики по умолчанию для netfilter на DROP вы можете сказать системе отменить эту команду через (скажем) 5 минут с помощью удобной команды at

sudo at -vM now +5 minutes

теперь вы находитесь в чем-то вроде редактора, где вы можете вводить команды, которые будут выполняться позже, вы закрываете / заканчиваете их, набирая CTRL D.

Тип

/sbin/iptables --policy INPUT ACCEPT

CTRL D

Вы увидите что-то вроде

sudo at -vM  now +1 minute
Fri Aug 29 17:46:00 2014

warning: commands will be executed using /bin/sh
at> /sbin/iptables iptables --policy INPUT ACCEPT
at> <EOT>
job 5 at Fri Aug 29 17:46:00 2014

замечания

  • тебе нужно позвонить at с sudo (Это должно быть root's за столом)
  • поэтому нет необходимости sudo в
  • -v говорит at чтобы показать предполагаемое время выполнения, когда вы закончите
  • -M говорит at не отправлять электронную почту об успехе / неудаче
  • для всесторонней помощи с iptables взгляните на IPTables Howto

Вы не можете... по крайней мере, использовать протокол соединения на основе IP. Потому что ваше правило отбрасывает весь входящий IP-трафик, поступающий на шлюз.

Кстати, все протоколы, которые я знаю, такие как ssh, vnc, rdp и т. Д., Используют IP.

Я наткнулся на этот вопрос, когда я изучал другие виды правил для iptables. и я думал, что добавлю свое собственное предложение.

для примера, следующее - это средство, гарантирующее, что вы не заблокируете СВОЙ локальный хост. отредактируйте свои IP-адреса в соответствии с топологией вашей сети. Я не знаю, что другие используют для своего диапазона IP. Мое предложение или совет с точки зрения безопасности при настройке локальной сети (домашней, но также деловой и т. д.) не используют 192.168.0.1, а вместо этого используют 10.0.0.0 ... Почему? просто. Все, что не является ПО УМОЛЧАНИЮ, немедленно повышает вашу безопасность, хотя бы чуть-чуть. Как только злоумышленник входит, он в значительной степени входит. И это только вопрос времени, прежде чем они выяснят вашу сетевую схему.

Надеюсь это поможет.

эта настройка также сохраняется после перезагрузки компьютера. до тех пор, пока вы гарантируете выполнение netfilter-persistent save.

    # Set default policies for all three default chains
    $ sudo iptables -P INPUT DROP
    $ sudo iptables -P FORWARD DROP
    $ sudo iptables-P OUTPUT ACCEPT

    # Enable free use of loopback interfaces
    $ sudo iptables -A INPUT -i lo -j ACCEPT
    $ sudo iptables -A OUTPUT -o lo -j ACCEPT

    #Dont lock yourself out
    $ sudo iptables -I INPUT 1 -i eth0 -p tcp --syn -m state --state NEW -s 192.168.0.1 -d 192.168.0.2 -j ACCEPT
    $ sudo iptables  -I OUTPUT 1 -o eth0 -p tcp --syn -m state --state NEW -s 192.168.0.1 -d 192.168.0.2 -j ACCEPT

    # Allow your local subnet
    $ sudo iptables  -A INPUT -p tcp ! --syn -m state --state NEW -s 192.168.0.1/24 -j DROP

    # Accept inbound TCP packets
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $ sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s 192.168.0.1/24 -j ACCEPT

    # Accept inbound ICMP messages
    $ sudo iptables -A INPUT -p ICMP --icmp-type 8 -s 192.168.0.1/24 -j ACCEPT
    $ sudo iptables -A INPUT -p ICMP --icmp-type 11 -s 192.168.0.1/24 -j ACCEPT

    # Accept outbound packets
    $ sudo iptables -I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    $ sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

дальше, прежде чем делать что-то еще. Вы должны выполнить

    $ sudo iptables-save >> iptables-rules-ipv4.sh
    $ sudo netfilter-persistent save
Другие вопросы по тегам