Привет, может ли кто-нибудь помочь мне понять, почему строка 15 якобы не работает в моем файле iptables. Я использую CentOS 6.
Когда я пытаюсь перезапустить службу iptables, получаю следующее:
[root@dbserver ~]# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: iptables-restore: line 15 failed
[FAILED]
Мой файл iptables выглядит так:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.1/254 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
Я только сейчас пытаюсь разрешить доступ к машине из локальной сети.
Любая помощь приветствуется. Спасибо.
РЕДАКТИРОВАТЬ:
Согласно первому ответу, мы переместили COMMIT в конец файла, но все еще получаю ошибки ...
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/255 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
COMMIT
Ошибка:
[root@dbserver ~]# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: iptables-restore: line 13 failed
[FAILED]
В дополнение к проблеме COMMIT, как упоминалось jgoldschrafe, вы пытаетесь добавить строки к правилу, которое не существует (RH-Firewall-1-INPUT
).
Вам нужно будет добавить строку
:RH-Firewall-1-INPUT - [0:0]
сразу под
:OUTPUT ACCEPT [0:0]
который объявит цепочку, что позволит вам добавлять в нее правила. Но цепочка все равно не будет иметь никакого эффекта, поскольку в названии нет ничего волшебного, и ничего в трех основных цепочках (INPUT
,OUTPUT
, и FORWARD
) отправляет ему любые пакеты. Конечно, вы можете добавить правило в INPUT
цепочка для отправки трафика в вашу новую цепочку, но - и, пожалуйста, не поймите это неправильно - я заметил, что в верхней части этого файла написано
Ручная настройка этого файла не рекомендуется.
На это есть причина. Во что бы то ни стало игнорируйте это и отредактируйте его, но вы можете сделать довольно большие дыры в безопасности или доступности вашей системы, пока учитесь делать это правильно.
Редактировать: Я подозреваю, что проблема со строкой 19 - это диапазон адресов, указанный как 192.168.1.0/255
, что неверно. Если вы хотите указать все адреса между 192.168.1.0
и 192.168.1.255
, тебе нужно 192.168.1.0/24
.
Прошу прощения, но вы действительно не производите впечатление человека, который много знает о брандмауэрах и сетях, и - если предположить, что это сервер, который вы обслуживаете профессионально - это может быть не лучшее место для изучения этого материала .
Все просто - вам нужно переместить COMMIT в конец файла.
COMMIT сообщает iptables, что вы закончили свое объявление и хотите отправить свою конфигурацию в ядро. На этом ваше объявление заканчивается. Вы сообщаете iptables команде COMMIT, а затем даете новые правила без нового объявления, отсюда и ваша ошибка.
Изменить, чтобы включить содержимое комментария по ветру:
Вот обновленная и рабочая (не обязательно оптимальная) версия вашей конфигурации: http://gist.github.com/3818123. Я резюмирую некоторые из проблем:
Как правило, стоит добавлять правила через iptables, а затем выгружать их в файл с помощью iptables-save на случай, если вы хотите использовать их для повторной загрузки через iptables-restore, например, когда ваша система перезагружается, потому что довольно просто iptables-save знает свои собственные предварительные требования. лучше чем ты.
Попробуйте поставить две строчки
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
в конце файла перед COMMIT.
Да, чувак, / 24 ... слэш-запись. Преобразование нотации с косой чертой Google. Глядя на ваш первый примерный стол, я задохнулся.
Мне много раз говорили одно и то же на протяжении многих лет, но вы заблуждаетесь. Как можно вручную редактировать правила iptables, не зная о нотации косой черты? Он используется практически ... везде.
И как все говорили, важно или нет, это сервер - это не место для игр. Если безопасность не важна и он защищен брандмауэром и не подключен к Интернету, выключите iptables ('#service iptables stop; #chkconfig iptables off') ... и поиграйте с ним дома.
Таким образом, когда что-то не работает, вам не нужно задумываться, почему.