Поэтому я искал в сети сценарий, который отбрасывает весь трафик на все порты, кроме портов http(80) и https(443), а затем разрешает трафик только на все другие порты из страны x (где в моем страна дела x - это США).
Я не хочу добавлять все IP-адреса из каждой страны, я просто хочу разрешить ips из моей страны, а затем блокировать практически весь другой трафик из внешнего мира. Никто за пределами моей страны не должен иметь доступа к ssh, ftp, smtp, ect. кроме меня. Если это когда-нибудь изменится, я добавлю специальный случай для него, когда он подойдет.
Примечание
Я должен заметить, что я нашел вопрос, который содержит скрипт для запрета ip по стране с использованием таблиц ip, но это большая дополнительная вставка, которую я должен был бы сделать.
Сценарий, помеченный как лучший ответ, заблокирует весь трафик с этих IP-адресов. Я только хочу заблокировать доступ ко всем портам, кроме 80 и 443.
Обновить
Со следующим правилом
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
смогу ли я изменить его и сделать что-то вроде
iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
Я предположил бы, что это позволит ips из Китая получить доступ к порту 80 и порту 443, а остальные будут отброшены. Будет ли это предположение правильным? Если нет, то почему нет?
Обновление 2
После некоторого возни я обнаружил, что моей версии Ubuntu не нравится атрибут --dport
. Поэтому вместо того, чтобы использовать это, те из нас, кто работает с Ubuntu 14+ (по крайней мере, на некоторых машинах установлены только Ubuntu 14.04, 14.10 и 15.04), должны будут использовать -p PORT_NUMBER_OR_NAME
Так это будет выглядеть
iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT
или для входящего трафика,
iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT