我已经在 CentOS 服务器上安装了 postgre。
我基本上遵循了以下指南:PostgreSQL 最后一步,它说我需要打开 TCP 端口 5432,为此我需要在 /etc/sysconfig/iptables 中添加以下行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
重新启动 iptables 会在新行上产生错误,似乎它不喜欢 RH-Firewall-1-INPUT 部分。问题是,即使我停止 iptables 服务,端口 5432 似乎仍处于关闭状态。
任何帮助将不胜感激。
编辑:
iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2331 187K RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 2080 packets, 490K bytes)
pkts bytes target prot opt in out source destination
Chain RH-Firewall-1-INPUT (2 references)
pkts bytes target prot opt in out source destination
1 29 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0.4 * 0.0.0.0/0 0.0.0.0/0
2330 187K ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0.1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0.2 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0.3 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 255
0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:5432
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:23
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
ps aux | grep postgre
postgres 20132 0.0 0.0 120692 3336 ? S 15:41 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
postgres 20134 0.0 0.0 109872 704 ? S 15:41 0:00 postgres: logger process
postgres 20136 0.0 0.0 120692 980 ? S 15:41 0:00 postgres: writer process
postgres 20137 0.0 0.0 110872 700 ? S 15:41 0:00 postgres: stats buffer process
postgres 20138 0.0 0.0 110060 876 ? S 15:41 0:00 postgres: stats collector process
root 20299 0.0 0.0 61152 728 pts/0 S+ 16:08 0:00 grep postgre
编辑2:这是我关闭 iptables 时发生的情况。
[maguirre@server ~]# /etc/init.d/iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
[maguirre@server ~]# iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
答案1
您要添加:RH-Firewall-1-INPUT - [0:0]
部分吗?您也可以在此处发布错误吗?
答案2
如果你所做的只是尝试打开一个端口,那么程序调用纵火者 可能有帮助吧?我想他们也有一个 CentOS 发行版。
答案3
您快完成了。您需要像这样打开表格:
iptables -I INPUT 1 -m tcp -p tcp --dport 5432 -j ACCEPT
在这里,您将为默认 INPUT 链(在本例中为 RH-Firewall-1 或 1)插入一条规则。选项“-m”是一个匹配运算符,允许您根据协议、状态或会话进行过滤。但是,由于您只关心端口是否打开,因此只需确保它是一个 tcp 数据包(您可能不需要 -p,但为了练习,无论如何都要添加它)。从那里,您只需指定默认端口就可以了。
此时,它将是 REJECT 语句之前的规则。继续并像这样保存它:
service iptables save
然后重新启动:
service iptables restart
如果规则没有插入到正确的位置,请备份 /etc/sysconfig/iptables,然后编辑文件,添加以下 REJECT:
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
保存文件并再次重新启动 iptables。
答案4
看一下这个文件。应该还有其他规则引用同一个链,并且应该在顶部用如下一行创建链:
:RH-Firewall-1-INPUT - [0:0]
我不确定只接受新数据包是否真的能帮到你。这只有在其中还有一条规则可以接受处于 ESTABLISHED 和 RELATED 状态的所有数据包(这是默认设置,但你永远不知道)时才会起作用。
您可以通过运行来检查该链是否存在
iptables -L -nv
这应该会在输出的某处显示一个部分
Chain RH-Firewall-1-INPUT (policy ...)
如果您安装了任何其他防火墙包,这些都不起作用,因为它们将绕过默认防火墙设置并安装自己的规则。
编辑 以下是我们的 Fedora 机器上的该文件内容。请注意顶部的注释。
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT