Linux Network Security

Keamanan jaringan menjadi semakin penting dengan semakin banyaknya waktu yang dihabiskan orang untuk berhubungan. Mengganggu keamanan jaringan sering lebih mudah daripada fisik atau lokal, dan lebih umum.

Terdapat sejumlah alat yang baik untuk membantu keamanan jaringan, dan semakin banyak disertakan dalam distribusi Linux.

PACKET SNIFFERS

Salah satu cara umum yang digunakan penyusup untuk memperoleh akses ke banyak sistem di jaringan anda adalah dengan menggunakan sebuah packet sniffer pada host yang telah diganggu. Sniffer ini mendengarkan port Ethernet untuk hal-hal seperti “Password” dan “Login” dan “su” dalam aliran paket dan kemudian mencatat lalu lintas setelahnya. Dengan cara ini, penyerang memperoleh password untuk sistem yang bahkan tidak mereka usahakan untuk dibongkar. Password teks biasa adalah sangat rentan terhadap serangan ini.

Contoh: host A telah diganggu. Penyerang menginstal sebuah sniffer. Sniffer mencatat login admin ke host B dari host C. Ia memperoleh password personal admin ketika ia login ke B. Kemudian, admin melakukan ’su’ untuk mengatasi suatu masalah. Mereka sekarang memiliki password root untuk Host B. Kemudian admin membolehkan seseorang telnet dari rekeningnya ke host Z di site lain. Sekarang penyerang memiliki password/login di host Z.

Di masa sekarang, penyerang bahkan tidak perlu mengganggu sebuah sistem untuk melakukan hal ini, mereka dapat membawa laptop atau pc ke suatu gedung dan menyadap ke jaringan anda.

Dengan menggunakan ssh atau metode password terenkripsi lainnya dapat mencegah serangan ini. Hal-hal seperti APOP untuk rekening pop juga dapat mencegah serangan ini. (Login pop normal sangat rentan untuk hal ini, sama seperti segala sesuatu yang mengirim password teks biasa melalui kabel).

PELAYANAN SISTEM dan tcp_wrappers

Segera setelah anda menaruh sistem Linux anda di sembarang jaringan, hal pertama yang harus dilihat adalah pelayanan yang butuh anda tawarkan. Pelayanan-pelayanan yang tidak perlu anda tawarkan seharusnya ditiadakan sehingga anda memiliki satu hal yang tidak perlu dikhawatirkan dan penyerang memiliki satu hal kurangnya untuk mencari lubang.

Terdapat sejumlah cara untuk meniadakan pelayanan dalam Linux. Anda dapat melihat pada file /etc/inetd.conf dan melihat pelayanan apa yang ditawarkan oleh inetd anda. Tiadakan segala yang tidak anda butuhkan dengan mengkomentari mereka (taruh # di awal baris), dan kemudian mengirimkan proses inetd anda sebuah SIGHUP.

Anda dapat pula menghilangkan (atau mengkomentari) pelayanan-pelayanan di file /etc/services. Hal ini berarti client lokal anda tidak akan menemukan pelayanan (contoh, jika anda menghilangkan ftp, dan berusaha dan ftp ke site remote dari mesin tersebut maka akan gagal dengan pesan pelayanan yang tidak dikenal). Tidaklah berharga untuk menghilangkan pelayanan, karena tidak memberikan keamanan tambahan. Jika orang lokal ingin menggunakan ftp bahkan yang telah anda komentari, mereka ingin membuat client mereka menggunakan port ftp umum dan masih dapat bekerja baik.

Beberapa pelayanan yang ingin anda biarkan ada adalah:

  • ftp
  • telnet
  • mail, seperti pop-3 atau imap
  • identd
  • time

Jika anda tahu anda tidak ingin menggunakan beberapa paket tertentu, anda dapat menghapusnya. rpm -e dalam distribusi Red Hat akan menghapus seluruh paket. Dalam debian dpkg akan melakukan hal yang sama.

Sebagai tambahan, anda benar-benar ingin meniadakan utilitas rsh/rlogin/rcp, termasuk login (digunakan oleh rlogin), shell (digunakan oleh rcp), dan exec (digunakan oleh rsh) dari dimulai dalam /etc/inetd.conf. Protokol-protokol ini sangat tidak aman dan menjadi penyebab eksploit dahulu.

Anda perlu memeriksa /etc/rc.d/rcN.d, dengan N adalah run level sistem anda dan melihat apakah pelayanan dimulai dalam direktori tersebut tidak dibutuhkan. File dalam /etc/rc.d/rcN.d sebenarnya adalah link simbolik ke direktori /etc/rc.d/init.d. Mengganti nama file dalam direktori init.d memiliki efek meniadakan seluruh link simbolik dalam /etc/rc.d/rcN.d. Jika anda hanya ingin meniadakan pelayanan untuk runlevel tertentu, ganti nama file yang sesuai dengan huruf kecil.

Jika anda memiliki file rc bergaya BSD, anda mungkin ingin memeriksa /etc/rc* untuk program-program yang tidak anda butuhkan.

Kebanyakan distribusi Linux menyertakan tcp_wrappers “wrapping” seluruh pelayanan tcp. Sebuah tcp_wrappers (tcpd) dipanggil dari inetd selain dari server sebenarnya. tcpd kemudian memeriksa host yang membutuhkan pelayanan dan kemudian mengeksekusi atau menolak akses server sebenarnya dari host tersebut. tcpd memungkinkan anda membatasi akses ke pelayanan tcp anda. Anda perlu membuat /etc/hosts.allow dan menambahkan hanya host yang membutuhkan akses ke pelayanan mesin anda.

Jika anda adalah pemakai dialup rumahan, kami menyarankan anda menolak seluruhnya. tcpd juga mencatat usaha yang gagal untuk mengakses pelayanan, sehingga ini dapat memberi anda ide bahwa anda sedang diserang. Jika anda menambahkan pelayanan baru, anda harus pasti mengkonfigurasinya untuk menggunakan tcp_wrappers berbasis TCP. Sebagai contoh, pemakai dial-up normal dapat mencegah orang luar koneksi ke mesin anda, namun masih memiliki kemampuan untuk menerima surat, dan membuat hubungan jaringan ke Internet. Untuk melakukan ini, anda mungkin menambahkan perintah berikut ke /etc/hosts.allow:

ALL: 127.

Dan tentu saja /etc/hosts.deny akan berisi:

ALL: ALL

yang akan mencegah koneksi eksternal ke mesin anda, namun masih memungkinkan anda dari dalam berhubungan ke server di Internet.

VERIFIKASI INFORMASI DNS

Memelihara informasi DNS tentang seluruh host di jaringan anda agar tetap baru dapat membantu meningkatkan keamanan. Bilamana ada host yang tidak dijinkan terhubung ke jaringan anda, anda dapat mengenalinya dengan tidak adanya masukan DNS. Banyak pelayanan dapat dikonfigurasi untuk tidak menerima koneksi dari host yang tidak memiliki masukan DNS yang valid.

identd

identd adalah program kecil yang umumnya berjalan di inetd. Ia mencatat pelayanan tcp apa yang dijalankan pemakai, dan kemudian melaporkannya kepada yang meminta.

Banyak orang salah mengerti kegunaan identd, sehingga meniadakannya atau memblok seluruh site yang memintanya. identd ada bukan untuk membantu remote site. Tidak ada cara untuk mengetahui jika data yang anda peroleh dari remote identd benar atau tidak. Tidak ada autentikasi dalam permintaan identd.

Lalu mengapa anda ingin menjalankannya? Karena ia membantu anda, dan adalah titik data lain dalam penelusuran. Jika identd anda tidak terganggu, maka anda mengerti ia memberi tahu remote site nama pemakai atau uid orang-orang yang menggunakan pelayanan tcp. Jika admin pada remote site datang kepada anda dan memberitahu pemakai anda berusaha menghack ke site mereka, anda dapat secara mudah mengambil tindakan terhadap pemakai tersebut. Jika anda tidak menjalankan identd, anda harus melihat banyak catatan, memperkirakan siapa yang ada pada saat itu, dan secara umum membutuhkan waktu yang lebih banyak untuk menelusuri pemakai.

identd yang disertakan dalam banyak distribusi lebih mudah dikonfigurasi daripada yang diperkirakan orang. Anda dapat meniadakan identd untuk pemakai tertentu (mereka dapat membuat file .noident), anda dapat mencatat seluruh permintaan identd (Saya menyarankannya), anda bahkan dapat memiliki identd mengembalikan uid daripada nama pemakai atau bahkan NO-USER.

SATAN, ISS, dan Scanner Jaringan Lainnya

Terdapat sejumlah paket software berbeda yang melakukan penelusuran berdasarkan port dan pelayanan mesin atau jaringan. SATAN dan ISS adalah dua yang paling dikenal. Software ini berhubungan ke mesin sasaran (atau seluruh mesin sasaran di suatu jaringan) di semua port yang ada, dan berusaha menentukan pelayanan apa yang sedang berjalan. Berdasarkan informasi ini, anda dapat menemukan mesin yang rentan terhadap eksploitasi tertentu pada server.

SATAN (Security Administrators Tool for Analyzing Networks) adalah sebuah penelusur port dengan antara muka web. Ia dapat dikonfigurasi untuk melakukan pemeriksaan ringan, menengah, atau berat pada mesin atau pada jaringan mesin. Akan merupakan ide yang baik untuk memperoleh SATAN dan memeriksa mesin atau jaringan anda, dan membenahi masalah-masalah yang ditemukan. Pastikan anda memperoleh SATAN dari sun-site atau FTP atau web site yang bereputasi.

ISS (Internet Security Scanner) adalah penelusur berdasarkan port yang lain. Ia lebih cepat daripada SATAN, dan mungkin lebih baik untuk jaringan yang besar. Namun demikian, SATAN memberikan lebih banyak informasi.

Mendeteksi penelusuran port. Terdapat beberapa alat yang dirancang untuk memberitahu anda adanya probe SATAN dan ISS dan software penelusuran lainnya. Namun demikian, dengan pemakaian tcp_wrappers yang liberal dan memastikan untuk melihat file log anda secara berkala, anda dapat mengetahui probe tersebut. Bahkan pada setting terendah, SATAN masih meninggalkan jejak pada log di sistem Red Hat.

Sendmail, qmail dan MTA

Salah satu pelayanan penting yang dapat anda sediakan adalah server surat. Sayangnya, ia juga sangat rentan diserang, karena banyaknya tugas yang harus dilakukan dan dibutuhkannya ijin khusus.

Jika anda menggunakan sendmail, penting untuk menjaga versi anda agar up to date. Sendmail memiliki sejarah panjang di eksploitasi keamanan. Selalu pastikan anda menjalankan versi terbaru.

Jika anda bosan mengupgrade versi sendmail anda setiap minggu, anda dapat mempertimbangkan beralih ke qmail. qmail dirancang dengan perhatian pada keamanan sejak awalnya. Ia cepat dan stabil dan aman. http://www.qmail.org

SERANGAN DENIAL OF SERVICES

Serangan denial of service adalah saat ketika penyerang berusaha menggunakan beberapa sumber daya hingga terlalu sibuk untuk menjawab permintaan yang resmi, atau menolak pemakai resmi mengakses mesin anda.

Serangan-serangan semacam ini meningkat dengan cepat pada tahun-tahun belakangan ini. Beberapa yang populer dan terbaru ditampilkan di bawah ini. Perhatikan bahwa yang baru selalu muncul setiap saat, sehingga ini hanya merupakan contoh. Baca list Linux security dan list serta archive bugtraq untuk informasi terkini.

  • SYN Flooding – SYN flooding adalah serangan denial of service jaringan. Ia mengambil keuntungan dari “loophole” dalam koneksi TCP yang tercipta. Kernel Linux terbaru (2.0.30 ke atas) memiliki beberapa pilihan konfigurasi untuk mencegah serangan SYN flood dari menolak orang akses ke mesin atau pelayanan anda. Lihat bagian keamanan kernel untuk pilihan perlindungan kernel yang tepat.
  • Pentium “F00F” Bug – Ini baru ditemukan bahwa serangkaian kode assembly yang dikirim ke prosesor asli Intel Pentium akan mereboot mesin. Ini mempengaruhi setiap mesin dengan prosesor Pentium (bukan klon, atau Pentium Pro atau PII), tidak tergantung pada sistem operasi yang dijalankan. Kernel Linux 2.0.32 ke atas memiliki pemecahan atas bug ini, mencegahnya mengunci mesin anda. Kernel 2.0.33 memiliki versi perbaikan atas hal ini, dan disarankan daripada 2.0.32. Jika anda menggunakan Pentium, anda harus upgrade sekarang!
  • Ping Flooding – Ping flooding adalah serangan denial of service brute force sederhana. Penyerang mengirim “flood” paket ICMP ke mesin anda. Jika mereka melakukan ini dari host dengan bandwidth yang lebih baik daripada milik anda, mesin anda tidak akan mampu mengirim sesuatu ke jaringan. Variasi serangan ini, disebut “smurfing” mengirim paket ICMP ke host dengan IP kembalian mesin anda, memungkinkan mereka membanjiri anda dengan sedikit terdeteksi. Jika anda diserang ping flood, gunakan alat seperti tcpdump untuk menentukan asal paket (atau tampaknya berasal), kemudian hubungi provider anda dengan informasi ini. Ping flood dapat secara mudah dihentikan di level router atau dengan menggunakan firewall.
  • Ping o’ Death – Serangan Ping o’ Death disebabkan lebih besarnya paket ICMP ECHO REQUEST yang datang daripada yang dapat ditangani struktur data kernel . Oleh karena mengirim sebuah paket “ping” besar (65.510 byte) ke banyak sistem akan membuat mereka hang atau bahkan crash, masalah ini secara cepat disebut “Ping o’ Death”. Ini telah lama diperbaiki, dan tidak perlu dikhawatirkan lagi.
  • Teardrop / New Tear – Salah satu eksploit terbaru yang melibatkan bug yang ada di kode fragmentasi IP pada platform Linux dan Windows. Telah diperbaiki dalam kernel versi 2.0.33, dan tidak membutuhkan pilihan pada saat kompilasi untuk menggunakan perbaikan. Linux tampaknya tidak rentan terhadap eksploitasi “new tear”.

Anda dapat menemukan banyak kode eksploitasi, dan deskripsi lebih mendalam tentang bagaimana mereka bekerja di mesin pencari.

Keamanan NFS (Network File System)

NFS adalah protokol file sharing yang paling banyak digunakan. Ia memungkinkan server menjalankan nfsd dan mountd untuk mengekspor seluruh filesystem ke mesin lain dengan dukungan nfs filesystem pada kernelnya (atau beberapa dukungan client jika mereka bukan mesin Linux). Mountd mencatat filesystem yang termount di /etc/mtab, dan dapat menampilkannya.

Banyak site menggunakan NFS untuk bertugas sebagai direktori home untuk pemakai, sehingga tak peduli mesin apa yang dimasuki, mereka akan selalu memiliki file-filenya.

Terdapat sedikit “keamanan” dibolehkan dalam mengekspor filesystem. Anda dapat membuat peta nfsd pemakai root remote (uid=0) ke pemakai nobody, membatasi akses total ke file-file yang diekspor. Namun demikian, karena pemakai individu memiliki akses ke file-file mereka (atau paling tidak uid yang sama), superuser remote dapat login atau su ke rekening mereka dan memiliki akses total ke file-file mereka. Ini hanya penghalang kecil bagi seorang penyerang yang memiliki akses untuk melakukan mount filesystem remote anda.

Jika harus menggunakan NFS, pastikan anda mengekspor ke mesin-mesin yang anda butuh untuk ekspor saja. Jangan pernah mengekspor seluruh direktori root anda, ekspor hanya direktori yang perlu anda ekspor. Lihat NFS HOWTO untuk informasi lebih jauh tentang NFS.

NIS (Network Information Service)

Network Information Service (dahulu YP) adalah suatu cara mendistribusikan informasi ke sekelompok mesin. Master NIS menyimpan tabel informasi dan mengkonversinya ke file peta NIS. Peta ini kemudian melayani jaringan, memungkinkan mesin klien NIS untuk memperoleh login, password, direktori home dan informasi shell (seluruh informasi di file /etc/passwd standar). Hal ini memungkinkan pemakai merubah password mereka sekali dan berlaku pula di seluruh mesin dalam domain NIS.

NIS tidak seluruhnya aman. Ia tidak pernah dimaksudkan demikian. Ia dimaksudkan untuk berguna dan sederhana. Setiap orang dapat menduga nama domain NIS anda (di setiap tempat di Net) dapat memperoleh salinan file passwd, dan menggunakan Crack dan John the Ripper terhadap password pemakai anda. Juga, adalah mungkin untuk menipu NIS dan melakukan berbagai trik kotor. Jika anda harus menggunakan NIS, pastikan anda paham bahayanya.

FIREWALL

Firewall adalah suatu cara untuk membatasi informasi yang dibolehkan masuk dan keluar dari jaringan lokal anda. Umumnya host firewall terhubung ke Internet dan LAN lokal anda, dan akses LAN anda ke Internet hanya melalui firewall. Dengan demikian firewall dapat mengendalikan apa yang diterima dan dikirim dari Internet dan LAN anda.

Terdapat beberapa tipe dan metode setting firewall. Mesin-mesin Linux dapat menjadi firewall yang baik dan murah. Kode firewall dapat dibangun langsung ke dalam kernel 2.0 atau lebih tinggi. Alat ipfwadm user space memungkinkan anda merubah tipe lalu lintas jaringan yang anda bolehkan secara on the fly. Anda dapat pula mencatat tipe lalu lintas jaringan tertentu.

Firewall adalah teknik yang sangat berguna dan penting dalam mengamankan jaringan anda. Penting untuk menyadari bahwa anda tidak boleh pernah berpikir bahwa dengan memiliki firewall, anda tidak perlu mengamankan mesin-mesin di baliknya. Ini kesalahan fatal. Periksa Firewall-HOWTO yang sangat bagus di arsip terbaru sunsite untuk informasi mengenai firewall dan Linux.

KERNEL

Ini adalah deskripsi pilihan konfigurasi kernel yang terkait dengan keamanan, dan sebuah penjelasan apa yang dilakukannya, dan bagaimana menggunakan mereka.

Oleh karena kernel mengendalikan jaringan komputer anda, penting agar kernel sangat aman, dan kernel sendiri tidak akan diganggu. Untuk mencegah serangan jaringan terkini, anda harus berusaha dan memelihara versi kernel anda. Anda dapat menemukan kernel terbaru di http://www.kernel.org

Pilihan Kompilasi Kernel

IP: Drop source routed frames (CONFIG_IP_NOSR) Pilihan ini seharusnya diset. Source routed frame berisikan seluruh jalur ke tujuan. Artinya router yang dilalui paket tidak perlu memeriksa paket, dan hanya memforwardnya saja. Hal ini dapat mengakibatkan masuknya data ke sistem anda yang mungkin menjadi eksploitasi potensial.

IP: Firewalling (CONFIG_IP_FIREWALL) Pilihan ini perlu jika anda ingin mengkonfigurasi mesin anda sebagai firewall, melakukan masquerading, atau ingin melindungi stasiun kerja dial-up anda dari seseorang yang masuk melalui antar muka dial-up PPP anda.

IP: forwarding/gatewaying (CONFIG_IP_FORWARD) Jika anda menset IP forwarding, mesin Linux anda maka menjadi router. Jika mesin anda ada pada jaringan, anda harus memforward data dari satu jaringan ke yang lain, dan mungkin membalik firewall yang ada di sana untuk mencegah hal ini terjadi. Pemakai dial-up normal mungkin ingin meniadakannya, dan pemakai lain harus berkonsentrasi pada implikasi keamanan melakukan hal ini. Mesin-mesin firewall akan mengadakannya, dan digunakan bersamaan dengan software firewall. Anda dapat mengadakan IP forwarding secara dinamik menggunakan perintah berikut :

root# echo 1 > /proc/sys/net/ipv4/ip_forward

dan meniadakannya dengan perintah :

root# echo 0 > /proc/sys/net/ipv4/ip_forward

File ini (dan banyak file lain di /proc) akan selalu tampak berukuran nol, tetapi kenyataannya tidak. Ini adalah feature kernel yang baru diperkenalkan, sehingga pastikan anda menggunakan kernel 2.0.33 atau lebih baru.

IP: firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE) Pilihan ini memberi anda informasi tentang paket yang diterima firewall anda, seperti pengirim, penerima, port, dsb.

IP: always defragment (CONFIG_IP_ALWAYS_DEFRAG) Umumnya pilihan ini ditiadakan, tetapi jika anda membangun host firewall atau masquerading, anda mungkin ingin mengadakannya. Ketika data dikirim dari satu host ke yang lain, ia tidak selalu dikirim sebagai satu paket data, tetapi dipecah-pecah ke beberapa bagian. Masalah dengan hal ini adalah nomor port selalu disimpan dalam bagian pertama. Artinya seseorang dapat memasukkan informasi ke paket-paket sisanya yang tidak seharusnya ada.

IP: syn cookies (CONFIG_SYN_COOKIES) SYN Attack adalah serangan denial of service (DoS) yang menghabiskan seluruh sumber daya mesin anda, memaksa anda untuk reboot. Kami tidak dapat memikirkan alasan anda meniadakan pilihan ini.

Packet Signatures (CONFIG_NCPFS_PACKET_SIGNING) Ini adalah pilihan yang tersedia pada seri kernel 2.1 yang akan menandai paket NCP untuk keamanan yang lebih kuat. Secara normal anda dapat membiarkannya tidak ada, tetapi ia ada jika anda membutuhkannya.

IP: Firewall packet netlink device (CONFIG_IP_FIREWALL_NETLINK) Ini adalah pilihan yang baik yang memungkinkan anda menganalisa 128 byte pertama paket dalam program userspace, untuk menentukan bilamana anda ingin menerima atau menolak paket, berdasarkan validitasnya.

Device Kernel

Terdapat sejumlah device blok dan karakter untuk Linux yang dapat membantu anda dengan keamanan.

Dua device /dev/random dan /dev/urandom disediakan oleh kernel untuk menerima data random setiap saat.

/dev/random dan /dev/urandom keduanya cukup aman digunakan dalam menghasilkan kunci PGP, tantangan SSH, dan aplikasi lain di mana bilangan random yang aman dibutuhkan. Penyerang seharusnya tidak dapat memperkirakan nomor berikutnya bila diberi urutan awal nomor-nomor dari sumber ini. Telah ada banyak usaha untuk memastikan bahwa nomor yang anda peroleh dari sumber ini adalah random dalam setiap arti kata random.

Perbedaannya adalah bahwa /dev/random menghasilkan byte random dan membuat anda menunggu lebih banyak untuk dikumpulkan. Perhatikan bahwa pada beberapa sistem, ia dapat memblok untuk waktu lama menunggu masukan baru pemakai untuk diberi ke sistem. Sehingga anda perlu berhati-hati sebelum menggunakan /dev/random. (Mungkin hal terbaik yang dapat dilakukan adalah menggunakan ketika anda menciptakan informasi sensitif, dan anda mengatakan kepada pemakai untuk menekan keyboard secara berulang-ulang hingga anda mencetak “OK, enough”).

/dev/random adalah entropi kualitas tinggi, dihasilkan dari pengukuran waktu inter-interrupt dsb. Ia memblok hingga cukup data random bit tersedia.

/dev/urandom adalah serupa, kecuali ketika penyimpanan entropi berjalan rendah ia akan mengembalikan hash kuat secara kriptografi. Ini tidak aman, tetapi cukup bagi kebanyakan aplikasi.

Anda mungkin membaca dari device menggunakan sesuatu seperti:

root# head -c 6 /dev/urandom | uuencode –

Ini akan mencetak enam karakter random di layar, sesuai untuk pembuatan password. Lihat /usr/src/linux/drivers/char/random.c untuk deskripsi algoritma.

Sumber: Internet-primadonal.com

http://nobodyperfect.wordpress.com/2007/05/11/hello-world/

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s