Тому я роздивлявся в мережі сценарій, який знизить увесь трафік до всіх портів, за винятком портів 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