Навожу еще один простой способ обезопасить сервер от сканирования. В данном случаи будем использовать только iptables. В зависимости от того, какие у нас работают сервисы на серверах, набор портов будет разный. Для начала создадим свою цепочку, в которую добавим список IP адресов, которым позволено/запрещено иметь доступ к списку портов.
root@srv-19:~# iptables -N antiscan root@srv-19:~# iptables -A antiscan -s 195.34.25.11 -j ACCEPT root@srv-19:~# iptables -A antiscan -s 195.34.25.12 -j ACCEPT root@srv-19:~# iptables -A antiscan -j DROP
В данном случае разрешено доступ только для двух IP-адресов. Теперь нужно добавить в цепочку INPUT список портов, к которым ограничивается доступ. Для начала добавим TCP порты.
root@srv-19:~# iptables -I INPUT -m tcp -p tcp --dport 25 -j antiscan root@srv-19:~# iptables -I INPUT -m tcp -p tcp --dport 82 -j antiscan root@srv-19:~# iptables -I INPUT -m tcp -p tcp --dport 3306 -j antiscan root@srv-19:~# iptables -I INPUT -m tcp -p tcp --dport 8083 -j antiscan
Далее добавим UDP порты.
root@srv-19:~# iptables -I INPUT -m udp -p udp --dport 111 -j antiscan root@srv-19:~# iptables -I INPUT -m udp -p udp --dport 161 -j antiscan
Теперь можно добавить правила в автозагрузку.
root@srv-19:~# iptables-save > /etc/iptables.rules root@srv-19:~# cat > /etc/network/if-pre-up.d/iptablesup << EOF #!/bin/bash iptables-restore < /etc/iptables.rules exit 0 EOF root@srv-19:~# chmod +x /etc/network/if-pre-up.d/iptablesup
Можно написать маленький скрипт, который добавлять все нужные цепочки и правила.
root@srv-19:~# cat antiscan.sh #!/bin/bash WHITEIP=( `cat /opt/cdn/utils/iptables/whitelist.ip` ) PORTS_TCP=( 25 82 3306 8083 ) PORTS_UDP=( 111 161 ) if [ ! -f /opt/cdn/utils/iptables/whitelist.ip ] then echo "Please add white list /opt/cdn/utils/iptables/whitelist.ip" exit 1 fi iptables -N antiscan && echo "Antiscan chain was added" || echo "Failed to create Antiscan chain" echo "============== Adding white list ===============" for IPs in "${WHITEIP[@]}" do iptables -A antiscan -s ${IPs} -j ACCEPT && echo "${IPs} was added to Antiscan chain" || echo "Failed to add ${IPs} to Antiscan chain" done echo "============== Adding TCP ports ===============" for TCPPORT in "${PORTS_TCP[@]}" do iptables -I INPUT -m tcp -p tcp --dport ${TCPPORT} -j antiscan && echo "Adding Antiscan chain for ${TCPPORT} port to INPUT chain" || echo "Failed to add Antiscan chain for ${TCPPORT} port to INPUT chain" done echo "============== Adding UDP ports ===============" for UDPPORT in "${PORTS_UDP[@]}" do iptables -I INPUT -m udp -p udp --dport ${UDPPORT} -j antiscan && echo "Adding Antiscan chain for ${UDPPORT} port to INPUT chain" || echo "Failed to add Antiscan chain for ${UDPPORT} port to INPUT chain" done iptables -A antiscan -j DROP && echo "Adding DROP rule for Antiscan chain" || echo "Failed to add DROP rule to Antiscan chain" echo "================= ADD rules to autostart ===================" iptables-save | grep -v fail2ban > /etc/iptables.rules cat > /etc/network/if-pre-up.d/iptablesup << EOF #!/bin/bash iptables-restore < /etc/iptables.rules exit 0 EOF chmod +x /etc/network/if-pre-up.d/iptablesup echo "================= DONE ===================" exit 0
/opt/cdn/utils/iptables/whitelist.ip — это список IP адресов, которые имеют доступ к портам.
Так же можно написать маленький скрипт для добавления нового IP в белый список.
root@srv-19:~# cat antiscan_append.sh #!/bin/bash usage() { echo -e "\nUsage: $0 IP-address" echo -e "Example:\n $0 82.50.92.45" exit 1 } if [ $# -lt 1 ] then echo "Please enter IP to add to white list" usage fi echo "============== Check if exist ========================" iptables -C antiscan -s $1 -j ACCEPT && echo "Already exist" && exit 1 echo "============== Adding IP to white list ===============" iptables -I antiscan 1 -s $1 -j ACCEPT && echo "$1 was added to Antiscan chain" || echo "Failed to add $1 to Antiscan chain" echo "================= Saving rules to autostart ===================" iptables-save | grep -v fail2ban > /etc/iptables.rules echo "================= DONE ===================" exit 0
Также добавим скрипт для удаления и чистки всех правил
root@srv-19:~# cat antiscan_clean.sh #!/bin/bash PORTS_TCP=( 25 82 3306 8083 ) PORTS_UDP=( 111 161 ) iptables -F antiscan && echo "Antiscan chain was flushed" || echo "Failed to flush antiscan chain" for TCPPORT in "${PORTS_TCP[@]}" do iptables -D INPUT -m tcp -p tcp --dport ${TCPPORT} -j antiscan && echo "Delete Antiscan chain for ${TCPPORT} port to INPUT chain" || echo "Failed to del Antiscan chain for ${TCPPORT} port to INPUT chain" done for UDPPORT in "${PORTS_UDP[@]}" do iptables -D INPUT -m udp -p udp --dport ${UDPPORT} -j antiscan && echo "Delete Antiscan chain for ${UDPPORT} port to INPUT chain" || echo "Failed to del Antiscan chain for ${UDPPORT} port to INPUT chain" done iptables -X antiscan && echo "Deleting antiscan chain" || echo "Failed to delete antiscan chain" echo "================= Deleting autostart rules ===================" rm -f /etc/iptables.rules && echo "Deleting /etc/iptables.rules" || echo "Failed to delete /etc/iptables.rules" rm -f /etc/network/if-pre-up.d/iptablesup && echo "Deleting /etc/network/if-pre-up.d/iptablesup" || echo "Failed to delete /etc/network/if-pre-up.d/iptablesup" exit 0
Ну и маленький скрипт для удаления определенного IP со списка позволенных.
root@srv-19:~# cat antiscan_del_ip.sh #!/bin/bash echo "============== Check if exist ========================" iptables -C antiscan -s $1 -j ACCEPT if [ $? -eq 0 ] then echo "Entry exist" echo "Deleting..." iptables -D antiscan -s $1 -j ACCEPT && echo "$1 was deleted from Antiscan chain" || echo "Failed to delete $1 from Antiscan chain" echo "================= Saving rules to autostart ===================" iptables-save | grep -v fail2ban > /etc/iptables.rules echo "================= DONE ===================" exit 0 else echo "Entry doesn't exist" exit 1 fi
Пробуйте, может кому-то понадобится.
Спасибо! Ваша работа очень полезна! Не бросайте Ваш ресурс — он нам очень нужен. И то, что я не пишу комментарии ко всем Вашим статьям ещё не значит, что я их не читаю. Спасибо за труд и удачи!
Спасибо, хороший ресурс.
Привет , я так понял что надо либо написать (создать) файлы , или выполнить командами все это , мге конечно неудобно а есть что то готовое которое можно запустить одной коммандой и сработал допустим один файл и выполнил все операции по настройкам , а вообще мне помощь не помешала бы , а то я мало в этом понимаю а делать надо потому что только что заблокировали мой серв с хостинга на день , а на этой машине у меня распологались еще 4 сервера с играми а теперь все стоит…
Ну сначала нужно определится со списком портов, которые нужно закрыть от внешнего мира. Это могут быть внутренние сервисы, которые взаимодействуют по сети и должны быть доступны только между доверенными серверами, к примеру mysql БД с репликацией, сбор SNMP метрик для мониторинг системы, и тп. После получения списка нужных портов и доверенных IP-адресов — просто редактируем скрипт как я писал в статье и применяем.
я бы рад определить , но боюсь закрою порт почты и посетители не смогут регатся , или зайти на сервер игровой , я только самую малость понимаю , а за совет спасибо огромное , я думал пройдет не замеченным, дело в том что я снимаю сервер достаточно хороший который позволяет там установить еще восемь игровых серверов а ДДОС защита слабая на хостинге , при чем у них есть тоже игровые сервера и они конкретно на каждый ставят блокировку , а я вот не покупаю у них за деньги такую защиту и меня уже два раза досили , спросил почему именно меня , говорят что мол защиты нет , я им говорю так у вас общая стоит , да говорят стоит но не достаточно мол этого надо еще установить блокировки (купить) , короче вымогание денег в пустую, вот мне поэтому и нужен ДДОС защита , ток я мало в этом волоку, если есть прога на Линуху то наверно прогой лучше будет , подскажите плииз, работа ведется с коммандной строки , оболочку не ставлю для экономии ресурсов…
Если у Вас выделенный сервер, то нужно ставить fail2ban + iptables настроить.
Fail2ban читает логи определенных сервисов (apache,nginx,ssh,syslog, и т.п.) и банит по IP. К примеру, посылают милиард запросов на апликейшн, на котором крутиться игра — если есть логи запросов — можно по регулярке банить IP с которых они приходят (все на автомате).
Iptables вообще закроет все порты от сканирования, кроме тех, которые идут для клиентов.
спс огромное , вы так добры к клиентам , шас обязательно скачаю и буду настраивать
Обращайтесь, если возникнут вопросы.
спасибо все работает ,поставил по умолчанию, т.к. незнанаю что конкретно изменять , и этого хватает вполне…..