# 1.3 Ports: कोणत्या service ला भेटायचं?

Source: https://ravindrabagale.com/mr/aws/ch01-networking-fundamentals/1-3-ports.html
Language: mr (Marathi with English technical terms)

Packet योग्य machine पर्यंत आला, पण कोणत्या program ने उत्तर द्यायचं? त्यासाठी port वापरतो. Port हा 16-bit number — 0 ते 65535 — आहे. एका EC2 वर Nginx 80, SSH 22 आणि MySQL 3306 वर listening असू शकतात.

13.233.10.25:443 अशा IP:port जोडीला socket address म्हणतात. पूर्ण connection ओळखताना protocol आणि दोन्ही टोकांचे addresses/ports देखील महत्त्वाचे असतात.

 | Range | नाव | अर्थ

 | 0–1023 | Well-known ports | Standard services; Linux मध्ये bind करण्यासाठी साधारण root किंवा संबंधित capability लागते

 | 1024–49151 | Registered ports | MySQL, MongoDB आणि इतर applications

 | 49152–65535 | Dynamic / ephemeral | Client साठी OS ने निवडलेले तात्पुरते ports; OS ची configured range वेगळी असू शकते

हे ports लक्षात ठेवा

 | Port | Protocol | Service | कुठे वापरतो?

 | 20, 21 | TCP | FTP — data, control | जुनी, unencrypted file transfer; टाळा

 | 22 | TCP | SSH / SCP / SFTP | EC2 login आणि file copy

 | 23 | TCP | Telnet | जुनी unencrypted service; internet ला उघडू नका

 | 25 | TCP | SMTP | E-mail पाठवणं; AWS वर default restrictions असू शकतात

 | 53 | UDP/TCP | DNS | Domain lookup

 | 67, 68 | UDP | DHCP | आपोआप IP मिळवणं

 | 80 | TCP | HTTP | Encryption नसलेली website

 | 110 / 143 | TCP | POP3 / IMAP | E-mail वाचणं

 | 443 | TCP | HTTPS | TLS असलेली website

 | 3000 | TCP | Node.js / React dev server | Express apps, npm start

 | 3306 | TCP | MySQL / MariaDB | Database

 | 3389 | TCP | RDP | Windows Remote Desktop

 | 4200 | TCP | Angular dev server | ng serve

 | 5000 | TCP | Flask dev server | flask run

 | 5432 | TCP | PostgreSQL | Database

 | 6379 | TCP | Redis | Cache

 | 8000 | TCP | Gunicorn / Django dev server | Python apps

 | 8080 | TCP | Alternate HTTP / Tomcat / Jenkins | Java apps, proxies

 | 27017 | TCP | MongoDB | NoSQL database

Security चा सोपा नियम

Web traffic साठी साधारण 80/443; SSH साठी 22 फक्त तुमच्या IP मधून. 3000/5000/8080 application ports Nginx/Apache reverse proxy च्या मागे ठेवा. Database चे 3306/27017 ports 0.0.0.0/0 साठी उघडू नका.

Lab

Linux वर sudo ss -tlnp run करा. Listening ports आणि services लिहा. Table मध्ये port नसेल तर output च्या शेवटच्या column मधला process पाहा.

रवींद्र बागले यांची tip

App 127.0.0.1 वर चालवा आणि Nginx 80/443 वर पुढे ठेवा. फक्त test साठी app/database port सगळ्यांना उघडून ठेवू नका.
