Вы написали:
5. Открыть порт 22 на eth1 для определенного IP
А правило у вас для eth0:
A INPUT -i eth0 --source 192.168.0.1 -p tcp --dport 22 --match state --state NEW -j ACCEPT
Вот еще:
6. Открыть все исходящие порты для eth0 и eth1
так зачем вы добавляете какие-то дополнительные правила. Достаточно чтобы для данной цепочки не было DROP-правил и политики по умолчанию в ACCEPT:
iptables -P OUTPUT ACCEPT
Все правила разрешающие. А где правила который будут дропать трафик?
Тут два варианта: или применить политики по умолчанию для цепочек, например так:
iptables -P INPUT DROP
iptables -P FORWARD DROP
или в конец каждой цепочки добавить (именно в конец!!!):
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
Если у вас доступ на сервер только по ssh, подготовьте скрипт, который останавливает iptables или сбрасывает их. И поставьте его в крон на каждые 10 минут например, чтобы если Вы вдруг что-то сделали не так и потеряете доступ, скрипт через ~10 минут его вам вернул.