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

UFW / IPTables: как безопасно разрешить аутентифицированный доступ git с помощью github

Вот как я настраиваю свои iptables с помощью UFW:

  1. sudo ufw default deny incoming (запретить все входящие)
  2. sudo ufw default deny outgoing (запретить все исходящие)
  3. sudo ufw allow out 53 (принять исходящие DNS-трафик, как tcp, так и udp)
  4. sudo ufw allow in 80/tcp (принимать весь входящий TCP-порт с порта 80)
  5. sudo ufw allow out 80/tcp (принять весь исходящий TCP на порт 80)
  6. sudo ufw allow proto tcp from <admin_ip_addr> to <server_ip_addr> port 22 (принимать входящий tcp порт 22 с IP офиса администратора для ssh)
  7. sudo ufw allow out 9418/tcp (принимать исходящие соединения git)
  8. sudo ufw allow proto tcp from <server_ip_addr> to any port 22 (принимать исходящие ssh-соединения для подключения к GitHub)

На английском языке: блокировать все, кроме HTTP, DNS, входящего SSH с IP-адресов администратора, исходящего GIT и исходящего SSH.

К сожалению, когда я тогда сделаю git clone git@github.com:username/project.git он застревает в Initialized empty Git repository in /home/adminuser/exper/project/.git/

Когда я затем включаю весь исходящий трафик с sudo ufw default allow outgoingи повторите команду git clone, она работает.

Итак, очевидно, есть что-то исходящее, что все еще блокируется.

Может ли кто-нибудь сказать мне, что это может быть, и какое правило я должен добавить, чтобы разрешить это?

Я также безуспешно пробовал следующие правила:

  1. sudo ufw allow out 1024:65535/udp

Вы пытаетесь подключиться по SSH, и это (кажется) разрешено, поэтому пора диагностировать проблему. Мне нравится добавлять правило LOG непосредственно перед тем, как отбрасывать какие-либо пакеты, поэтому я точно знаю, что отбрасывается. В противном случае небольшое действие tcpdump должно идентифицировать трафик, который никуда не денется. Как только вы узнаете, что сбрасывается, нетрудно добавить необходимые правила, чтобы разрешить это.

После долгого удара головой и блокировки доступа к 2 серверам. Приведенные ниже правила брандмауэра помогли мне сделать «git clone». Надеюсь, что это поможет и вам всем.

К вашему сведению: я запускаю приведенные ниже команды на «eth0», который является частным интерфейсом для моего сервера. Я получил IP-адрес подсети github отсюда: https://help.github.com/articles/github-s-ip-addresses/

sudo ufw reset
sudo ufw status verbose
sudo ufw default deny incoming
sudo ufw default deny outgoing
# For resolving DNS problem
sudo ufw allow out on eth0 to any port 53
# For allowing access to github.com
sudo ufw allow out on eth0 to 192.30.252.0/22 port 22
sudo ufw --force enable