Изучение 26 методов анализа больших данных: часть 1
Изучение 26 методов анализа больших данных: часть 1
iptables
это мощный инструмент, используемый для настройки встроенного брандмауэра ядра Linux. Он предустановлен в большинстве дистрибутивов Ubuntu, однако, если вы используете настроенную версию Ubuntu или работаете внутри контейнера, вам, скорее всего, придется установить ее вручную.
sudo apt-get install iptables iptables-persistent
После установки, если вас спросят, сохранять ли ваши текущие правила, это не имеет значения в данный момент, поскольку вы собираетесь удалить или создать новые правила позже.
Вы можете использовать netcat
команду (на компьютере, отличном от вашего сервера), чтобы проверить, какие порты открыты или закрыты.
nc -z -w5 -v SERVER_IP PORT
nc
это команда netcat-z
просто отправьте пакет без полезной нагрузки.-w5
подождите до 5 секунд ответа.-v
подробный режим.SERVER_IP
адрес вашего сервера.PORT
на порт, который вы хотите проверить, если он открыт (например 22
).На вашем сервере вы можете использовать netstat
команду, чтобы увидеть, какие порты в настоящее время прослушивают соединения.
sudo netstat -tulpn
Примечание. Хотя netstat
это удобно для поиска портов, с которыми вы хотите работать, вы должны знать о приложениях, которые вы в настоящее время установили на своем сервере, и какие порты прослушиваются, вам не нужно разрешать каждый порт, который вы найдете в netstat
выходных данных .
sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
-A INPUT
добавить правило в INPUT
цепочку, цепочка - это группа правил, которыми мы чаще всего будем пользоваться в этом руководстве INPUT
, OUTPUT
и PREROUTING
.-p tcp
установить tcp
в качестве протокола, к которому будет применяться это правило, также можно использовать другие протоколы, такие как udp
, icmp
или all
.-m tcp
использовать tcp
модуль. iptables
поддерживает дополнительные функции через модули, некоторые из которых уже предустановлены, iptables
а другие, например, geoip
модуль.--dport 22
Команды, начинающиеся с, --
указывают на дополнительные опции для ранее использованного модуля, в этом случае мы сообщим, что tcp
модуль применяется только к порту 22
.-m geoip
использовать geoip
модуль. Он будет ограничивать пакеты в зависимости от страны (дополнительная информация на шаге 5).--src-cc PE
скажите geoip
модулю ограничить входящие пакеты теми, которые приходят из Перу. Для получения дополнительных кодов стран ищите ISO 3166 country codes
в Интернете.-j ACCEPT
-j
аргумент указывает , iptables
что делать , если пакет соответствует ограничениям , указанным в предыдущих рассуждениях. В этом случае это будут ACCEPT
те пакеты, другие варианты REJECT
, DROP
и многое другое. Вы можете найти больше вариантов, выполнив поиск iptables jump targets
в Интернете.Перечислите все правила.
sudo iptables -L
Перечислите все команды, которые использовались для создания используемых в настоящее время правил, полезных для редактирования или удаления правил.
sudo iptables -S
Чтобы удалить конкретное правило, выберите правило sudo iptables -S
и замените его -A
на -D
.
# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Перечислите все пронумерованные правила в INPUT
цепочке.
sudo iptables -L INPUT --line-numbers
Удалить пронумерованное правило.
sudo iptables -D INPUT 2
Очистить все правила.
sudo iptables -F
Предупреждение: вы можете потерять соединение, если подключены по SSH .
Очистить только правила в OUTPUT
цепочке.
sudo iptables -F OUTPUT
Разрешить SSH
на eth0
интерфейсе
sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-i eth0
применить правило к определенному интерфейсу, чтобы разрешить из любого интерфейса удалить эту команду.Чтобы ограничить входящие пакеты определенным IP (т.е. 10.0.3.1/32
).
sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
-s 10.0.3.1/32
указывает IP / подсеть, из которой разрешены соединения.Установить правила цепочки по умолчанию.
Предупреждение: перед продолжением убедитесь, что вы применили правильные правила SSH при работе на удаленном сервере .
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
-P INPUT DROP
запрещает все входящие пакеты (т.е. никто не сможет подключиться к вашим работающим серверам, таким как Apache, SQL и т. д.).-P FORWARD DROP
запрещает все перенаправленные пакеты (т.е. когда вы используете свою систему в качестве маршрутизатора).-P OUTPUT ACCEPT
разрешает все исходящие пакеты (т.е. когда вы выполняете HTTP
запрос).Разрешить весь трафик по интерфейсу обратной связи ( рекомендуется ).
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
Сохранить текущие iptables
правила.
sudo netfilter-persistent save
sudo netfilter-persistent reload
Если вы работаете внутри контейнера, netfilter-persistent
команда, скорее всего, не будет работать, поэтому вам нужно перенастроить iptables-persistent
пакет.
sudo dpkg-reconfigure iptables-persistent
Разрешить DNS-запросы.
sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
Используйте state
модуль для разрешения RELATED
и ESTABLISHED
исходящих пакетов.
sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Разрешить желаемые порты; в этом случае HTTP
порты.
sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
Больше портов вы можете использовать.
FTP
: TCP в порту 21HTTPS
: tcp в порту 443DHCP
: udp в порту 67NTP
: udp в порту 123Примечание. Если вы хотите разрешить, apt-get
может потребоваться разрешить FTP
иHTTPS
.
Разрешить возвращаемый трафик только для RELATED
уже ESTABLISHED
подключенных соединений ( рекомендуется, поскольку иногда требуется двунаправленная связь).
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Разрешить пинг запросы извне.
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
Форвард трафик на eth0
порт 2200
в 10.0.3.21:22
(полезно , если вы хотите , чтобы открыть сервер SSH , который работает внутри контейнера).
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22
Если вы успешно войдете на свой сервер с помощью SSH, будет создано постоянное соединение (т.е. никаких новых соединений, даже если вы подключены более 1 часа). Если вы ошибетесь и попытаетесь войти снова, будет создано новое соединение. Это заблокирует непрерывные попытки входа по SSH, ограничивая количество новых подключений в час.
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP
Перенаправить все запросы от порта 443
к порту 4430
(полезно, если вы хотите привязать порт 443
без root
).
sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
ens3
сетевой интерфейс.-m geoip
модуль блока страны (см. шаг 5).Предупреждение: не используйте lo
, ОС будет отбрасывать все пакеты, перенаправленные на интерфейс обратной связи .
xtables-addons
Вы можете установить xtables-addons
модуль, используя различные методы, не стесняйтесь использовать метод установки, который подходит вам лучше всего.
Установите с помощью apt-get
.
sudo apt-get install xtables-addons-common
Установите с помощью module-assistant
.
sudo apt-get install module-assistant xtables-addons-source
sudo module-assistant --verbose --text-mode auto-install xtables-addons
Установить из источника.
sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
cd xtables-addons
./autogen.sh
./configure
make
sudo make install
Создайте базу данных "стран".
sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv
Перезагрузите вашу систему.
sudo reboot
После xtables-addons
успешной установки, после первой перезагрузки, запустите, depmod
иначе блокировка страны не будет работать должным образом (это требуется только в первый раз).
sudo depmod
Создайте скрипт /etc/cron.monthly/geoip-updater
для обновления geoip
базы данных ежемесячно.
#!/usr/bin/env bash
# this script is intended to run with sudo privileges
echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip
echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl
echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater
Сделать /etc/cron.monthly/geoip-updater
исполняемым.
sudo chmod +x /etc/cron.monthly/geoip-updater
_Примечание: Если вы получаете сообщение iptables: No chain/target/match by that name
об ошибке при попытке применить geoip
правило, возможно, xtables-addons
оно установлено неправильно. Попробуйте другой способ установки.
Блокируйте все входящие пакеты из Китая, Гонконга, России и Кореи.
sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP
Разрешить входящие пакеты через порт 80
отовсюду, кроме стран выше.
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Разрешить входящие пакеты на ens3
интерфейс через порт 22
только из Перу (не стесняйтесь выбирать код страны, из которой вы хотите принимать пакеты, например, US
для Соединенных Штатов).
sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT
Разрешить входящие пакеты на порт 443
только из Перу.
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT
Изучение 26 методов анализа больших данных: часть 1
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше