Рейтинг:1

Как запретить удаленный доступ в iptables

флаг cn

У меня есть iptables, настроенный с помощью docker-compose, но мой белый список только тех IP-адресов, которые я хочу, похоже, не работает, поскольку сервер все еще получает попытки удаленного доступа:

Соединение соответствует строке 95 pg_hba.conf: «host all all all md5»
2021-09-01 21:36:42.132 UTC [8821] FATAL: проверка подлинности пароля не удалась для пользователя "postgres"
2021-09-01 21:36:42.132 UTC [8821] ПОДРОБНОСТИ: роль «postgres» не существует.

Как исправить правильность настройки iptables? Что я здесь сделал не так?

-P ВХОД ПАДЕНИЕ
-P ПАДЕНИЕ ВПЕРЕД
-P ВЫВОД ПРИНЯТЬ
-N ДОКЕР
-N DOCKER-ИЗОЛЯЦИЯ-ЭТАП-1
-N DOCKER-ИЗОЛЯЦИЯ-СТАДИЯ-2
-N DOCKER-ПОЛЬЗОВАТЕЛЬ
-A ВВОД -i lo -j ПРИНЯТЬ
-A ВВОД -i eth1 -j ПРИНЯТЬ
-A ВВОД -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A INPUT -p tcp -m tcp --dport 22 -j ПРИНЯТЬ
-A ВХОД -p tcp -m tcp --dport 80 -j ПРИНЯТЬ
-A INPUT -p tcp -m tcp --dport 443 -j ПРИНЯТЬ
-A INPUT -s xxx.xxx.xx.xx/xx -p tcp -m tcp --dport 5432 -j ACCEPT (где x удален IP-адрес)
-A INPUT -s xxx.xxx.xx.xx/xx -p tcp -m tcp --dport 5432 -j ПРИНЯТЬ
-A ВВОД -p icmp -m icmp --icmp-type 0 -j ПРИНЯТЬ
-A ВВОД -p icmp -m icmp --icmp-type 3 -j ПРИНЯТЬ
-A ВВОД -p icmp -m icmp --icmp-type 11 -j ПРИНЯТЬ
-A FORWARD -j DOCKER-USER
-A ВПЕРЕД -j DOCKER-ИЗОЛЯЦИЯ-ЭТАП-1
-A FORWARD -o docker0 -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A ВПЕРЕД -o docker0 -j DOCKER
-A ВПЕРЕД -i docker0 ! -o docker0 -j ПРИНЯТЬ
-A ВПЕРЕД -i docker0 -o docker0 -j ПРИНЯТЬ
-A FORWARD -o br-1de8a78b46b8 -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A ВПЕРЕД -o br-1de8a78b46b8 -j ДОКЕР
-A ВПЕРЕД -i br-1de8a78b46b8 ! -o br-1de8a78b46b8 -j ПРИНЯТЬ
-A ВПЕРЕД -i br-1de8a78b46b8 -o br-1de8a78b46b8 -j ПРИНЯТЬ
-A FORWARD -p tcp -m tcp --dport 5432 -m iprange --src-range 82.208.14.110-82.208.14.119 -j ПРИНЯТЬ
-A FORWARD -p tcp -m tcp --dport 5432 -j REJECT --reject-with icmp-port-unreachable
-A ДОКЕР -d 172.18.0.2/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 6379 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.3/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 2368 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.4/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 5432 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.5/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 5900 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.5/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 4444 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.8/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 8000 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.9/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 443 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.9/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 80 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.6/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 9300 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.6/32 ! -i br-1de8a78b46b8 -o br-1de8a78b46b8 -p tcp -m tcp --dport 9200 -j ПРИНЯТЬ
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-1de8a78b46b8 ! -o br-1de8a78b46b8 -j DOCKER-ИЗОЛЯЦИЯ-ЭТАП-2
-A DOCKER-ISOLATION-STAGE-1 -j ВОЗВРАТ
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-1de8a78b46b8 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j ВОЗВРАТ
-A DOCKER-USER -j ВОЗВРАТ

РЕДАКТИРОВАТЬ:

Вот моя конфигурация для создания докеров:

  постгрес:
    изображение: "postgres:12.1"
    env_file:
      - '.env'
    порты:
      - '5432:5432' # удалено 127.0.0.1: - добавление брандмауэров в iptables

    перезапуск: "${DOCKER_RESTART_POLICY:-если-не остановлен}"
    stop_grace_period: "${DOCKER_STOP_GRACE_PERIOD:-3s}"
    тома:
      - postgres:/var/lib/postgresql/данные
      - /opt/ghost_postgres:/var/lib/postgres
    сети: 
      - эснет

  редис:
    изображение: redis:5.0.6-alpine
    команда: redis-server --requirepass "${REDIS_PASS}"
    перезапуск: "${DOCKER_RESTART_POLICY:-если-не остановлен}"
    stop_grace_period: "${DOCKER_STOP_GRACE_PERIOD:-3s}"
    порты:
      - '6379:6379'
    тома:
      - Redis:/var/lib/redis/данные
    сети: 
      - эснет


  просебит:
    строить: 
      контекст: "."
      аргументы:
        - "FLASK_ENV=${FLASK_ENV:-производство}"
        - "NODE_ENV=${NODE_ENV:-производство}"
    зависит от:
      - "постгрес"
      - "редис"
    env_file:
      - ".env"
    порты:
      - "${DOCKER_WEB_PORT:-127.0.0.1:8000}:8000"
    перезапуск: "${DOCKER_RESTART_POLICY:-если-не остановлен}"
    stop_grace_period: "${DOCKER_STOP_GRACE_PERIOD:-3s}"
    тома:
      - "${DOCKER_WEB_VOLUME:-./public:/app/public}"
    сети:
      - эснет
      
  веб: 
    зависит от:
      - просебит
    перезапуск: всегда
    строить:
      контекст: ../nginx #добавлено /deploy для разработки, удалить для производства
      докерфайл: Докерфайл
    тома:
      ...
    порты:
      - 80:80
      - 443:443
    сети:
      - "эснет"


  сельдерей:
    строить: 
      контекст: "."
      аргументы: 
        - "FLASK_ENV=${FLASK_ENV:-производство}"
        - "NODE_ENV=${NODE_ENV:-производство}"
    команда: рабочий сельдерей -B -l информация -A 
    env_file:
      - '.env'
    зависит от:
      - "постгрес"
      - "редис"
    env_file:
      - ".env"
    перезапуск: "${DOCKER_RESTART_POLICY:-если-не остановлен}"
    stop_grace_period: "${DOCKER_STOP_GRACE_PERIOD:-3s}"
    тома:
      - "${DOCKER_WEB_VOLUME:-./public:/app/public}"
    сети:
      - "эснет"
Рейтинг:1
флаг cz

Docker открывает порт в самом брандмауэре, потому что ваш docker-compose.yml явно запрашивает доступ к порту 5432 для всего мира.

    порты:
      - '5432:5432' # удалено 127.0.0.1: - добавление брандмауэров в iptables

Непонятно, зачем это вообще здесь, в любом виде. Помните, что услуги в одном сеть всегда могут получить доступ друг к другу и не нуждаются порты указано. Укажите только порты разрешить доступ извне.

PS: вы также открыли миру свой контейнер Redis, что, вероятно, тоже не то, что вам нужно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.