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

Как определить, какая программа перенаправляет трафик на порт 80?

Некоторое время назад я хотел перенаправить весь трафик порта 80 на сервере Ubuntu на порт 3000 для приложения Rails. Вместо того, чтобы просто использовать iptables, я погуглил и нашел другой способ сделать это (я не могу представить, почему я сначала не нашел iptables), но теперь я не могу вспомнить, как я это сделал! Есть ли способ отследить, что происходит, чтобы я мог его выключить? В iptables нет правил, и трафик никогда не попадает в apache.

Спасибо!

ОБНОВИТЬ:

Нет, обычно вам просто нужно загрузить новый набор правил. См: askubuntu.com/q/161551/266. Но не отчаивайтесь. Iptables может сбивать с толку. - Стефан Ласевски

Введите следующую команду:

# netstat -tulpn | grep :80

Он должен вывести что-то вроде этого примера:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1138/mysqld
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      850/portmap
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1607/apache2
tcp        0      0 0.0.0.0:55091           0.0.0.0:*               LISTEN      910/rpc.statd
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1467/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      992/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1565/cupsd
tcp        0      0 0.0.0.0:7000            0.0.0.0:*               LISTEN      3813/transmission
tcp6       0      0 :::22                   :::*                    LISTEN      992/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      1565/cupsd
tcp6       0      0 :::7000                 :::*                    LISTEN      3813/transmission
udp        0      0 0.0.0.0:111             0.0.0.0:*                           850/portmap
udp        0      0 0.0.0.0:662             0.0.0.0:*                           910/rpc.statd
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1467/dnsmasq
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1467/dnsmasq
udp        0      0 0.0.0.0:68              0.0.0.0:*                           3697/dhclient
udp        0      0 0.0.0.0:7000            0.0.0.0:*                           3813/transmission
udp        0      0 0.0.0.0:54746           0.0.0.0:*                           910/rpc.statd   

Как вы можете видеть выше, первая запись, порт TCP 3306, был открыт mysqld процесс, имеющий PID # 1138. Просто посмотрите на свою запись для порта 80 и посмотрите, какая служба и идентификатор процесса на нем запущены. Вы можете проверить это, используя /proc, введите команду:

# ls -l /proc/1138/exe

Вы замените 1138 с любым PID, который находится на порту 80 для вас.

Он должен вывести что-то вроде этого:

lrwxrwxrwx 1 root root 0 2010-10-29 10:20 /proc/1138/exe -> /usr/sbin/mysqld

Это даст вам местоположение той программы, которая работает за ней.

Если у вас есть переадресация портов с помощью SSH, вам нужно перенастроить файл sshd_config, расположенный здесь, с помощью текстового редактора ... vim или gedit сделают свое дело:

sudo vi /etc/ssh/sshd_config

sudo gedit /etc/ssh/sshd_config

В этом файле вы должны увидеть такую ​​запись, просто закомментируйте ее или измените на нет. Чтобы прокомментировать это, поставьте # символ перед ним, затем сохраните и закройте:

# Port forwarding
AllowTcpForwarding yes

Чтобы узнать, какой процесс прослушивает порт 80:

sudo netstat -tnlp | grep -w 80

Надеюсь, из вывода должно быть очевидно, что это такое.