Как я могу заблокировать все порты кроме 1962, 999, 12020?
Один порт для SSH и два других для своего рода скрипта. Значит, необходимо разрешить исходящий трафик на эти порты, верно?
Мои iptables:
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
Извините, но я новичок, когда дело доходит до этого, и я просто хочу сделать свой сервер более безопасным.
Сначала вы всегда должны смывать, чтобы убедиться, что уже определено ... ничего
iptables -F
Затем установите политику по умолчанию для цепочки INPUT на DROP, если конец достигнут и ни одно правило не найдено:
iptables -P INPUT DROP
Чтобы гарантировать, что петля не затронута, вы должны добавить
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
чтобы разрешить весь трафик на lo-if и каждый входящий трафик для подключений, которые вы установили. После этого добавьте все необходимые правила для ваших услуг. (не забудьте открыть ssh, если он вам нужен! иначе вас нет):
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT
Небольшой трюк, который я делаю, чтобы не дать себе и другим случайно просверлить дыры в системе безопасности, я наконец добавляю:
iptables -A INPUT -j DROP
Эта строка соответствует всему для цепочки INPUT, и политика не должна ничего получать. Преимущество этого заключается в том, что даже если вы добавите правило ACCEPT через некоторое время после инициализации набора правил, оно никогда не будет проверено, потому что все было удалено раньше. так что вам нужно хранить все в одном месте.
На ваш вопрос вкратце все выглядит так:
iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT
iptables -A INPUT -j DROP
Ответ от новичка, такого же, как вы :-) Мне также нужно было защитить свой сервер Ubuntu, изучение iptables было проблемой, с которой я не мог справиться. UFW (Uncomplicated Firewall) - это программа, которая максимально упрощает настройку межсетевого экрана.
установить ufw:
sudo apt-get install ufw
немедленно отключите его (мне пришлось выполнить аварийную загрузку, потому что я был заблокирован для моего собственного входа в SSH):
sudo ufw disable
установите "deny" как правило по умолчанию (это блокирует все порты):
sudo ufw default deny
разрешите порты, которые вам нужны:
sudo ufw allow to 1962
sudo ufw allow to 999
sudo ufw allow to 12020
sudo ufw allow from 1962
sudo ufw allow from 999
sudo ufw allow from 12020
если вы уверены, что приведенные выше правила не нарушают ваше соединение ssh, включите ufw:
sudo ufw enable
Документы хорошо написаны и содержат больше примеров: https://help.ubuntu.com/community/UFW