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

Извините, но я настоящий новичок, когда дело доходит до этого, и я просто хочу сделать свой сервер более безопасным.

21 голос | спросил okapa 25 FebruaryEurope/MoscowbSat, 25 Feb 2012 22:05:14 +0400000000pmSat, 25 Feb 2012 22:05:14 +040012 2012, 22:05:14

2 ответа


24

Сначала вы всегда должны скрываться, чтобы быть уверенным, что уже определено ... ничего

iptables -F

Затем установите политику по умолчанию для цепочки INPUT на DROP, если конец достигнут, и не было согласовано правило:

iptables -P INPUT DROP

Чтобы гарантировать, что loopback не имеет отношения, вы должны добавить

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
ответил Mose 25 FebruaryEurope/MoscowbSat, 25 Feb 2012 22:09:47 +0400000000pmSat, 25 Feb 2012 22:09:47 +040012 2012, 22:09:47
19

Ответ от новичка, как и вы :-) Мне также нужно было защитить свой сервер Ubuntu, а изучение iptables - это боль, которую я не смог преодолеть. UFW (Uncomplicated Firewall) - это программа, позволяющая максимально упростить настройку брандмауэра.

  • установить ufw:

    sudo apt-get install ufw
    
  • отключить его немедленно (мне пришлось спасать-boot, потому что я был заблокирован из своего собственного входа 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

ответил Vlad Gerasimov 27 FebruaryEurope/MoscowbMon, 27 Feb 2012 14:11:07 +0400000000pmMon, 27 Feb 2012 14:11:07 +040012 2012, 14:11:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132