Правильно ли я все сделал в iptables?
Если ставите политику DROP и на OUTPUT, то нужно в неё добавить симметричные разрешающие правила. Например, если у вас есть правило iptables -A INPUT -p tcp --dport 22 -j ACCEPT, то нужно будет и правило iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT. Но обычной практикой является то, что OUTPUT оставляют пустым с политикой ACCEPT.
Так же обычно добавляют правило типа iptables -A INPUT -i lo -j ACCEPT для того, чтобы разрешить коммуникации между процессами на самом хосте, и правило iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT для того, чтобы разрешить ответные пакеты.
iptables-save не сохраняет изменения, а только выводит текущий набор правил на стандартный вывод. То, где хранятся настройки iptables зависит от дистрибутива Linux. Например, в Debian-подобных дистрибутивах лучше поставить пакеты netfilter-persistent и iptables-persistent, чтобы можно было загружать настройки файерволла при загрузке.
В общем, iptables и настройка файерволла требуют хороших знаний по сетям и протоколам, и с наскока их не получится освоить, а только прочитав документацию (благо, есть неплохой перевод iptables tutorial на opennet.ru).
> Говорят что UDP небезопасен и не гарантирует стабильную работу или надо UDP тоже открыть?
надо открывать UDP или не надо - зависит от приложения. если ваш сервер майнкрафта умеет работать по протоколу UDP, то можете открыть, а если он требует работать по протоколу UDP или не умеет работать по протоколу TCP - то открыть UDP придётся.
> Получается теперь я могу заливать фалы на сервер, а скачивать не могу?
можете и заливать, и скачивать.