Tiene que haber algo escuchando en el puerto, abrir el firewall por sí solo no lo abre.
Aquí httpd está escuchando en 80, por lo que se muestra abierto
$ nmap localhost -p 80
Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-22 19:22 MDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
Other addresses for localhost (not scanned): 127.0.0.1
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
Aquí netstat muestra que estoy escuchando en 80, porque httpd está escuchando en él.
$ netstat --listening --numeric-ports | grep 80
tcp6 0 0 [::]:80 [::]:* LISTEN
$ systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2018-05-22 18:18:01 MDT; 1h 5min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1279 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
Tasks: 7
CGroup: /system.slice/httpd.service
├─1279 /usr/sbin/httpd -DFOREGROUND
├─1928 /usr/sbin/httpd -DFOREGROUND
├─1929 /usr/sbin/httpd -DFOREGROUND
├─1930 /usr/sbin/httpd -DFOREGROUND
├─1931 /usr/sbin/httpd -DFOREGROUND
├─1932 /usr/sbin/httpd -DFOREGROUND
└─1933 /usr/sbin/httpd -DFOREGROUND
May 22 18:17:55 trogdor.mydomain.com systemd[1]: Starting The Apache HTT...
May 22 18:18:01 trogdor.mydomain.com systemd[1]: Started The Apache HTTP...
Hint: Some lines were ellipsized, use -l to show in full.
Si cierro httpd:
# systemctl stop httpd
$ nmap localhost -p 80
Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-22 19:23 MDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00017s latency).
Other addresses for localhost (not scanned): 127.0.0.1
PORT STATE SERVICE
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
Netstat muestra que no estoy escuchando en 80, aunque está abierto
$ netstat --listening --numeric-ports | grep 80
$
El punto es que la parte de IPTables es un XyProblem . Si inicio un oyente de conexión inversa -en 4444, (esto se toma de Rapid7 Q&A ), luego el puerto 4444 se muestra como abierto y escuchando y nunca tengo que tocar las tablas de IP.
msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 127.0.0.1
msf exploit(handler) > set LPORT 4444
msf exploit(handler) > set ExitOnSession false
msf exploit(handler) > exploit -j
# netstat --numeric-ports --listening | grep 4444
tcp 0 0 localhost:4444 0.0.0.0:*