<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MHernawan</title>
    <description>The latest articles on DEV Community by MHernawan (@mhernawan).</description>
    <link>https://dev.to/mhernawan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F431626%2Fe3f14b4e-98b0-40a3-963d-688e9383b6ba.jpeg</url>
      <title>DEV Community: MHernawan</title>
      <link>https://dev.to/mhernawan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mhernawan"/>
    <language>en</language>
    <item>
      <title>Mengamankan Koneksi SSH Anda di Ubuntu 20.04</title>
      <dc:creator>MHernawan</dc:creator>
      <pubDate>Tue, 14 Jul 2020 14:24:12 +0000</pubDate>
      <link>https://dev.to/mhernawan/mengamankan-koneksi-ssh-anda-di-ubuntu-20-04-hd8</link>
      <guid>https://dev.to/mhernawan/mengamankan-koneksi-ssh-anda-di-ubuntu-20-04-hd8</guid>
      <description>&lt;p&gt;OpenSSH adalah implementasi protokol SSH. OpenSSH direkomendasikan untuk login jarak jauh, membuat cadangan, transfer file jarak jauh melalui scp atau sftp, dan banyak lagi. SSH sempurna untuk menjaga kerahasiaan dan integritas untuk pertukaran data antara dua jaringan dan sistem. Namun, keuntungan utama adalah otentikasi server, melalui penggunaan kriptografi kunci publik. Dari waktu ke waktu ada desas-desus tentang OpenSSH &lt;a href="https://en.wikipedia.org/wiki/Zero-day_%28computing%29"&gt;zero day exploit&lt;/a&gt;. Halaman ini menunjukkan cara mengamankan server OpenSSH Anda yang berjalan pada sistem ubuntu 20.04 server yang merupakan penjabaran dari tulisan saya tentang pengaturan awal server di &lt;a href="https://itkoding.com/"&gt;ITKoding&lt;/a&gt; untuk meningkatkan keamanan sshd.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Gunakan SSH login berbasis kunci publik&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Server OpenSSH mendukung berbagai otentikasi. Disarankan agar Anda menggunakan otentikasi berbasis kunci publik. Pertama, buat pasangan kunci menggunakan perintah ssh-keygen berikut di desktop / laptop lokal Anda:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ssh-keygen -t key_type -b bits -C "comment"  
$ ssh-keygen -t ed25519 -C "Login to production cluster at xyz corp"  
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_aws_$(date +%Y-%m-%d) -C "AWS key for abc corp clients"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Selanjutnya, instal kunci publik menggunakan perintah ssh-copy-id:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ssh-copy-id -i /path/to/public-key-file user@host  
$ ssh-copy-id user@remote-server-ip-or-dns-name  
$ ssh-copy-id hernawan@ubuntul7-aws-server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Saat dipromosikan, masukkan kata sandi pengguna. Verifikasi bahwa login berbasis kunci ssh bekerja untuk Anda:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ssh hernawan@ubuntul7-aws-server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;2. Nonaktifkan login pengguna root&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sebelum kami menonaktifkan login pengguna root, pastikan pengguna biasa dapat login sebagai root. Sebagai contoh, izinkan pengguna hernawan untuk login sebagai root menggunakan perintah sudo.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo adduser hernawan sudo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Setelah dikonfirmasi nonaktifkan login root dengan menambahkan baris berikut ke sshd_config:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PermitRootLogin no  
ChallengeResponseAuthentication no  
PasswordAuthentication no  
UsePAM no
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;3. Nonaktifkan login berbasis kata sandi&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Semua login berbasis kata sandi harus dinonaktifkan. Hanya login berbasis kunci publik yang diizinkan. Tambahkan yang berikut ini di file sshd_config Anda:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AuthenticationMethods publickey
PubkeyAuthentication yes
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;4. Batasi akses shs Users&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Secara default, semua pengguna sistem dapat masuk melalui SSH menggunakan kata sandi atau kunci publik mereka. Terkadang Anda membuat akun pengguna UNIX / Linux untuk tujuan FTP atau email. Namun, para pengguna dapat masuk ke sistem menggunakan ssh. Mereka akan memiliki akses penuh ke alat sistem termasuk kompiler dan bahasa scripting seperti Perl, Python yang dapat membuka port jaringan dan melakukan banyak hal mewah lainnya. Hanya izinkan pengguna hernawan untuk menggunakan sistem melalui SSH, tambahkan yang berikut ke sshd_config:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AllowUsers hernawan
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;5. Nonaktifkan Kata Sandi Kosong&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anda perlu secara eksplisit melarang login jarak jauh dari akun dengan kata sandi kosong, perbarui sshd_config dengan baris berikut:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PermitEmptyPasswords no
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;6. Ubah Port SSH dan batasi pengikatan IP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Secara default, SSH mendengarkan semua antarmuka yang tersedia dan alamat IP pada sistem. Batasi pengikatan port ssh dan ubah port ssh (banyak skrip memaksa hanya mencoba tersambung ke port TCP # 22). Untuk mengikat ke port 300, tambahkan atau perbaiki baris berikut di sshd_config:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Port 300
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Kesimpulan&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dengan 6 langkah tersebut kita sudah bisa meminimalisir dari serangan maupun brute force melalui SSH ke server.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ssh</category>
      <category>ubuntu</category>
      <category>port</category>
    </item>
    <item>
      <title>Implementasi HTTP3 QUIC di Nginx</title>
      <dc:creator>MHernawan</dc:creator>
      <pubDate>Tue, 14 Jul 2020 13:14:10 +0000</pubDate>
      <link>https://dev.to/mhernawan/implementasi-http3-quic-di-nginx-41hg</link>
      <guid>https://dev.to/mhernawan/implementasi-http3-quic-di-nginx-41hg</guid>
      <description>&lt;p&gt;Saya sangat terinspirasi oleh berita bahwa protokol HTTP3 sudah tersedia dan sekarang kita bisa menggunakannya. Saya menghadapi beberapa masalah selama implementasi dan akan mencoba berbagi informasi proses ini untuk Anda.&lt;/p&gt;

&lt;p&gt;Pada artikel ini, saya akan menunjukkan apa yang diperlukan untuk mengatur dukungan HTTP 3 Nginx.&lt;/p&gt;

&lt;p&gt;HTTP3 QUIC (Quick UDP Internet Connections) protokol dari Google, TCP + TLS + HTTP/2 diimplementasikan pada UDP.&lt;/p&gt;

&lt;p&gt;Pada bulan Maret 2020, dukungan HTTP3 sedang dalam pengembangan di Nginx dan diharapkan dalam rilis 1.17 namun sampai sekarang 1.19 belum ada berita lebih lanjut. Ada cara untuk memilikinya hari ini yaitu dengan mengkompilasi Nginx dengan modul QUIC. Anda dapat melakukan ini dengan mengikuti manual dari Cloudflare / quiche repo atau menggunakan docker dengan Nginx + quic yang telah dikompilasi.&lt;/p&gt;

&lt;p&gt;Nah, saya menggunakan &lt;a href="https://hub.docker.com/r/ymuski/nginx-quic"&gt;docker dari ymuski&lt;/a&gt;. Nginx dikompilasi dengan semua modul yang masuk dalam gambar docker Nginx resmi + modul borringssl dan http3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apa yang dibutuhkan?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sertifikat TLS &lt;/li&gt;
&lt;li&gt;Konfigurasi nginx &lt;/li&gt;
&lt;li&gt;Docker container&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Terbitkan sertifikat untuk domain Anda:&lt;br&gt;
certbot certonly --standalone --non-interactive --agree-tos -d your.domain.com -m &lt;a href="mailto:your@email.com"&gt;your@email.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Buat konfigurasi Nginx (contoh lengkap):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Enable QUIC and HTTP/3.
listen 443 quic reuseport;
# Request buffering in not currently supported for HTTP/3.
proxy_request_buffering off;

# Add Alt-Svc header to negotiate HTTP/3.
add_header alt-svc 'h3-27=":443"; ma=86400';
ssl_protocols TLSv1.3;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Jalankan docker container:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;docker run --name nginx -d -p 80:80 -p 443:443/tcp -p 443:443/udp  -v /etc/letsencrypt/:/opt/nginx/certs/ -v  /opt/nginx/conf/example.nginx.conf:/etc/nginx/nginx.conf  ymuski/nginx-quic&lt;/p&gt;

&lt;p&gt;Ayo kita coba!&lt;/p&gt;

&lt;p&gt;CATATAN: Jika Anda menjalankan server cloud dan memiliki keamanan, kemungkinan besar HTTP3 tidak akan berfungsi - buka port 443/udp dalam pengaturan firewall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bagaimana cara menguji HTTP3?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dukungan HTTP3 QUIC adalah berupa fitur yang harus diaktifkan terlebih dahulu, jadi Anda harus mengaktifkannya.&lt;br&gt;
Chrome (&amp;gt;79) go to chrome://flags/#enable-quic&lt;br&gt;
Firefox (&amp;gt; 72) go to about:config =&amp;gt; network.http.http3.enabled&lt;br&gt;
Masuk ke developer console (F12) =&amp;gt; Network and check protocol.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kelebihan HTTP3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTP3 bermanfaat dalam kasus-kasus berikut:&lt;br&gt;
Handshake lebih cepat (1 atau 0-RTT)&lt;br&gt;
Tidak ada pemblokiran head-of-line&lt;br&gt;
Peralihan jaringan tidak akan memengaruhi koneksi (Streaming)&lt;br&gt;
Tes curl saya sendiri antara HTTP2 dan HTTP3 menunjukkan 30% latency bust.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
