![如何设置 iptables?](https://linux22.com/image/1391240/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20iptables%EF%BC%9F.png)
我只想允许 httpd(nginx)、端口 2710 和 ssh 的流量。
我尝试了以下方法,但不起作用,显然所有 httpd 流量都被阻止了,我也无法访问 ssh。没有任何错误。
# Generated by iptables-save v1.4.7 on Sun Dec 29 01:18:59 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1670:508953]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2710 -j ACCEPT
-A INPUT -j DROP
COMMIT
# Completed on Sun Dec 29 01:18:59 2013
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:22
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:webcache
ACCEPT tcp -- anywhere anywhere tcp dpt:sso-service
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain ISPMGR (0 references)
target prot opt source destination
iptables -xnvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
52 3808 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1876 260008 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
737 44220 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
1495 181034 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2710
1439 91560 DROP 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
Chain OUTPUT (policy ACCEPT 4859 packets, 330086 bytes)
pkts bytes target prot opt in out source destination
路线-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
x.x.x.x 0.0.0.0 255.255.255.0 U 0 0 0 eth0
x.x.x.x 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 x.x.x.x 0.0.0.0 UG 0 0 0 eth0
nmap -p 80 xxxx
Starting Nmap 5.51 ( http://nmap.org ) at 2013-12-29 02:14 EET
Nmap scan report for myhost.com (x.x.x.x)
Host is up (0.000038s latency).
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
tcpdump -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C
1 packets captured
3165 packets received by filter
3134 packets dropped by kernel
答案1
这是一个非常不恰当的问题。httpd是一个守护进程,通常它表示一个 Web 服务器。您无需说明您使用的是哪个 Web 服务器(Apache、Nginx、lighttpd、thttpd 等)。如果您希望使用 Apache Tomcat,您还必须打开端口 8243。
但如果您有疑问,请在托管 Web 服务器的计算机上发出以下命令须藤以下命令:
ss -lntp
这将列出 PC 正在监听的端口,例如 ssh。在每个端口旁边,您将看到正在监听该端口的进程。这将为您提供要打开的端口的完整列表。
并且,如果您无权访问运行 Web 服务器的计算机,则可以使用此命令(再次以 sudo 形式)
nmap -T4 -A IP_address_of_Web_server
将列出所有开放的端口。
答案2
你不需要像这样的一些诗节吗:
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp -s 192.168.1.35 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp -d 192.168.1.35 --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT