Peringatan MySQL "Alamat IP tidak dapat diselesaikan"

36

Saya punya setup MySQL Master / Slave dan saya perhatikan peringatan berikut di file log mysql di kedua server:

[Warning] IP address 'xxx.xxx.xxx.xxx' could not be resolved: Name or service not known

Saya telah memeriksa dan pencarian DNS berfungsi dengan baik dan sebagian besar IP ini berasal dari Cina.

Saya berencana untuk membatasi akses pada port 3306 pada firewall tetapi tolong bantu saya untuk memahami apa yang mereka coba lakukan. Apakah mereka hanya mencoba terhubung ke server MySQL. Di mana saya dapat mencari detail lebih lanjut.

Terima kasih

HTF
sumber

Jawaban:

48

Ketika Anda membuat pengguna [email protected]MySQL, MySQL harus melakukan pencarian terbalik pada setiap alamat IP yang menghubungkannya untuk menentukan apakah mereka bagian dari example.com.

Tentu saja, tidak ada batasan untuk membuat lookup terbalik, jadi saya bisa dengan senang hati meminta penyedia saya untuk mengatur lookup terbalik untuk alamat IP saya google.comjika saya mau ... atau example.comjika saya kebetulan tahu itulah yang dimiliki oleh pengguna dalam database Anda. . Ini tidak akan membiarkan saya masuk, karena MySQL kemudian melakukan pencarian maju pada domain yang dikembalikan untuk memastikan itu cocok dengan alamat IP yang sama yang menghubungkan.

Anda dapat mematikan ini dengan skip_name_resolvedi my.cnf. Ada banyak alasan bagus untuk melakukan ini .

Alasan Anda mendapatkan kesalahan ini adalah bahwa alamat IP yang dimaksud tidak memiliki pencarian terbalik sama sekali.

Anda juga memiliki penyerang jahat dari Tiongkok yang mencoba memaksa masuk ke database Anda. Itu harus menjadi prioritas utama Anda.

Ladadadada
sumber
1
dapatkah ada masalah untuk localhost ?
Bahasa Melayu M
Saya tidak berpikir ada lubang keamanan di sana karena jika pencarian balik untuk beberapa alamat IP diselesaikan localhost, MySQL masih akan melakukan pencarian maju localhostuntuk memastikan itu cocok dengan alamat IP asli. Namun, seperti semua hal terkait keamanan, jangan hanya percaya padaku tentang ini. Dan masih lebih baik untuk mematikan penyelesaian nama di konfigurasi Anda.
Ladadadada
13

Saya pikir itu ide yang sangat sangat buruk untuk mengekspos server database Anda secara langsung di internet.

Jika Anda mereplikasi ke host jarak jauh dan memerlukan akses internet untuk mencapainya, saya sarankan Anda mengatur VPN antara dua jaringan dan ikat server MySQL Anda untuk hanya mendengarkan jaringan lokal.

Jika kedua host Anda berada di jaringan lokal yang sama, Anda akan aman untuk mengikat server mysql Anda ke jaringan itu.

m0ntassar
sumber
1

Baru saja tertangkap oleh ini juga di Amazon RDS. Saya hanya ingin terhubung ke instance database pengujian saya (berikut ini jelas tidak direkomendasikan untuk database produksi):

Grup keamanan di Amazon RDS bekerja sedikit berbeda dari aturan firewall normal untuk instance EC2. Jika Anda membuka port MySQL untuk IP spesifik, IP harus dikenali oleh server MySQL Anda. Jika tidak, koneksi ditolak. Solusi sementara adalah membuat grup keamanan baru yaitu anyone_can_connect_to_mysqlhanya dengan satu item - izinkan koneksi inbound MySQL / Aurora di mana saja dari internet dan lampirkan grup keamanan ini ke database Anda.

Inbound
-----------------------------------------
| MYSQL/Aurora | TCP | 3306 | 0.0.0.0/0 |
-----------------------------------------

Ini menghapus pemeriksaan IP dari koneksi klien sehingga Anda bebas untuk terhubung. Jangan lupa untuk melepaskan anyone_can_connect_to_mysqlkebijakan dari database setelah masalah resolusi selesai.

musketyr
sumber
0

Saat menghubungkan ke Mysql dari jarak jauh, saya mendapat kesalahan. Saya memiliki peringatan ini di /var/log/mysqld.log:

[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution

Saya baru saja menambahkan baris ini ke /etc/hostsfile:

X.X.X.X some_name

Masalah terpecahkan! tanpa menggunakan skip-name-resolve, itu menyebabkan beberapa kesalahan di aplikasi lokal saya, saat menghubungkan ke mysql.

Amin Sh
sumber
Lebih dari setahun yang lalu, tetapi apakah Anda harus me-restart mysql? Ini tidak berhasil untuk saya.
Ejoso
Anda tidak akan melakukannya karena file host dikelola pada klien bukan server mysql.
leeman24