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

Мой сервер ubuntu замедляет интернет-соединение при запуске

У меня есть сервер Ubuntu 16.04, на котором работает LAMP с phpmyadmin. У меня установлен git и crontab для автоматического резервного копирования в облако. Моя проблема в том, что когда сервер работает, я не могу использовать Интернет на любом другом устройстве. У меня есть Dell Optiplex GX620. Любая помощь будет оценена. Я запустил iftop и обнаружил, что следующие IP-адреса резко увеличивают трафик tx.

Кажется, я получаю новый IP-адрес каждую минуту. Те, которые я проверил, из Китая, но я нахожусь в США. Единственный трафик, о котором я могу думать, это Codeanywhere, github / git и No-ip. Есть ли способ заблокировать трафик из Китая? У меня 100 мбит / с вниз и вверх, так как я использую оптоволоконное соединение. Как вы думаете, это какие-то из перечисленных мною услуг?

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

root@buntubox-1:~# netstat -nputwa
Active Internet connections (servers and established)
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      972/mysqld      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      896/sshd        
tcp        0      1 192.168.1.99:52398      198.204.254.253:8623    SYN_SENT    1207/sshd       
tcp        0    296 192.168.1.99:22         192.168.1.50:55597      ESTABLISHED 14947/0         
tcp        0      0 192.168.1.99:47616      164.132.4.3:6000        ESTABLISHED 928/bash        
tcp6       0      0 :::80                   :::*                    LISTEN      1198/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      896/sshd        

...

root@buntubox-1:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

ОБНОВИТЬ:

Я переустановил os. Следующее нормально?

root@buntubox-001:~# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh
ufw-before-logging-input  all  --  anywhere             anywhere            
ufw-before-input  all  --  anywhere             anywhere            
ufw-after-input  all  --  anywhere             anywhere            
ufw-after-logging-input  all  --  anywhere             anywhere            
ufw-reject-input  all  --  anywhere             anywhere            
ufw-track-input  all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ufw-before-logging-forward  all  --  anywhere             anywhere            
ufw-before-forward  all  --  anywhere             anywhere            
ufw-after-forward  all  --  anywhere             anywhere            
ufw-after-logging-forward  all  --  anywhere             anywhere            
ufw-reject-forward  all  --  anywhere             anywhere            
ufw-track-forward  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ufw-before-logging-output  all  --  anywhere             anywhere            
ufw-before-output  all  --  anywhere             anywhere            
ufw-after-output  all  --  anywhere             anywhere            
ufw-after-logging-output  all  --  anywhere             anywhere            
ufw-reject-output  all  --  anywhere             anywhere            
ufw-track-output  all  --  anywhere             anywhere            

Chain f2b-sshd (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

Chain ufw-after-forward (1 references)
target     prot opt source               destination         

Chain ufw-after-input (1 references)
target     prot opt source               destination         
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-ns
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-dgm
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:netbios-ssn
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:microsoft-ds
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootps
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootpc
ufw-skip-to-policy-input  all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST

Chain ufw-after-logging-forward (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-after-logging-input (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-after-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-after-output (1 references)
target     prot opt source               destination         

Chain ufw-before-forward (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ufw-user-forward  all  --  anywhere             anywhere            

Chain ufw-before-input (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-logging-deny  all  --  anywhere             anywhere             ctstate INVALID
DROP       all  --  anywhere             anywhere             ctstate INVALID
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ACCEPT     udp  --  anywhere             anywhere             udp spt:bootps dpt:bootpc
ufw-not-local  all  --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             224.0.0.251          udp dpt:mdns
ACCEPT     udp  --  anywhere             239.255.255.250      udp dpt:1900
ufw-user-input  all  --  anywhere             anywhere            

Chain ufw-before-logging-forward (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-input (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-before-output (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-user-output  all  --  anywhere             anywhere            

Chain ufw-logging-allow (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "

Chain ufw-logging-deny (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ctstate INVALID limit: avg 3/min burst 10
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-not-local (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type MULTICAST
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST
ufw-logging-deny  all  --  anywhere             anywhere             limit: avg 3/min burst 10
DROP       all  --  anywhere             anywhere            

Chain ufw-reject-forward (1 references)
target     prot opt source               destination         

Chain ufw-reject-input (1 references)
target     prot opt source               destination         

Chain ufw-reject-output (1 references)
target     prot opt source               destination         

Chain ufw-skip-to-policy-forward (0 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            

Chain ufw-skip-to-policy-input (7 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            

Chain ufw-skip-to-policy-output (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-track-forward (1 references)
target     prot opt source               destination         

Chain ufw-track-input (1 references)
target     prot opt source               destination         

Chain ufw-track-output (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             ctstate NEW

Chain ufw-user-forward (1 references)
target     prot opt source               destination         

Chain ufw-user-input (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere             udp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http /* 'dapp_Apache' */

Chain ufw-user-limit (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 5 LOG level warning prefix "[UFW LIMIT BLOCK] "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain ufw-user-limit-accept (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-user-logging-forward (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-input (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-output (0 references)
target     prot opt source               destination         

Chain ufw-user-output (1 references)
target     prot opt source               destination  

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

Теперь, когда вы переустановили и приобрели брандмауэр, я предлагаю вам принять во внимание следующее:

  • Вы когда-нибудь обращались к серверу из-за пределов сети, в которой он размещен? В противном случае: не перенаправляйте никакие порты с вашего маршрутизатора на сервер - ему не нужно принимать входящие соединения из Интернета.
  • Рассматривать установка ClamAV и настройте его для работы ночью.
  • Установить RKHunter и настройте его для работы ночью.
  • Рассмотрите возможность установки ChRootKit и пусть он будет работать каждую ночь.
  • Настроить fail2ban для отслеживания попыток SSH его также можно использовать для смягчения атак методом грубой силы MySQL / PHPMyAdmin и Apache - вы можете не обращать внимания на основной раздел этой статьи, посвященный межсетевому экрану, так как вы уже разобрали его.
  • Рассмотрите возможность установки LogWatch и просматривайте журналы ежедневно.
  • Установить OSSEC-HIDS - это, а также fail2ban и RKHunter - основные из них, которые я бы порекомендовал. Ossec обнаружит вторжения, обнаружит изменения в файлах и расскажет, когда и как вас взломали.
  • Установить и запустить Lynsis Audit это предложит способы укрепить вашу безопасность, если вы действительно параноик, проработайте их и отметьте как можно больше.
  • Запретить вход root через SSH, и используйте ключ аутентификации.

Надеюсь, что это поможет, вы можете сделать больше, всегда есть, и вы никогда не сможете быть в полной безопасности, все дело в том, чтобы усложнить задачу, а затем уменьшить ущерб. Резервное копирование, копирование жизненно важных журналов на другие серверы, не раскрывать порты, которые вам не нужны, изменять демаскировку по умолчанию ... список можно продолжить, но если вы просто играете, приведенного выше должно быть более чем достаточно . Если хочешь большего, гугл твой друг, это хороший стартер. Как это. И это.

Оригинальный ответ:

В идеале вы хотите знать, к какому процессу подключено соединение, netstat может вам это сказать.

netstat -nputwa

Это выведет каждое соединение TCP / UDP, входящее / исходящее, и покажет вам ответственный IP и процесс, к которому он подключен. Если вы определили, что IP-адрес подключается к процессу, которого не должно быть / не должно быть, просто заблокируйте его на уровне брандмауэра.

Если вам нужна помощь в его расшифровке, опубликуйте вывод команды в своем вопросе как правку.

РЕДАКТИРОВАТЬ: у вас нет брандмауэра.

Приведенное ниже поможет вам начать работу, создайте новый файл /etc/iptables.firewall.rules и вставьте в него:

*filter

#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

#  Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow SSH connections
#  The -dport number should be the same port number you set in sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP

COMMIT

Сохраните файл и запустите iptables-restore < /etc/iptables.firewall.rules

Вам также необходимо убедиться, что правила вступают в силу при загрузке, для этого создайте файл по адресу /etc/network/if-pre-up.d/firewall и добавьте к нему:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.firewall.rules

А потом, наконец, запустите:

 chmod +x /etc/network/if-pre-up.d/firewall

Это поможет вам начать работу, вам необходимо провести дополнительные исследования iptables, в частности, раздел «Разрешить весь исходящий трафик - вы можете изменить это, чтобы разрешить только определенный трафик» - я бы посоветовал вам заблокировать это, чтобы разрешить только http и ssh. Эта статья внизу есть сценарий с командами, объясняющими, как это сделать.

Кроме того, обратите внимание на установку Fail2Ban и OSSEC - это системы предотвращения атак и обнаружения вторжений. Кроме того, такие вещи, как Logwatch, могут помочь для мониторинга, ежедневного сканирования руткитов и не открывать ваш сервер для Интернета, если в этом нет необходимости.

Если вы думаете, что вас взломали, проще всего сделать резервную копию ваших файлов и переустановить ОС - и на этот раз правильно настроить безопасность с первого дня. Если вам повезет, выполните описанное выше и заблокируйте IP-адреса, которые вы считаете рискованными. на уровне межсетевого экрана.

iptables -A INPUT -s <ip to block> -j DROP

Обратите внимание: каждый раз, когда вы добавляете новый, создавайте резервную копию своего файлового экрана, чтобы он оставался постоянным.

iptables-save > /etc/iptables.firewall.rules

Еще одна хорошая идея для вас - посмотреть на процессы, запущенные в вашей системе, с помощью htop / top - выглядят ли какие-то подозрительные? Попробуйте запустить RootkitHunter и CHRootKit - они дают какие-то результаты? Если так - протрите и начните заново.

Еще одна хорошая идея, как правило, при поиске защиты сервера - это запустить Lynsis Audit, он посоветует вам, что нужно предпринять.

Кстати, вы говорите, что получаете новый IP каждую минуту - это все еще так? Если да, продолжайте повторять команду netstat, какой процесс используется? Взгляните на свои журналы, вы видите поступающие запросы? Если да, то что они делают?

tail -f /var/log/auth.log

tail -f /var/log/syslog

Наконец, посмотрите комментарий под вашим вопросом о том, что делать, если вас взломали, есть ли у вас / нет, это очень хорошее чтение.

"" Есть ли способ заблокировать трафик из Китая? "

Да, например, вы можете использовать iptables для внесения в черный список этих диапазонов IP: http://www.nirsoft.net/countryip/cn.html (я только что погуглил список заблокированных IP-адресов Китая)