Вот как я настраиваю свои iptables с помощью UFW:
sudo ufw default deny incoming
(запретить все входящие)sudo ufw default deny outgoing
(запретить все исходящие)sudo ufw allow out 53
(принять исходящие DNS-трафик, как tcp, так и udp)sudo ufw allow in 80/tcp
(принимать весь входящий TCP-порт с порта 80)sudo ufw allow out 80/tcp
(принять весь исходящий TCP на порт 80)sudo ufw allow proto tcp from <admin_ip_addr> to <server_ip_addr> port 22
(принимать входящий tcp порт 22 с IP офиса администратора для ssh)sudo ufw allow out 9418/tcp
(принимать исходящие соединения git)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, она работает.
Итак, очевидно, есть что-то исходящее, что все еще блокируется.
Может ли кто-нибудь сказать мне, что это может быть, и какое правило я должен добавить, чтобы разрешить это?
Я также безуспешно пробовал следующие правила:
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