IPTABLES: Запретите доступа к домену всем кроме маленького списка дюйм/с

У меня есть несколько общедоступных веб-серверов и некоторые домашние машины Ubuntu. Я поддерживаю несколько доменов конкретно для контроля вещей как MySQL и Кэш-память. Идеально я смог бы соединиться с MySQL, Кэш-памятью, и т.д. от моих домашних машин при запрете всех остальных доступа.

Таким образом, мои iptables в настоящее время:

ACCEPT     tcp  --  home ip              0.0.0.0/0            tcp dpt:3306
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:222
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
ACCEPT     all  --  server 1 ip          0.0.0.0/0
ACCEPT     all  --  server 2 ip          0.0.0.0/0
ACCEPT     all  --  server 3 ip          0.0.0.0/0
DROP       all  --  198.245.49.225       0.0.0.0/0
DROP       all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Я хотел бы расширить свой iptables, таким образом, что я могу получить доступ ко всему из дома. Я полагаю, что это - вероятно, хорошая практика для добавления строки для моего домашнего IP для каждого порта, который я хочу вместо того, чтобы предоставить мой домашний IP доступ к каждому порту. Но возможно это не имеет значения. Дополнительно я хочу выполнить вещи как phpMemcachedAdmin, не требуя пароля.

Таким образом, я запустил несколько поисков Google о том, как запретить доступа к домену к целому миру. Я полагаю, что вставил строку, позволяющую мой IP на порте 80 чуть выше доступа запрета строки к домену к целому миру, и (скрещенные пальцы) я должен блокировать всех, но меня.

В сообщениях, которые я видел в своих поисках Google, было сказано, что Вы могли заблокировать домен через -m string "Host: domain.com" или через --string "domain.com". Ни один, кажется, не работает. Вот то, что я попробовал:

sudo iptables -I 9 -p tcp --dport 80 -m string "Host: domain.com" --algo bm -j DROP
sudo iptables -I 9 -p tcp --dport 80 -m string "domain.com" --algo bm -j DROP
sudo iptables -I 9 -p tcp --dport 80 --string "domain.com" --algo bm -j DROP

Первые две ошибки с Неверным аргументом 'Host:...' и последняя ошибка на неизвестной опции "-строка".

Для создания вопросов немного более сложными, мой домашний IP является динамичным не статичный. Таким образом, было бы хорошо иметь (но не важное) способность позволить мой домашний IP через домен DynDNS, у меня есть установка. У меня есть сценарий для остановки и запуска iptables поэтому, если мне нужно, я могу всегда останавливать и перезапускать его, чтобы вынудить IP обновить. (Я читал в нескольких местах, которые iptables только проверяет на IP для домена при запуске.)

Я приветствую любой связанный с безопасностью совет относительно использования iptables для Вашего стандартного веб-сервера также.

Спасибо


Дополнения 17.03.14: Я нашел синтаксическую ошибку в своей iptables строке - -m string должен быть -m string --string. Теперь кажется, что у меня есть iptables распознавание домена, от которого я хочу не допустить людей. Однако проблема затем стала порядком правил iptables.

Мой новый iptables стал:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  Server 1 IP          0.0.0.0/0
ACCEPT     all  --  Server 2 IP          0.0.0.0/0
ACCEPT     all  --  Server 3 IP          0.0.0.0/0
DROP       all  --  198.245.49.225       0.0.0.0/0
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 STRING match  "str_for_matching" ALGO name bm TO 65535
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:222
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
DROP       all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Идея состояла бы в том, чтобы поймать мой IP перед ОТБРАСЫВАНИЕМ, которое соответствует строке. Если ОТБРАСЫВАНИЕ является первой строкой затем, это ловит его, и я получаю 502 ошибки. Однако, если iptables - поскольку я перечислил затем запросы, проходят - мой домашний IP еще не находится в таблице правила.

Тот, который работы похожи на это:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  Server 1 IP          0.0.0.0/0
ACCEPT     all  --  Server 2 IP          0.0.0.0/0
ACCEPT     all  --  Server 3 IP          0.0.0.0/0
ACCEPT     all  --  My Home IP           0.0.0.0/0
ACCEPT     all  --  My Laptop IP         0.0.0.0/0
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 STRING match  "str_to_match" ALGO name bm TO 65535
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
DROP       all  --  198.245.49.225       0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:222
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
DROP       all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Я смог включать своего динамического дюйм/с путем простого использования их доменного имени DynDNS вместо IP.

Я мог, вероятно, сделать это ответом, но я хотел бы некоторый совет относительно лучшей практики с отношениями эта проблема.

1
задан 17 March 2014 в 19:23

0 ответов

Другие вопросы по тегам:

Похожие вопросы: