Я хочу добавить белый список в свою систему с помощью iptables. Я поискал в Интернете и нашел следующее:
iptables -I INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -I INPUT -s 127.0.0.1/8 -j ACCEPT
iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -P INPUT DROP
и это действительно работает. Так что я стреляю iptable -F
чтобы удалить все правила, я больше не могу подключиться к этому серверу.
В чем дело?
Как правильно удалить все правила?
политика цепочки для INPUT установлена на DROP.
При отсутствии правил все отбрасывается.
перед тем, как уничтожить все цепи, убедитесь, что все цепи имеют политику ПРИНЯТЬ a la iptables -P INPUT ACCEPT
В дополнение к правильному и полезному ответу Olipro я бы порекомендовал кое-что
избежать риска быть заблокированным вашим брандмауэром
Используйте привязанный к crontab скрипт, который повторно открывает брандмауэр в случае, если что-то пошло не так; как вы знаете, вы можете сделать ошибку в вашем sshd_config, которая не причинит реального вреда, пока вы все еще вошли в систему. Не так с iptables: одной ошибки может быть достаточно, и вы отключитесь. Для этого:
#!/bin/bash
# openFW.sh
IPT=$(which iptables)
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -F
NOW=$(date +"%H:%m")
echo "FW opened on %h at $NOW" | mail -s "FW reset cron job jh1" \
you@your.domain.com
logger "WARNING : iptables flushed and opened by cron job"
И с crontab -e
поместите что-то вроде
#*/5 8-19 * * * /root/scripts/openFW.sh
чтобы очистить правила iptables и открывать микропрограммное обеспечение каждые 5 минут. Раскомментируйте это, прежде чем редактировать правила; проверьте правила (убедитесь, что они доступны и еще не сброшены заданием cron); после того, как все в порядке, закомментируйте, что убрать cron
Надеюсь это поможет.