Gagal memblokir brute force ssh dengan iptables


9

Saya mencoba untuk memblokir (memperlambat) serangan brute force di server sshd saya. Saya mengikuti panduan ini http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/ yang pada dasarnya mengatakan saya harus memasukkan 2 perintah di bawah ini.

sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j DROP

Port sshd saya adalah 6622, jadi saya mengubah entri dari "22" menjadi "6622", dan memasukkan perintah-perintah itu. Kemudian saya mencoba untuk hanya menguji iptables yang baru. Saya pergi ke komputer lain dan sengaja memasukkan kata sandi login yang salah beberapa kali. Sayangnya, peraturan baru itu tampaknya tidak menghentikan saya untuk berusaha sebanyak yang saya inginkan. Di bawah ini tercantum aturan saya saat ini. Apa yang saya lakukan salah?

# iptables --list

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
           tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: SET name: DEFAULT side: source

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain LOGDROP (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning
DROP       all  --  anywhere             anywhere            

4
Saya merekomendasikan fail2ban untuk menangani pemblokiran IP yang menunjukkan upaya brute force. Sangat mudah untuk menginstal dan mengkonfigurasi. Saya tahu itu tidak menjawab pertanyaan Anda secara langsung, tetapi mungkin menghemat beberapa lubang di drywall.
Banjer

1
Setuju dengan @Banjer - lupakan tautan rackaid itu, atur fail2ban.
Shadur

Adakah kesempatan tweaker MaxStartupsdapat membantu di sisi daemon?
peterph

2
@peterph Hanya jika Anda ingin mengubah upaya breakin brute force menjadi penolakan layanan.
Shadur

Mengapa mengekspos server ssh ke Internet, dan kemudian mencoba meminimalkan konsekuensinya? Baik di kantor atau di rumah, saya masuk melalui VPN ipsec, tidak ada ssh terbuka untuk internet sama sekali.
Rui F Ribeiro

Jawaban:


5

Seperti @banjer tunjukkan dalam komentarnya, Anda mencoba solusi yang salah untuk masalah Anda yang sebenarnya.

Yang perlu Anda lakukan adalah mengatur fail2ban . Ia menggunakan iptables di latar belakang untuk secara otomatis memblokir upaya koneksi dari host yang menghasilkan upaya akses yang gagal dari berbagai sumber. Ini sangat serbaguna dan memungkinkan Anda menambah dan memodifikasi berbagai treshold, pola untuk mencari dan melarang metode; Anda harus mengubah sedikit ssh jail default-nya untuk memperhitungkan port tidak standar yang Anda gunakan, tetapi itu seharusnya tidak sulit.


1

Saya menggunakan aturan seperti ini untuk memperlambat:

iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] "
iptables -A DDoS -j DROP

Di tempat lain saya membatasi hal-hal seperti ini:

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP

0

Apakah Anda membaca halaman manual?

man sshd_config:

 MaxAuthTries
         Specifies the maximum number of authentication attempts 
         permitted per connection.  Once the number of failures 
         reaches half this value, additional failures are logged. 
         The default is 6.
 MaxSessions
         Specifies the maximum number of open sessions permitted 
         per network connection.  The default is 10.
 MaxStartups
         Specifies the maximum number of concurrent unauthenticated
         connections to the SSH daemon.  Additional connections
         will be dropped until authentication succeeds or 
         the LoginGraceTime expires for a connection. The default is 10:30:100.

         Alternatively, random early drop can be enabled by specifying
         the three colon separated values “start:rate:full” (e.g.
         "10:30:60").  sshd(8) will refuse connection attempts with a
         probability of “rate/100” (30%) if there are currently “start”
         (10) unauthenticated connections.  The probability increases
         linearly and all connection attempts are refused if the 
         number of unauthenticated connections reaches “full” (60).

3
Tidak membantu Serangan bruteforce SSH cenderung digunakan oleh jaringan bot terdistribusi saat ini, sehingga setiap koneksi hanya akan membuat tiga atau empat upaya, tetapi Anda akan memiliki ratusan koneksi dari host yang berbeda.
Shadur

0

Saya baru saja mencoba solusi dua aturan dan saya memiliki masalah yang sama ketika saya memeriksanya. Kemudian, saya berkomentar bahwa aturan yang diterbitkan memiliki -i eth0opsi! Saya mengubahnya ke antarmuka jaringan yang baik dan akhirnya mulai berfungsi.


0

Sebagian besar tutorial digunakan -Auntuk menambahkan akhir aturan. OP digunakan -Iuntuk memasukkan tetapi tanpa indeks, sehingga aturan berakhir dengan urutan yang salah.

Alat yang berharga untuk men-debug aturan iptables adalah iptables -vLyang mencantumkan aturan dengan jumlah berapa kali setiap aturan telah diterapkan. Ketika Anda mendapatkan hitungan 0 yang tidak terduga, ini dapat membantu Anda melihat apa yang salah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.