Listen Port under 1024
Pada Sistem Operasi Ubuntu atau kebanyakan Sistem Operasi Linux yang lain, terdapat ketentuan terhadap keamanan sistem operasi yang mana tidak bisa sembarangan aplikasi yang self-developing menggunakan atau Listen PORT dibawah 1024.
Port dengan nomor dibawah 1024 dikategorikan sebagai "Privileged Ports", artinya hanya pengguna dengan hak akses root atau administrator yang dapat menggunakan port tersebut.
Oleh karena itu ketika anda menggunakan port dibawah 1024 dari selain root akan terjadi ERROR, karena user tidak memiliki hak akses yang diperlukan untuk menggunakan port tersebut.
untuk mengatasi masalah ini, anda harus mengizinkan user untuk menggunakan port tersebut atau bisa menggunakan alternatif lain diantaranya "port-forwarding" ataupun dapat memanfaatkan authbind .
authbind
- Install authbind
# sudo apt install authbind - Create empty file yang digunakan aplikasi untuk listen port
# touch /etc/authbind/byport/80 - meberikan hak akses file authbind
# chmod 500 /etc/authbind/byport/80
# chown <user>:<user> /etc/authbind/byport/80 - Jalankan aplikasi anda
# authbind --deep /opt/tomcat/bin/catalina.sh
setuid
Selain menggunakan authbind anda dapat memberikan priviledge pada user yang anda gunakan. Namun cara ini menurunkan keamanan sistem anda.
yaitu dengan mengaktifkan fitur setuid pada binary aplikasi.
- Buat user baru (misal tomcat)
# sudo adduser tomcat - Berikan hak akses user ke directory aplikasi
# sudo chown -R tomcat:tomcat /opt/tomcat - Set fitur setuid pada binary aplikasi
# sudo chmod u+s /opt/tomcat/bin/catalina.sh - Jalankan aplikasi
# sudo -u tomcat /opt/tomcat/bin/catalina.sh
Sekali lagi perlu diingat bahwa fittur setuid dapat membuka celah keamanan jika tidak digunakan dengan benar.
untuk penggunaan pada systemd, dapat juga dengan menambahkan AmbientCapabilities=CAP_NET_BIND_SERVICE.
contoh :
[Unit]
Description=Tomcat Server
Wants=network.target
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/data/openjdk-11.0.18
Environment=JRE_HOME=/data/openjdk-11.0.18
Environment=CATALINA_PID=/data/tomcat/temp/tomvat-server.pid
Environment=CATALINA_HOME=/data/tomcat
Environment="JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=256M"
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/data/tomcat/bin/startup.sh
ExecStop=/data/tomcat/bin/shutdown.sh
SuccessExitStatus=143
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Comments 0