如何设置 iptables?

如何设置 iptables?

我只想允许 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

相关内容