LINUX.ORG.RU
ФорумAdmin

Ограничить доступ к 80 порту, только при vpn подключении должен быть доступен

 , ,


0

1

Пытаюсь сделать так:

# iptables -A INPUT -i tun+ -p tcp --dport 80 -j ACCEPT

# iptables -A INPUT -p tcp --dport 80 -j REJECT
и так:
# iptables -A INPUT -i tun0 -p tcp --dport 80 -j ACCEPT

# iptables -A INPUT -p tcp --dport 80 -j REJECT



правила применяются, но сайт снаружи все еще доступен на 80 порту...

В iptables важна очередность правил если выше стоят разрешающие правила, то нижестоящие запрещающие не будут вообще работать.

Так же если web-сервер находится на этой же машине, где вы пишете и правила, то нужно работать с цепочками input и output, а если на доугой, то с forward.

Так что описываете схему сети, что к чему подключено, где web-сервер и показывайте вывод iptables-save.

Ip адреса можете заменить на другие, но что бы было соответствие.

anonymous ()

Хм. А не проще сказать веб-серверу, на каком интерфейсе принимать соединения?

anonymous ()
Ответ на: комментарий от anonymous

web-сервер находится на этом же сервере внутри docker контейнера owncloud.

u# iptables-save
# Generated by iptables-save v1.6.0 on Wed Dec 12 11:14:37 2018
*nat
:PREROUTING ACCEPT [403:28071]
:INPUT ACCEPT [24:1376]
:OUTPUT ACCEPT [158:11748]
:POSTROUTING ACCEPT [331:22028]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 192.168.226.0/24 -o eth0 -m comment --comment pritunl-5c10df1c2cc5cb00233a5e5a -j MASQUERADE
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.20.0.0/16 ! -o br-7009c9b53be2 -j MASQUERADE
-A POSTROUTING -s 172.18.0.0/16 ! -o br-4dc510063f2a -j MASQUERADE
-A POSTROUTING -s 172.19.0.0/16 ! -o br-3e70ad5e4d73 -j MASQUERADE
-A POSTROUTING -s 172.20.0.4/32 -d 172.20.0.4/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER -i br-7009c9b53be2 -j RETURN
-A DOCKER -i br-4dc510063f2a -j RETURN
-A DOCKER -i br-3e70ad5e4d73 -j RETURN
-A DOCKER ! -i br-7009c9b53be2 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.20.0.4:8080
COMMIT
# Completed on Wed Dec 12 11:14:37 2018
# Generated by iptables-save v1.6.0 on Wed Dec 12 11:14:37 2018
*filter
:INPUT ACCEPT [826:129983]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [827:136551]
:DOCKER - [0:0]
:DOCKER-ISOLATION - [0:0]
-A INPUT -i tun2 -m comment --comment pritunl-5c10df1c2cc5cb00233a5e5a -j ACCEPT
-A INPUT -i tun+ -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -o tun2 -m comment --comment pritunl-5c10df1c2cc5cb00233a5e5a -j ACCEPT
-A FORWARD -i tun2 -m comment --comment pritunl-5c10df1c2cc5cb00233a5e5a -j ACCEPT
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-7009c9b53be2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-7009c9b53be2 -j DOCKER
-A FORWARD -i br-7009c9b53be2 ! -o br-7009c9b53be2 -j ACCEPT
-A FORWARD -i br-7009c9b53be2 -o br-7009c9b53be2 -j ACCEPT
-A FORWARD -o br-4dc510063f2a -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-4dc510063f2a -j DOCKER
-A FORWARD -i br-4dc510063f2a ! -o br-4dc510063f2a -j ACCEPT
-A FORWARD -i br-4dc510063f2a -o br-4dc510063f2a -j ACCEPT
-A FORWARD -o br-3e70ad5e4d73 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-3e70ad5e4d73 -j DOCKER
-A FORWARD -i br-3e70ad5e4d73 ! -o br-3e70ad5e4d73 -j ACCEPT
-A FORWARD -i br-3e70ad5e4d73 -o br-3e70ad5e4d73 -j ACCEPT
-A OUTPUT -o tun2 -m comment --comment pritunl-5c10df1c2cc5cb00233a5e5a -j ACCEPT
-A DOCKER -d 172.20.0.4/32 ! -i br-7009c9b53be2 -o br-7009c9b53be2 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER-ISOLATION -i br-3e70ad5e4d73 -o docker0 -j DROP
-A DOCKER-ISOLATION -i docker0 -o br-3e70ad5e4d73 -j DROP
-A DOCKER-ISOLATION -i br-7009c9b53be2 -o docker0 -j DROP
-A DOCKER-ISOLATION -i docker0 -o br-7009c9b53be2 -j DROP
-A DOCKER-ISOLATION -i br-4dc510063f2a -o docker0 -j DROP
-A DOCKER-ISOLATION -i docker0 -o br-4dc510063f2a -j DROP
-A DOCKER-ISOLATION -i br-4dc510063f2a -o br-7009c9b53be2 -j DROP
-A DOCKER-ISOLATION -i br-7009c9b53be2 -o br-4dc510063f2a -j DROP
-A DOCKER-ISOLATION -i br-3e70ad5e4d73 -o br-7009c9b53be2 -j DROP
-A DOCKER-ISOLATION -i br-7009c9b53be2 -o br-3e70ad5e4d73 -j DROP
-A DOCKER-ISOLATION -i br-3e70ad5e4d73 -o br-4dc510063f2a -j DROP
-A DOCKER-ISOLATION -i br-4dc510063f2a -o br-3e70ad5e4d73 -j DROP
-A DOCKER-ISOLATION -j RETURN
COMMIT
# Completed on Wed Dec 12 11:14:37 2018

gigantischer ()
Ответ на: комментарий от anonymous

наверное не проще, раз апач находится внутри docker контейнера:

# docker-compose exec owncloud bash

root@6d18350849e7: /var/www/owncloud # ls /etc/apache
ls: cannot access '/etc/apache': No such file or directory

root@6d18350849e7: /var/www/owncloud # ps auxw
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   4632   824 ?        Ss   10:07   0:00 /bin/sh /usr/sbin/apachectl -f /etc/apache2/apache2.conf -DFOREGROUND
root       212  0.0  0.0  28360  2620 ?        Ss   10:07   0:00 /usr/sbin/cron -l
root       217  0.0  0.0 772472 40328 ?        S    10:07   0:00 /usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND
www-data   218  0.0  0.0 779220 44608 ?        S    10:07   0:00 /usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND
www-data   219  0.0  0.0 1015132 54464 ?       S    10:07   0:00 /usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND
www-data   220  0.0  0.0 779380 44960 ?        S    10:07   0:00 /usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND
www-data   221  0.0  0.0 1015128 54564 ?       S    10:07   0:00 /usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND
www-data   222  0.0  0.0 1015128 52364 ?       S    10:07   0:00 /usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND
www-data   321  0.0  0.0 1015132 52240 ?       S    10:13   0:00 /usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND
root      1114  0.2  0.0  18648  3500 ?        Ss   11:15   0:00 bash
root      1121  0.0  0.0  34400  2804 ?        R+   11:15   0:00 ps auxw

gigantischer ()
Ответ на: комментарий от gigantischer

Тебе уже в другой теме рекомендовали указать не только мапинг порта, но и байнд его к адресу.

Ты проверил, что байнд к адресу интерфейса tun не закрывает доступ снаружи?

anonymous ()
Ответ на: комментарий от anonymous

как я укажу bind, если внутри контейнера:

root@6d18350849e7: /var/www/owncloud # ls /etc/apache
ls: cannot access '/etc/apache': No such file or directory

gigantischer ()
Ответ на: комментарий от anonymous

т.е. запускать контейнер как-то так?

# docker run --privileged --name pritunl --restart unless-stopped --net=host -d -t andrey0001/pritunl -p 192.168.226.1:1194:80

где 192.168.226.1 адрес tun0 интерфейса?

gigantischer ()
Ответ на: комментарий от gigantischer

вернее так?

# docker run --privileged --name pritunl --restart unless-stopped --net=host -d -t andrey0001/pritunl -p 172.20.0.1:80:1194

где 172.20.0.1 адрес моста с контейнера owncloud

gigantischer ()

докер в действии. свели запуск любого сервиса к 2м командам, знающим пользователям пофигу, а миллениалы тупо тычут и ничего не работает. дибилизация во все поля.

Anoxemian ★★★★★ ()
Ответ на: комментарий от anonymous

т.е. в docker-compose.yml указать:

services:
  owncloud:
    image: owncloud/server:${OWNCLOUD_VERSION}
    restart: always
    ports:
      - "192.168.223.1:${HTTP_PORT}:8080"
..........................................

где 192.168.223.1 - IP tun интерфейса ?

gigantischer ()
Ответ на: комментарий от gigantischer

так не прошло:

ERROR: for owncloud  Cannot start service owncloud: driver failed programming external connectivity on endpoint neu_owncloud_1 (0a1fa2f43d369da5ea58baa5775e8fbfc06f516c04c98a1db857e9a29ac0721e): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
ERROR: Encountered errors while bringing up the project.

gigantischer ()
Ответ на: комментарий от gigantischer

Там настраиваются порты и адреса локалхоста к контейнеру.

Если ругается, что порт уже занят, то посмотри - кем занят.

sudo netstat -lntp | grep 80

И грохни (превадрительно разобравшись!!)

Но вообще как-то не так.

Сделай один веб-сервер типа нжинкс на хосте (не в контейнере) и настрой его проксю на бекенд (в контейнеры).

PunkoIvan ★★★★ ()
Ответ на: комментарий от PunkoIvan

указал

services:
  owncloud:
    image: owncloud/server:${OWNCLOUD_VERSION}
    restart: always
    ports:
      - "192.168.223.1:${HTTP_PORT}:8080"
..........................................

где 192.168.223.1 - IP tun0 интерфейса на сервере. Теперь сайт снаружи не открывается ни с openvpn-подключением, ни без него..

При vpn подключении внешний ip eth0 не пингуется.

gigantischer ()
Ответ на: комментарий от gigantischer

Теперь сайт снаружи не открывается ни с openvpn-подключением, ни без него..

По какому адресу пробуешь достучаться?

anonymous ()
Ответ на: комментарий от gigantischer

Так это то что тебе было нужно или нет?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.