Ubuntu IPTables chỉ cho phép 1 quốc gia


10

Vì vậy, tôi đã tìm kiếm trên mạng một tập lệnh sẽ thả tất cả lưu lượng truy cập vào tất cả các cổng ngoại trừ các cổng http (80) và https (443), sau đó chỉ cho phép lưu lượng truy cập trên tất cả các cổng khác từ quốc gia x (trong đó ở của tôi trường hợp quốc gia x là Mỹ).

Tôi không muốn thêm tất cả IP từ mọi quốc gia, tôi chỉ muốn cho phép ips từ quốc gia của mình sau đó chặn gần như tất cả lưu lượng truy cập khác từ thế giới bên ngoài. Không ai ngoài đất nước tôi có quyền truy cập vào ssh, ftp, smtp, ect. khác với bản thân mình Nếu điều này thay đổi, tôi sẽ thêm một trường hợp đặc biệt cho nó khi nó đến gần.

Lưu ý bên

Tôi phải lưu ý rằng tôi đã tìm thấy một câu hỏi có chứa tập lệnh cấm ip theo quốc gia bằng cách sử dụng các bảng ip nhưng đó là rất nhiều thao tác chèn thêm mà tôi sẽ phải làm.

Kịch bản được đánh dấu là câu trả lời hay nhất sẽ chặn tất cả lưu lượng truy cập từ các IP đó. Tôi chỉ muốn chặn truy cập vào tất cả các cổng ngoại trừ 80 và 443.

Cập nhật

Với quy tắc sau,

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

tôi có thể sửa đổi nó và làm một cái gì đó như

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

Tôi cho rằng điều này sẽ cho phép ips từ Trung Quốc truy cập vào cổng 80 và cổng 443 và nó sẽ bỏ phần còn lại. Giả định này có đúng không? Nếu không, tai sao không?

Cập nhật 2

Sau một vài lần loay hoay, tôi thấy rằng phiên bản Ubuntu của tôi không thích --dportthuộc tính này. Vì vậy, thay vì sử dụng những người trong chúng tôi chạy Ubuntu 14+ (ít nhất, tôi chỉ cài đặt Ubuntu 14.04, 14.10 và 15.04 trên một số máy) sẽ phải sử dụng-p PORT_NUMBER_OR_NAME

Vì vậy, nó sẽ trông giống như

iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT

hoặc cho lưu lượng truy cập đến,

iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT

Câu trả lời:


7

Bạn sẽ cần thêm hỗ trợ iptables cho định vị địa lý. Để làm như vậy, bạn sẽ phải làm theo các bước sau:

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

Điều này sẽ cho phép bạn làm những việc như:

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Điều đó sẽ chặn bất kỳ lưu lượng đi đến Trung Quốc (CN). Sự phức tạp của các quy tắc tùy thuộc vào bạn, về cơ bản bạn không cần một tập lệnh, chỉ cần viết ra các quy tắc bạn muốn áp dụng và sau đó sử dụng iptables-saveđể chúng được tải mỗi khi bạn khởi động lại.


Cảm ơn bạn! Tôi có một câu hỏi khác, tôi đã cập nhật câu hỏi của tôi ở trên để phản ánh nó. Bạn sẽ tình cờ biết câu trả lời cho nó?
Austin Kregel

Quy tắc sẽ hoạt động nhưng bạn phải thay đổi hướng của nó, bây giờ nó là OUTPUTvà bạn cần phải đặt nó INPUTvà không sử dụng --dst-cc--src-ccthay vào đó. Nhưng nếu câu hỏi là liệu nó có hoạt động kết hợp với bất kỳ iptablesquy tắc hiện có nào khác không , câu trả lời là có.
nKn

các xt_geoip_dllệnh không còn hoạt động, nó đòi hỏi một zip có doesnt tồn tại nữa
Martijn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.