Назад | Перейти на главную страницу

Как я могу заблокировать все, кроме трех портов, в Ubuntu?

Как я могу заблокировать все порты кроме 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