У меня есть сервер 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
РЕДАКТИРОВАТЬ
Теперь, когда вы переустановили и приобрели брандмауэр, я предлагаю вам принять во внимание следующее:
Надеюсь, что это поможет, вы можете сделать больше, всегда есть, и вы никогда не сможете быть в полной безопасности, все дело в том, чтобы усложнить задачу, а затем уменьшить ущерб. Резервное копирование, копирование жизненно важных журналов на другие серверы, не раскрывать порты, которые вам не нужны, изменять демаскировку по умолчанию ... список можно продолжить, но если вы просто играете, приведенного выше должно быть более чем достаточно . Если хочешь большего, гугл твой друг, это хороший стартер. Как это. И это.
Оригинальный ответ:
В идеале вы хотите знать, к какому процессу подключено соединение, 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-адресов Китая)