Ubuntu를 사용하여 iptables에서 포트 8080을 열려고 할 때 내가 뭘 잘못하고 있나요?

Ubuntu를 사용하여 iptables에서 포트 8080을 열려고 할 때 내가 뭘 잘못하고 있나요?

Ubuntu 서버에 설치한 웹 패널 응용 프로그램(McMyAdmin)을 사용할 수 있도록 포트 8080을 열려고 합니다. 나는 일반적으로 Linux/SSH를 처음 접했지만 다양한 가이드와 몇몇 친구 덕분에 이 일을 할 수 있었습니다! 포트 8080을 열려고 할 때 내가 뭘 잘못하고 있는지 누가 말해 줄 수 있는지 궁금합니다. -nL을 사용하여 규칙을 확인하면 표시되는 것 같지만 -vL을 사용하면 표시되지 않습니다. 또한 vL과 nL의 실제 차이점이 무엇인지 잘 모르겠습니다. 누군가가 이를 이해하는 데 도움을 줄 수 있다면 좋을 것입니다!

편집: 모든 것을 살펴보면 포트 80도 열려 있지 않은 것 같습니다. 그것에 대해서도 뭔가 조치를 취해야 할 것 같습니다...

name@server:/etc/iptables$ sudo iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
REJECT     all  --  127.0.0.0/8          0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            state NEW icmptype 8
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:25565
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:8080
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
LOG        all  --  0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 5 LOG flags 0 level 7 prefix "iptables_INPUT_denied: "
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy DROP)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

name@server:/etc/iptables$ sudo iptables -vL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
0     0 REJECT     all  --  !lo    any     127.0.0.0/8          anywhere             reject-with icmp-port-unreachable
0     0 ACCEPT     icmp --  any    any     anywhere             anywhere             state NEW icmp echo-request
0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:ssh
0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:25565
61  3096 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:http-alt
862 69185 ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
21  1648 LOG        all  --  any    any     anywhere             anywhere             limit: avg 3/min burst 5 LOG level debug prefix "iptables_INPUT_denied: "
21  1648 REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
0     0 REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 16 packets, 2992 bytes)
pkts bytes target     prot opt in     out     source               destination

답변1

iptables를 사용하여 이 명령에 대한 정보를 읽을 수 있습니다 man iptables.

그렇게 하면,

   -v, --verbose
          Verbose output.  This option makes the list command show the interface name, the rule options (if any), and the TOS masks.  The
          packet and byte counters are also listed, with the suffix 'K', 'M' or 'G' for 1000,  1,000,000  and  1,000,000,000  multipliers
          respectively  (but  see  the -x flag to change this).  For appending, insertion, deletion and replacement, this causes detailed
          information on the rule or rules to be printed. -v may be specified multiple times to possibly emit more detailed debug  state‐
          ments.

   -n, --numeric
          Numeric  output.  IP addresses and port numbers will be printed in numeric format.  By default, the program will try to display
          them as host names, network names, or services (whenever applicable).

따라서 -n서비스 이름 대신 숫자가 표시됩니다. -v반대는 아니지만 -n이름(기본값)과 더 많은 데이터를 표시합니다.

본질적으로 둘 다 동일한 내용을 보여줍니다. 즉, 이 항목이 있습니다(첫 번째는 숫자이고 두 번째는 이름입니다).

ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080

61 3096 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:http-alt

http-alt포트 8080의 서비스 이름입니다. 기본적으로 두 항목은 서로 다른 형식의 동일한 줄입니다.

"포트 열기"(기본적으로 iptables 방화벽을 통한 트래픽 허용을 의미함) 외에도 관련 포트에서 트래픽을 허용할 준비가 된 소프트웨어가 필요합니다. McMyAdmin이 포트 8080을 수신하도록 구성되어 있습니까?

netstat명령(및 기타 명령)을 사용하여 어떤 프로세스가 어떤 포트에서 수신 대기하는지 확인할 수 있습니다. netstat -an모든 포트를 나열하고( -a) 번호를 표시합니다( -n). 이는 와 함께 사용하면 유용합니다 grep. 예를 들어 netstat -an | grep 8080포트 8080을 사용하는 프로세스가 있는지 나열됩니다. 다음과 같은 것을 볼 수도 있습니다.

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN

실제 수치는 다를 수 있습니다. 이를 사용하여 -p어떤 프로세스가 포트를 사용하고 있는지 표시할 수 있지만 루트로 실행하면 모든 프로세스만 표시됩니다.

그래서 sudo netstat -anp | grep 8080다음과 같은 것을 줄 것입니다.

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4856/some-process-name

아무런 출력도 얻지 못하면 포트 8080을 사용하거나 수신 대기 중인 것이 없으므로 sudo netstat -anp프로세스 목록을 사용하여 예상한 프로세스가 있는지, 수신 중인 포트가 무엇인지 확인할 수 있습니다.

관련 정보