Что делает Apache, “Требуют, чтобы все предоставленные” действительно сделали?

Хорошо, я прочитал Ваши полные правила.

Одна важная вещь сначала: не смешивайте-A с-I.

  • -A добавляет правила в конец цепочки
  • -I вставляет правила в цепочку (если положение не указано, это вставляется во-первых),

Так, Ваши правила iptables на самом деле:

-A INPUT -p tcp --dport 5678:5679 -j ACCEPT
-A INPUT -p tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp --dport 8099 -j ACCEPT
-A INPUT -p tcp --dport 8098 -j ACCEPT
-A INPUT -s 192.168.1.181 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 2500 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j ACCEPT

Как Вы видите, ВХОДНЫЕ правила № 1 через № 4 не ограничивает исходного адреса.

Теперь, если Вы действительно хотите ограничить доступ к тем портам к 192.168.1.181, необходимо будет сделать это как это:

# Established connections should just pass
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loopbacks will not match 192.168.1.181, so we ACCEPT them here
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Other than 192.168.1.181, we reject
-A INPUT -s 192.168.1.181 -j in_allow
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
# Allow only the following ports
-A in_allow -p tcp --dport 5678:5679 -j ACCEPT
-A in_allow -p tcp --dport 4369 -j ACCEPT
-A in_allow -p tcp --dport 8099 -j ACCEPT
-A in_allow -p tcp --dport 8098 -j ACCEPT
-A in_allow -p tcp -m state --state NEW --dport 2500 -j ACCEPT
-A in_allow -p icmp -m icmp --icmp-type 8 -j ACCEPT
#
-A FORWARD -j REJECT
-A OUTPUT -j ACCEPT

Только один вопрос: почему -m state --state NEW для --dport 2500?

Важное примечание: не забывайте сначала СБРАСЫВАТЬ и СТИРАТЬ целые правила iptables прежде, чем применить вышеупомянутое.

96
задан 13 April 2019 в 20:25
2 ответа

Конфигурация контроля доступа изменилась в версии 2.4, и старые конфигурации несовместимы без некоторых изменений. См. здесь .

Если ваша старая конфигурация была Разрешить от всех (нет IP-адресов, заблокированных для доступа к службе), то Требовать все разрешено - это новый функциональный эквивалент.

90
ответ дан 28 November 2019 в 19:21

Я знаю, что это старый пост, но думаю, что могу больше помочь с функциональным примером, который я всегда использую!

В apache 2.2 будет примерно так:

    <Location />
       Order deny, allow
       allow from all
    </Location>
    <Location /adm>
        Order deny, allow
        deny from all
        allow from myniceip
    </Location>
    <Location /disabled>
        Order deny, allow
        deny from all
    </Location>

В apache 2.4 будет примерно так:

   <Location />
       require all granted
    </Location>
   #Note that you dont need to use require all denied
   #to require only a group of ips.. 
    <Location /adm>
        require ip myniceip
    </Location>
    <Location /disabled>
        Require all denied
    </Location>

Будьте осторожны при использовании аутентификации htacess , этот новый синтаксис может делать некоторые неприятные и неожиданные вещи , если это ваш случай, прочтите: https://unix.stackexchange.com/questions/413309/apache-2-4-wants-me-to-decide-require-valid-ip-or-require-valid-user и вам следует будь умницей!

16
ответ дан 28 November 2019 в 19:21

Теги

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