Quindi ho cercato in rete uno script che rilascerà tutto il traffico verso tutte le porte tranne le porte http (80) e https (443), e quindi consenti solo il traffico su tutte le altre porte dal paese x (dove nel mio case country x sono gli Stati Uniti).
Non voglio aggiungere tutti gli IP di tutti i paesi, voglio solo consentire ips dal mio paese e bloccare quasi tutto il resto del traffico dall'esterno. Nessuno al di fuori del mio paese dovrebbe avere accesso a ssh, ftp, smtp, ect. diverso da me stesso. Se questo dovesse mai cambiare, aggiungerò un caso speciale quando si avvicina.
Nota a margine
Devo notare che ho trovato una domanda che contiene uno script per vietare l'IP per paese usando le tabelle ip ma questo è un sacco di extra che avrei dovuto fare.
Lo script contrassegnato come la migliore risposta bloccherà tutto il traffico proveniente da tali IP. Voglio solo bloccare l'accesso a tutte le porte tranne 80 e 443.
Aggiornare
Con la seguente regola,
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
sarei in grado di modificarlo e fare qualcosa di simile
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
Suppongo che ciò consentirebbe agli IP dalla Cina di accedere alla porta 80 e alla porta 443 e lascerebbe cadere il resto. Questa ipotesi sarebbe corretta? In caso contrario, perché no?
Aggiornamento 2
Dopo alcuni scherzi ho scoperto che la mia versione di Ubuntu non piace l' --dport
attributo. Quindi invece di usare quelli che usano Ubuntu 14+ (almeno, ho installato Ubuntu 14.04, 14.10 e 15.04 su alcune macchine) dovranno usare-p PORT_NUMBER_OR_NAME
Così sarebbe simile
iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT
o per il traffico in entrata,
iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT